diff --git a/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/InlineTargetCellEditor.java b/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/InlineTargetCellEditor.java index a237f7cce0..2db19de940 100644 --- a/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/InlineTargetCellEditor.java +++ b/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/InlineTargetCellEditor.java @@ -529,6 +529,17 @@ public void setText(String text) } } + public void insertTextInCursorPosition(String text) + { + if (isEditing()) + { + String preCursor = textArea.getText().substring(0, textArea.getCursorPos()); + String postCursor = textArea.getText().substring(textArea.getCursorPos(), textArea.getText().length()); + + textArea.setText(preCursor + text + postCursor); + } + } + @Override public void editCell(CellEditInfo cellEditInfo, TransUnit cellValue, Callback callback) { diff --git a/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/TableEditorPresenter.java b/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/TableEditorPresenter.java index 9dd0519790..00aa4e7c9c 100644 --- a/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/TableEditorPresenter.java +++ b/server/zanata-war/src/main/java/org/zanata/webtrans/client/editor/table/TableEditorPresenter.java @@ -43,6 +43,8 @@ import org.zanata.webtrans.client.events.FilterViewEventHandler; import org.zanata.webtrans.client.events.FindMessageEvent; import org.zanata.webtrans.client.events.FindMessageHandler; +import org.zanata.webtrans.client.events.InsertStringInEditorEvent; +import org.zanata.webtrans.client.events.InsertStringInEditorHandler; import org.zanata.webtrans.client.events.NavTransUnitEvent; import org.zanata.webtrans.client.events.NavTransUnitEvent.NavigationType; import org.zanata.webtrans.client.events.NavTransUnitHandler; @@ -581,6 +583,36 @@ public void onTransMemoryCopy(CopyDataToEditorEvent event) } } })); + + registerHandler(eventBus.addHandler(InsertStringInEditorEvent.getType(), new InsertStringInEditorHandler() + { + @Override + public void onInsertString(InsertStringInEditorEvent event) + { + if (selectedTransUnit == null) + { + eventBus.fireEvent(new NotificationEvent(Severity.Error, messages.noTextFlowToCopy())); + } + else + { + if (!display.getTargetCellEditor().isEditing()) + { + gotoCurrentRow(); + } + if (display.getTargetCellEditor().isEditing()) + { + display.getTargetCellEditor().insertTextInCursorPosition(event.getSuggestion()); + display.getTargetCellEditor().autoSize(); + eventBus.fireEvent(new NotificationEvent(Severity.Info, messages.notifyCopied())); + } + else + { + // Error if failed to open editor + eventBus.fireEvent(new NotificationEvent(Severity.Error, messages.notifyUnopened())); + } + } + } + })); registerHandler(eventBus.addHandler(CopySourceEvent.getType(), new CopySourceEventHandler() { diff --git a/server/zanata-war/src/main/java/org/zanata/webtrans/client/events/InsertStringInEditorEvent.java b/server/zanata-war/src/main/java/org/zanata/webtrans/client/events/InsertStringInEditorEvent.java new file mode 100644 index 0000000000..668e3cd0d2 --- /dev/null +++ b/server/zanata-war/src/main/java/org/zanata/webtrans/client/events/InsertStringInEditorEvent.java @@ -0,0 +1,56 @@ +package org.zanata.webtrans.client.events; + +import com.google.gwt.event.shared.GwtEvent; + +public class InsertStringInEditorEvent extends GwtEvent +{ + + /** + * Handler type. + */ + private static Type TYPE; + + /** + * Gets the type associated with this event. + * + * @return returns the handler type + */ + public static Type getType() + { + return TYPE != null ? TYPE : (TYPE = new Type()); + } + + private String valueToReplace, suggestion; + + /** + * @param sourceResult + * @param targetResult + */ + public InsertStringInEditorEvent(String valueToReplace, String suggestion) + { + this.valueToReplace = valueToReplace; + this.suggestion = suggestion; + } + + @Override + protected void dispatch(InsertStringInEditorHandler handler) + { + handler.onInsertString(this); + } + + @Override + public GwtEvent.Type getAssociatedType() + { + return getType(); + } + + public String getValueToReplace() + { + return valueToReplace; + } + + public String getSuggestion() + { + return suggestion; + } +} \ No newline at end of file diff --git a/server/zanata-war/src/main/java/org/zanata/webtrans/client/events/InsertStringInEditorHandler.java b/server/zanata-war/src/main/java/org/zanata/webtrans/client/events/InsertStringInEditorHandler.java new file mode 100644 index 0000000000..0fd5132050 --- /dev/null +++ b/server/zanata-war/src/main/java/org/zanata/webtrans/client/events/InsertStringInEditorHandler.java @@ -0,0 +1,8 @@ +package org.zanata.webtrans.client.events; + +import com.google.gwt.event.shared.EventHandler; + +public interface InsertStringInEditorHandler extends EventHandler +{ + void onInsertString(InsertStringInEditorEvent event); +} \ No newline at end of file diff --git a/server/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/GlossaryPresenter.java b/server/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/GlossaryPresenter.java index b7e6322155..482553f6e6 100644 --- a/server/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/GlossaryPresenter.java +++ b/server/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/GlossaryPresenter.java @@ -26,7 +26,7 @@ import net.customware.gwt.presenter.client.widget.WidgetDisplay; import net.customware.gwt.presenter.client.widget.WidgetPresenter; -import org.zanata.webtrans.client.events.CopyDataToEditorEvent; +import org.zanata.webtrans.client.events.InsertStringInEditorEvent; import org.zanata.webtrans.client.events.TransUnitSelectionEvent; import org.zanata.webtrans.client.events.TransUnitSelectionHandler; import org.zanata.webtrans.client.rpc.CachingDispatchAsync; @@ -116,7 +116,7 @@ public void onTransUnitSelected(TransUnitSelectionEvent event) @Override public void update(int index, TranslationMemoryGlossaryItem object, String value) { - eventBus.fireEvent(new CopyDataToEditorEvent(object.getSource(), object.getTarget())); + eventBus.fireEvent(new InsertStringInEditorEvent(object.getSource(), object.getTarget())); } }); } diff --git a/server/zanata-war/src/main/java/org/zanata/webtrans/client/resources/UiMessages.java b/server/zanata-war/src/main/java/org/zanata/webtrans/client/resources/UiMessages.java index 079ee863dc..0db43a9706 100644 --- a/server/zanata-war/src/main/java/org/zanata/webtrans/client/resources/UiMessages.java +++ b/server/zanata-war/src/main/java/org/zanata/webtrans/client/resources/UiMessages.java @@ -48,6 +48,12 @@ public interface UiMessages extends Messages @DefaultMessage("Target") String targetLabel(); + + @DefaultMessage("Term") + String termLabel(); + + @DefaultMessage("Suggestion") + String suggestionLabel(); @DefaultMessage("Copy \"{0}\" to the editor") String copyLinkTooltip(String targetMessage); diff --git a/server/zanata-war/src/main/java/org/zanata/webtrans/client/view/GlossaryView.java b/server/zanata-war/src/main/java/org/zanata/webtrans/client/view/GlossaryView.java index 50856b4728..50bca2c386 100644 --- a/server/zanata-war/src/main/java/org/zanata/webtrans/client/view/GlossaryView.java +++ b/server/zanata-war/src/main/java/org/zanata/webtrans/client/view/GlossaryView.java @@ -156,8 +156,8 @@ public void renderTable() glossaryTable = new CellTable(); glossaryTable.addStyleName("glossaryTable"); glossaryTable.addStyleName("southTable"); - glossaryTable.addColumn(sourceColumn, messages.sourceLabel()); - glossaryTable.addColumn(targetColumn, messages.targetLabel()); + glossaryTable.addColumn(sourceColumn, messages.termLabel()); + glossaryTable.addColumn(targetColumn, messages.suggestionLabel()); glossaryTable.addColumn(new SimilarityColumn(), messages.similarityLabel()); glossaryTable.addColumn(copyColumn);