Author: michael
Date: Mon May 21 03:17:33 2012
New Revision: 1340886

URL: http://svn.apache.org/viewvc?rev=1340886&view=rev
Log:
Patch Submitted by: Vicente J. Ruiz Jurado

Code Review:  https://reviews.apache.org/r/5048/

Added:
    
incubator/wave/trunk/src/org/waveprotocol/wave/client/wavepanel/impl/toolbar/LinkerHelper.java
Modified:
    
incubator/wave/trunk/src/org/waveprotocol/wave/client/common/util/EventWrapper.java
    
incubator/wave/trunk/src/org/waveprotocol/wave/client/common/util/KeyCombo.java
    
incubator/wave/trunk/src/org/waveprotocol/wave/client/wavepanel/impl/edit/EditSession.java
    
incubator/wave/trunk/src/org/waveprotocol/wave/client/wavepanel/impl/toolbar/EditToolbar.java

Modified: 
incubator/wave/trunk/src/org/waveprotocol/wave/client/common/util/EventWrapper.java
URL: 
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/wave/client/common/util/EventWrapper.java?rev=1340886&r1=1340885&r2=1340886&view=diff
==============================================================================
--- 
incubator/wave/trunk/src/org/waveprotocol/wave/client/common/util/EventWrapper.java
 (original)
+++ 
incubator/wave/trunk/src/org/waveprotocol/wave/client/common/util/EventWrapper.java
 Mon May 21 03:17:33 2012
@@ -172,6 +172,7 @@ public class EventWrapper {
         put('Q' + orderKey, KeyCombo.ORDER_Q);
         put('R' + orderKey + SHIFT, KeyCombo.ORDER_SHIFT_R);
         put('V' + orderKey + SHIFT, KeyCombo.ORDER_SHIFT_V);
+        put('K' + orderKey + SHIFT, KeyCombo.ORDER_SHIFT_K);
 
         // Plaintext paste in Safari
         put('V' | orderKey | ALT | SHIFT, KeyCombo.ORDER_ALT_SHIFT_V);

Modified: 
incubator/wave/trunk/src/org/waveprotocol/wave/client/common/util/KeyCombo.java
URL: 
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/wave/client/common/util/KeyCombo.java?rev=1340886&r1=1340885&r2=1340886&view=diff
==============================================================================
--- 
incubator/wave/trunk/src/org/waveprotocol/wave/client/common/util/KeyCombo.java 
(original)
+++ 
incubator/wave/trunk/src/org/waveprotocol/wave/client/common/util/KeyCombo.java 
Mon May 21 03:17:33 2012
@@ -226,6 +226,9 @@ public enum KeyCombo {
   /***/
   ORDER_K,
 
+  /***/
+  ORDER_SHIFT_K,
+
   /** Formatting combos */
   ORDER_B,
 

Modified: 
incubator/wave/trunk/src/org/waveprotocol/wave/client/wavepanel/impl/edit/EditSession.java
URL: 
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/wave/client/wavepanel/impl/edit/EditSession.java?rev=1340886&r1=1340885&r2=1340886&view=diff
==============================================================================
--- 
incubator/wave/trunk/src/org/waveprotocol/wave/client/wavepanel/impl/edit/EditSession.java
 (original)
+++ 
incubator/wave/trunk/src/org/waveprotocol/wave/client/wavepanel/impl/edit/EditSession.java
 Mon May 21 03:17:33 2012
@@ -17,6 +17,7 @@
 package org.waveprotocol.wave.client.wavepanel.impl.edit;
 
 import com.google.common.base.Preconditions;
+import com.google.gwt.user.client.Window;
 import com.google.gwt.user.client.ui.Widget;
 
 import org.waveprotocol.wave.client.common.util.EventWrapper;
@@ -27,6 +28,8 @@ import org.waveprotocol.wave.client.comm
 import org.waveprotocol.wave.client.debug.logger.LogLevel;
 import org.waveprotocol.wave.client.doodad.selection.SelectionExtractor;
 import org.waveprotocol.wave.client.editor.Editor;
+import org.waveprotocol.wave.client.editor.EditorAction;
+import org.waveprotocol.wave.client.editor.EditorContext;
 import org.waveprotocol.wave.client.editor.EditorSettings;
 import org.waveprotocol.wave.client.editor.Editors;
 import org.waveprotocol.wave.client.editor.content.ContentDocument;
@@ -37,6 +40,7 @@ import org.waveprotocol.wave.client.wave
 import org.waveprotocol.wave.client.wavepanel.WavePanel;
 import org.waveprotocol.wave.client.wavepanel.impl.WavePanelImpl;
 import org.waveprotocol.wave.client.wavepanel.impl.focus.FocusFramePresenter;
+import org.waveprotocol.wave.client.wavepanel.impl.toolbar.LinkerHelper;
 import org.waveprotocol.wave.client.wavepanel.view.BlipView;
 import 
org.waveprotocol.wave.client.wavepanel.view.IntrinsicBlipMetaView.MenuOption;
 import org.waveprotocol.wave.client.wavepanel.view.dom.ModelAsViewProvider;
@@ -153,6 +157,18 @@ public final class EditSession
     container.doAdopt(editor.getWidget());
     editor.init(null, KEY_BINDINGS, EDITOR_SETTINGS);
     editor.addKeySignalListener(this);
+    KEY_BINDINGS.registerAction(KeyCombo.ORDER_K, new EditorAction() {
+      @Override
+      public void execute(EditorContext context) {
+        LinkerHelper.onCreateLink(context);
+      }
+    });
+    KEY_BINDINGS.registerAction(KeyCombo.ORDER_SHIFT_K, new EditorAction() {
+      @Override
+      public void execute(EditorContext context) {
+        LinkerHelper.onClearLink(context);
+      }
+    });
     editor.setEditing(true);
     editor.focus(false);
     editing = blipUi;

Modified: 
incubator/wave/trunk/src/org/waveprotocol/wave/client/wavepanel/impl/toolbar/EditToolbar.java
URL: 
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/wave/client/wavepanel/impl/toolbar/EditToolbar.java?rev=1340886&r1=1340885&r2=1340886&view=diff
==============================================================================
--- 
incubator/wave/trunk/src/org/waveprotocol/wave/client/wavepanel/impl/toolbar/EditToolbar.java
 (original)
+++ 
incubator/wave/trunk/src/org/waveprotocol/wave/client/wavepanel/impl/toolbar/EditToolbar.java
 Mon May 21 03:17:33 2012
@@ -23,11 +23,8 @@ import com.google.gwt.dom.client.Documen
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.Style.Unit;
 import com.google.gwt.http.client.URL;
-import com.google.gwt.user.client.Window;
 
-import org.waveprotocol.wave.client.common.util.WaveRefConstants;
 import org.waveprotocol.wave.client.doodad.link.Link;
-import org.waveprotocol.wave.client.doodad.link.Link.InvalidLinkException;
 import org.waveprotocol.wave.client.editor.Editor;
 import org.waveprotocol.wave.client.editor.EditorContext;
 import org.waveprotocol.wave.client.editor.EditorContextAdapter;
@@ -58,11 +55,9 @@ import org.waveprotocol.wave.client.widg
 import org.waveprotocol.wave.client.widget.toolbar.buttons.ToolbarToggleButton;
 import org.waveprotocol.wave.media.model.AttachmentIdGenerator;
 import org.waveprotocol.wave.media.model.AttachmentIdGeneratorImpl;
-import org.waveprotocol.wave.model.document.util.DocHelper;
 import org.waveprotocol.wave.model.document.util.FocusedRange;
 import org.waveprotocol.wave.model.document.util.LineContainers;
 import org.waveprotocol.wave.model.document.util.Point;
-import org.waveprotocol.wave.model.document.util.Range;
 import org.waveprotocol.wave.model.document.util.XmlStringBuilder;
 import org.waveprotocol.wave.model.id.IdGenerator;
 import org.waveprotocol.wave.model.id.WaveId;
@@ -424,33 +419,7 @@ public class EditToolbar {
         .setIcon(css.insertLink())
         .applyTo(toolbar.addClickButton(), new ToolbarClickButton.Listener() {
               @Override  public void onClicked() {
-                FocusedRange range = 
editor.getSelectionHelper().getSelectionRange();
-                if (range == null || range.isCollapsed()) {
-                  Window.alert("Select some text to create a link.");
-                  return;
-                }
-                try {
-                  // We try to create a link with the current selection, if 
fails, we ask for a link
-                  Range rg = range.asRange();
-                  String text = DocHelper.getText(editor.getDocument(), 
rg.getStart(), rg.getEnd());
-                  String linkAnnotationValue = Link.normalizeLink(text);
-                  EditorAnnotationUtil.setAnnotationOverSelection(editor, 
Link.KEY,
-                      linkAnnotationValue);
-                } catch (InvalidLinkException e) {
-                  String rawLinkValue =
-                      Window.prompt("Enter link: URL or Wave ID.", 
WaveRefConstants.WAVE_URI_PREFIX);
-                  // user hit "ESC" or "cancel"
-                  if (rawLinkValue == null) {
-                    return;
-                  }
-                  try {
-                    String linkAnnotationValue = 
Link.normalizeLink(rawLinkValue);
-                    EditorAnnotationUtil.setAnnotationOverSelection(editor, 
Link.KEY,
-                        linkAnnotationValue);
-                  } catch (InvalidLinkException e2) {
-                    Window.alert(e2.getLocalizedMessage());
-                  }
-                }
+                LinkerHelper.onCreateLink(editor);
               }
             });
   }
@@ -460,9 +429,7 @@ public class EditToolbar {
         .setIcon(css.removeLink())
         .applyTo(toolbar.addClickButton(), new ToolbarClickButton.Listener() {
           @Override public void onClicked() {
-            if (editor.getSelectionHelper().getSelectionRange() != null) {
-              EditorAnnotationUtil.clearAnnotationsOverSelection(editor, 
Link.LINK_KEYS);
-            }
+            LinkerHelper.onClearLink(editor);
           }
         });
   }

Added: 
incubator/wave/trunk/src/org/waveprotocol/wave/client/wavepanel/impl/toolbar/LinkerHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/wave/client/wavepanel/impl/toolbar/LinkerHelper.java?rev=1340886&view=auto
==============================================================================
--- 
incubator/wave/trunk/src/org/waveprotocol/wave/client/wavepanel/impl/toolbar/LinkerHelper.java
 (added)
+++ 
incubator/wave/trunk/src/org/waveprotocol/wave/client/wavepanel/impl/toolbar/LinkerHelper.java
 Mon May 21 03:17:33 2012
@@ -0,0 +1,83 @@
+/**
+ * Copyright 2012 Apache Wave
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.waveprotocol.wave.client.wavepanel.impl.toolbar;
+
+import com.google.gwt.user.client.Window;
+
+import org.waveprotocol.wave.client.common.util.WaveRefConstants;
+import org.waveprotocol.wave.client.doodad.link.Link;
+import org.waveprotocol.wave.client.doodad.link.Link.InvalidLinkException;
+import org.waveprotocol.wave.client.editor.EditorContext;
+import org.waveprotocol.wave.client.editor.util.EditorAnnotationUtil;
+import org.waveprotocol.wave.model.document.util.DocHelper;
+import org.waveprotocol.wave.model.document.util.FocusedRange;
+import org.waveprotocol.wave.model.document.util.Range;
+
+/**
+ * The Class LinkerHelper is a utility for manage (create, remove, etc) links
+ * while editing a document via the toolbar or via shortcuts
+ */
+public class LinkerHelper {
+
+  /**
+   * Helper for insert links while editing a document
+   *
+   * @param editor the wave editor
+   */
+  public static void onCreateLink(EditorContext editor) {
+    FocusedRange range = editor.getSelectionHelper().getSelectionRange();
+    if (range == null || range.isCollapsed()) {
+      Window.alert("Select some text to create a link.");
+      return;
+    }
+    try {
+      // We try to create a link with the current selection, if fails, we ask
+      // for a link
+      Range rg = range.asRange();
+      String text = DocHelper.getText(editor.getDocument(), rg.getStart(), 
rg.getEnd());
+      String linkAnnotationValue = Link.normalizeLink(text);
+      EditorAnnotationUtil.setAnnotationOverSelection(editor, Link.KEY, 
linkAnnotationValue);
+    } catch (InvalidLinkException e) {
+      String rawLinkValue =
+          Window.prompt("Enter link: URL or Wave ID.", 
WaveRefConstants.WAVE_URI_PREFIX);
+      // user hit "ESC" or "cancel"
+      if (rawLinkValue == null) {
+        return;
+      }
+      try {
+        String linkAnnotationValue = Link.normalizeLink(rawLinkValue);
+        EditorAnnotationUtil.setAnnotationOverSelection(editor, Link.KEY, 
linkAnnotationValue);
+      } catch (InvalidLinkException e2) {
+        Window.alert(e2.getLocalizedMessage());
+      }
+
+    }
+
+  }
+
+  /**
+   * Helper for remove links while editing a document
+   *
+   * @param editor the wave editor
+   */
+  public static void onClearLink(EditorContext editor) {
+    if (editor.getSelectionHelper().getSelectionRange() != null) {
+      EditorAnnotationUtil.clearAnnotationsOverSelection(editor, 
Link.LINK_KEYS);
+    }
+  }
+}


Reply via email to