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); + } + } +}
