diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/keys/ShortcutContext.java b/zanata-war/src/main/java/org/zanata/webtrans/client/keys/ShortcutContext.java index 6c7b00809c..d2a0e8ec49 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/keys/ShortcutContext.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/keys/ShortcutContext.java @@ -69,8 +69,13 @@ public enum ShortcutContext Chat, /** - * Used by all popup + * Used by {@link org.zanata.webtrans.client.presenter.TranslationHistoryPresenter} */ - Popup + TransHistoryPopup, + + /** + * Used by {@link org.zanata.webtrans.client.presenter.ForceReviewCommentPresenter} + */ + RejectConfirmationPopup } \ No newline at end of file diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/ForceReviewCommentPresenter.java b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/ForceReviewCommentPresenter.java index d06e7156eb..42d434fe10 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/ForceReviewCommentPresenter.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/ForceReviewCommentPresenter.java @@ -59,8 +59,7 @@ public class ForceReviewCommentPresenter extends WidgetPresenter getActiveContexts() { - return ImmutableSet.copyOf(activeContexts); + return ImmutableSet.copyOf(ensureActiveContexts()); } private class KeyShortcutHandlerRegistration implements HandlerRegistration diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TranslationHistoryPresenter.java b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TranslationHistoryPresenter.java index ec8b773d3f..903b4f1b57 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TranslationHistoryPresenter.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TranslationHistoryPresenter.java @@ -5,9 +5,13 @@ import java.util.List; import org.zanata.webtrans.client.events.CopyDataToEditorEvent; +import org.zanata.webtrans.client.events.KeyShortcutEvent; +import org.zanata.webtrans.client.events.KeyShortcutEventHandler; import org.zanata.webtrans.client.events.NotificationEvent; import org.zanata.webtrans.client.events.ReviewCommentEvent; import org.zanata.webtrans.client.events.ReviewCommentEventHandler; +import org.zanata.webtrans.client.keys.KeyShortcut; +import org.zanata.webtrans.client.keys.Keys; import org.zanata.webtrans.client.keys.ShortcutContext; import org.zanata.webtrans.client.resources.WebTransMessages; import org.zanata.webtrans.client.rpc.AbstractAsyncCallback; @@ -25,6 +29,7 @@ import com.allen_sauer.gwt.log.client.Log; import com.google.common.base.Objects; import com.google.common.collect.Lists; +import com.google.gwt.event.dom.client.KeyCodes; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.inject.Inject; import com.google.inject.Singleton; @@ -44,12 +49,13 @@ public class TranslationHistoryPresenter extends WidgetPresenter
- +
diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ShortcutContextAwareDialogBox.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ShortcutContextAwareDialogBox.java index da4d6862e0..1294f84f8c 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ShortcutContextAwareDialogBox.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ShortcutContextAwareDialogBox.java @@ -12,36 +12,14 @@ */ public class ShortcutContextAwareDialogBox extends DialogBox { + private final ShortcutContext shortcutContext; private final KeyShortcutPresenter keyShortcutPresenter; private Set activeContext = Collections.emptySet(); - public ShortcutContextAwareDialogBox(KeyShortcutPresenter keyShortcutPresenter) - { - super(); - this.keyShortcutPresenter = keyShortcutPresenter; - } - - public ShortcutContextAwareDialogBox(boolean autoHide, KeyShortcutPresenter keyShortcutPresenter) - { - super(autoHide); - this.keyShortcutPresenter = keyShortcutPresenter; - } - - public ShortcutContextAwareDialogBox(Caption captionWidget, KeyShortcutPresenter keyShortcutPresenter) - { - super(captionWidget); - this.keyShortcutPresenter = keyShortcutPresenter; - } - - public ShortcutContextAwareDialogBox(boolean autoHide, boolean modal, KeyShortcutPresenter keyShortcutPresenter) + public ShortcutContextAwareDialogBox(boolean autoHide, boolean modal, ShortcutContext shortcutContext, KeyShortcutPresenter keyShortcutPresenter) { super(autoHide, modal); - this.keyShortcutPresenter = keyShortcutPresenter; - } - - public ShortcutContextAwareDialogBox(boolean autoHide, boolean modal, Caption captionWidget, KeyShortcutPresenter keyShortcutPresenter) - { - super(autoHide, modal, captionWidget); + this.shortcutContext = shortcutContext; this.keyShortcutPresenter = keyShortcutPresenter; } @@ -49,11 +27,11 @@ public ShortcutContextAwareDialogBox(boolean autoHide, boolean modal, Caption ca public void hide() { super.hide(); - keyShortcutPresenter.setContextActive(ShortcutContext.Popup, false); for (ShortcutContext shortcutContext : activeContext) { keyShortcutPresenter.setContextActive(shortcutContext, true); } + keyShortcutPresenter.setContextActive(shortcutContext, false); } @Override @@ -65,6 +43,6 @@ public void show() { keyShortcutPresenter.setContextActive(shortcutContext, false); } - keyShortcutPresenter.setContextActive(ShortcutContext.Popup, true); + keyShortcutPresenter.setContextActive(shortcutContext, true); } } diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TranslationHistoryDisplay.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TranslationHistoryDisplay.java index 8a233e2df5..62cd30d604 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TranslationHistoryDisplay.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TranslationHistoryDisplay.java @@ -34,6 +34,8 @@ public interface TranslationHistoryDisplay extends WidgetDisplay void clearInput(); + String getComment(); + interface Listener extends ForceReviewCommentDisplay.Listener { diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TranslationHistoryView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TranslationHistoryView.java index 8eacdfb254..3e11891e30 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TranslationHistoryView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TranslationHistoryView.java @@ -2,6 +2,7 @@ import java.util.List; +import org.zanata.webtrans.client.keys.ShortcutContext; import org.zanata.webtrans.client.presenter.KeyShortcutPresenter; import org.zanata.webtrans.client.resources.WebTransMessages; import org.zanata.webtrans.shared.model.ComparableByDate; @@ -46,7 +47,7 @@ public class TranslationHistoryView extends ShortcutContextAwareDialogBox implem @Inject public TranslationHistoryView(ContentStateRenderer stateRenderer, KeyShortcutPresenter keyShortcutPresenter) { - super(true, true, keyShortcutPresenter); + super(true, true, ShortcutContext.TransHistoryPopup, keyShortcutPresenter); this.stateRenderer = stateRenderer; closeButton = new DialogBoxCloseButton(this); HTMLPanel container = uiBinder.createAndBindUi(this); @@ -94,6 +95,12 @@ public void clearInput() commentInput.setText(""); } + @Override + public String getComment() + { + return commentInput.getText(); + } + @Override public void showDiff(TransHistoryItem one, TransHistoryItem two, String description) { diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/ForceReviewCommentWidget.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/ForceReviewCommentWidget.java index 97bda6f9b0..15452dcaaf 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/ForceReviewCommentWidget.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/ForceReviewCommentWidget.java @@ -21,6 +21,7 @@ package org.zanata.webtrans.client.view; +import org.zanata.webtrans.client.keys.ShortcutContext; import org.zanata.webtrans.client.presenter.KeyShortcutPresenter; import org.zanata.webtrans.client.resources.WebTransMessages; import org.zanata.webtrans.client.ui.DialogBoxCloseButton; @@ -41,7 +42,7 @@ public class ForceReviewCommentWidget extends ShortcutContextAwareDialogBox impl @Inject public ForceReviewCommentWidget(WebTransMessages messages, KeyShortcutPresenter keyShortcutPresenter) { - super(false, true, keyShortcutPresenter); + super(false, true, ShortcutContext.RejectConfirmationPopup, keyShortcutPresenter); setGlassEnabled(true); setText(messages.rejectCommentTitle()); diff --git a/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/ForceReviewCommentPresenterTest.java b/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/ForceReviewCommentPresenterTest.java index d704ef4806..37e37ec95f 100644 --- a/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/ForceReviewCommentPresenterTest.java +++ b/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/ForceReviewCommentPresenterTest.java @@ -34,7 +34,6 @@ import org.zanata.webtrans.client.events.TransUnitSaveEvent; import org.zanata.webtrans.client.keys.KeyShortcut; import org.zanata.webtrans.client.keys.ShortcutContext; -import org.zanata.webtrans.client.resources.WebTransMessages; import org.zanata.webtrans.client.rpc.CachingDispatchAsync; import org.zanata.webtrans.client.service.GetTransUnitActionContextHolder; import org.zanata.webtrans.client.view.ForceReviewCommentDisplay; @@ -70,8 +69,6 @@ public class ForceReviewCommentPresenterTest private TransUnitSaveEvent saveEvent; @Mock private KeyShortcutPresenter keyShortcutPresenter; - @Mock - private WebTransMessages messages; @Captor private ArgumentCaptor shortcutCapture; @@ -80,14 +77,14 @@ public void setUp() throws Exception { MockitoAnnotations.initMocks(this); - presenter = new ForceReviewCommentPresenter(display, eventBus, dispatcher, contextHolder, keyShortcutPresenter, messages); + presenter = new ForceReviewCommentPresenter(display, eventBus, dispatcher, contextHolder, keyShortcutPresenter); verify(display).setListener(presenter); verify(eventBus).addHandler(CommentBeforeSaveEvent.TYPE, presenter); verify(keyShortcutPresenter).register(shortcutCapture.capture()); KeyShortcut keyShortcut = shortcutCapture.getValue(); - assertThat(keyShortcut.getContext(), Matchers.equalTo(ShortcutContext.Popup)); + assertThat(keyShortcut.getContext(), Matchers.equalTo(ShortcutContext.RejectConfirmationPopup)); } @Test diff --git a/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/TranslationHistoryPresenterTest.java b/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/TranslationHistoryPresenterTest.java index 9871d70fea..6fb661c89e 100644 --- a/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/TranslationHistoryPresenterTest.java +++ b/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/TranslationHistoryPresenterTest.java @@ -8,13 +8,17 @@ import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import org.zanata.common.ContentState; import org.zanata.webtrans.client.events.CopyDataToEditorEvent; +import org.zanata.webtrans.client.events.KeyShortcutEvent; import org.zanata.webtrans.client.events.NotificationEvent; import org.zanata.webtrans.client.events.ReviewCommentEvent; +import org.zanata.webtrans.client.keys.KeyShortcut; +import org.zanata.webtrans.client.keys.Keys; import org.zanata.webtrans.client.resources.WebTransMessages; import org.zanata.webtrans.client.rpc.CachingDispatchAsync; import org.zanata.webtrans.client.service.GetTransUnitActionContextHolder; @@ -30,6 +34,7 @@ import org.zanata.webtrans.shared.rpc.GetTranslationHistoryAction; import org.zanata.webtrans.shared.rpc.GetTranslationHistoryResult; import com.google.common.collect.Lists; +import com.google.gwt.event.dom.client.KeyCodes; import com.google.gwt.user.cellview.client.ColumnSortEvent; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.view.client.SelectionChangeEvent; @@ -38,6 +43,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.Matchers.isA; import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -69,16 +75,22 @@ public class TranslationHistoryPresenterTest private final TransUnitId transUnitId = new TransUnitId(1L); @Mock(answer = Answers.RETURNS_DEEP_STUBS) private GetTransUnitActionContextHolder contextHolder; + @Mock + private KeyShortcutPresenter keyShortcutPresenter; + @Captor + private ArgumentCaptor keyShortcutCapture; @BeforeMethod public void beforeMethod() { MockitoAnnotations.initMocks(this); - presenter = new TranslationHistoryPresenter(display, eventBus, dispatcher, messages, contextHolder); + presenter = new TranslationHistoryPresenter(display, eventBus, dispatcher, messages, contextHolder, keyShortcutPresenter); presenter.setCurrentValueHolder(targetContentsPresenter); doNothing().when(dispatcher).execute(actionCaptor.capture(), resultCaptor.capture()); verify(eventBus).addHandler(ReviewCommentEvent.TYPE, presenter); + + verify(keyShortcutPresenter).register(keyShortcutCapture.capture()); } private static TransHistoryItem historyItem(String versionNum) @@ -239,4 +251,16 @@ public void onCompareClickedWhichMakesTwoItems() } + @Test + public void testKeyShortcutForAddComment() + { + when(display.getComment()).thenReturn("blah"); + KeyShortcut keyShortcut = keyShortcutCapture.getValue(); + + assertThat(keyShortcut.getAllKeys().iterator().next(), Matchers.equalTo(new Keys(Keys.CTRL_KEY, KeyCodes.KEY_ENTER))); + keyShortcut.getHandler().onKeyShortcut(mock(KeyShortcutEvent.class)); + + verify(display).getComment(); + verify(dispatcher).execute(Mockito.isA(AddReviewCommentAction.class), Mockito.isA(AsyncCallback.class)); + } }