Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
rhbz996398 - short cut key context should change when review comment …
Browse files Browse the repository at this point in the history
…popup shows
  • Loading branch information
Patrick Huang committed Sep 3, 2013
1 parent b370025 commit 6e16441
Show file tree
Hide file tree
Showing 7 changed files with 101 additions and 16 deletions.
Expand Up @@ -39,32 +39,38 @@ public enum ShortcutContext
Application,

/**
* Used by {@link SearchResultsPresenter}
* Used by {@link org.zanata.webtrans.client.presenter.SearchResultsPresenter}
*/
ProjectWideSearch,

/**
* Used by {@link TableEditorPresenter}
* Used by {@link org.zanata.webtrans.client.presenter.TranslationPresenter}
*/
Navigation,

/**
* Used by {@link InlineTargetCellEditor}
* Used by {@link org.zanata.webtrans.client.presenter.TargetContentsPresenter}
*/
Edit,

/**
* Used by {@link TransMemoryPresenter}
* Used by {@link org.zanata.webtrans.client.presenter.TransMemoryPresenter}
*/
TM,

/**
* Used by {@link GlossaryPresenter}
* Used by {@link org.zanata.webtrans.client.presenter.GlossaryPresenter}
*/
Glossary,

/**
* Used by {@link WorkspaceUsersPresenter}
* Used by {@link org.zanata.webtrans.client.presenter.WorkspaceUsersPresenter}
*/
Chat;
Chat,

/**
* Used by all popup
*/
Popup

}
Expand Up @@ -23,14 +23,21 @@

import org.zanata.webtrans.client.events.CommentBeforeSaveEvent;
import org.zanata.webtrans.client.events.CommentBeforeSaveEventHandler;
import org.zanata.webtrans.client.events.KeyShortcutEvent;
import org.zanata.webtrans.client.events.KeyShortcutEventHandler;
import org.zanata.webtrans.client.events.NavTransUnitEvent;
import org.zanata.webtrans.client.events.TransUnitSaveEvent;
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;
import org.zanata.webtrans.client.rpc.CachingDispatchAsync;
import org.zanata.webtrans.client.service.GetTransUnitActionContextHolder;
import org.zanata.webtrans.client.view.ForceReviewCommentDisplay;
import org.zanata.webtrans.shared.rpc.AddReviewCommentAction;
import org.zanata.webtrans.shared.rpc.AddReviewCommentResult;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.inject.Inject;

import net.customware.gwt.presenter.client.EventBus;
Expand All @@ -43,27 +50,53 @@ public class ForceReviewCommentPresenter extends WidgetPresenter<ForceReviewComm
implements ForceReviewCommentDisplay.Listener, CommentBeforeSaveEventHandler
{

private final ForceReviewCommentDisplay display;
private final CachingDispatchAsync dispatcher;
private final GetTransUnitActionContextHolder contextHolder;
private final KeyShortcutPresenter keyShortcutPresenter;

private TransUnitSaveEvent saveEvent;

@Inject
public ForceReviewCommentPresenter(ForceReviewCommentDisplay display, EventBus eventBus, CachingDispatchAsync dispatcher, GetTransUnitActionContextHolder contextHolder)
public ForceReviewCommentPresenter(ForceReviewCommentDisplay display, EventBus eventBus, CachingDispatchAsync dispatcher,
GetTransUnitActionContextHolder contextHolder, KeyShortcutPresenter keyShortcutPresenter,
WebTransMessages messages)
{
super(display, eventBus);
this.display = display;
this.dispatcher = dispatcher;
this.contextHolder = contextHolder;
this.keyShortcutPresenter = keyShortcutPresenter;
display.setListener(this);

eventBus.addHandler(CommentBeforeSaveEvent.TYPE, this);

registerKeyShortcut(display, messages);
}

private void registerKeyShortcut(final ForceReviewCommentDisplay display, WebTransMessages messages)
{
KeyShortcut confirmShortcut = KeyShortcut.Builder.builder()
.addKey(new Keys(Keys.CTRL_KEY, KeyCodes.KEY_ENTER))
.setContext(ShortcutContext.Popup).setDescription(messages.confirmRejection())
.setHandler(new KeyShortcutEventHandler()
{
@Override
public void onKeyShortcut(KeyShortcutEvent event)
{
addComment(display.getComment());
}
})
.build();
keyShortcutPresenter.register(confirmShortcut);
}

@Override
public void onCommentBeforeSave(CommentBeforeSaveEvent event)
{
saveEvent = event.getSaveEvent();
display.center();
enableShortcut();
}

@Override
Expand All @@ -82,7 +115,19 @@ public void onSuccess(AddReviewCommentResult result)
display.hide();
}
});
disableShortcut();
}

private void enableShortcut()
{
keyShortcutPresenter.setContextActive(ShortcutContext.Edit, false);
keyShortcutPresenter.setContextActive(ShortcutContext.Popup, true);
}

private void disableShortcut()
{
keyShortcutPresenter.setContextActive(ShortcutContext.Edit, true);
keyShortcutPresenter.setContextActive(ShortcutContext.Popup, false);
}

@Override
Expand Down
Expand Up @@ -30,9 +30,10 @@
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.TextArea;

public class ReviewCommentInputWidget extends Composite
public class ReviewCommentInputWidget extends Composite implements HasText
{
private static ReviewCommentInputWidgetUiBinder ourUiBinder = GWT.create(ReviewCommentInputWidgetUiBinder.class);
@UiField
Expand Down Expand Up @@ -67,14 +68,21 @@ public void setEnabled(boolean enabled)
addCommentButton.setEnabled(enabled);
}

public void clearInput()
public void setButtonText(String buttonText)
{
commentTextArea.setValue("");
addCommentButton.setText(buttonText);
}

public void setButtonText(String buttonText)
@Override
public String getText()
{
addCommentButton.setText(buttonText);
return commentTextArea.getText();
}

@Override
public void setText(String text)
{
commentTextArea.setText(text);
}

interface ReviewCommentInputWidgetUiBinder extends UiBinder<HTMLPanel, ReviewCommentInputWidget>
Expand Down
Expand Up @@ -95,7 +95,7 @@ public void addCommentToList(ReviewComment comment)
@Override
public void clearInput()
{
commentInput.clearInput();
commentInput.setText("");
}

@Override
Expand Down
Expand Up @@ -36,6 +36,8 @@ public interface ForceReviewCommentDisplay extends WidgetDisplay

void center();

String getComment();

interface Listener
{

Expand Down
Expand Up @@ -66,6 +66,12 @@ public void setListener(Listener listener)
@Override
public void clearInput()
{
inputWidget.clearInput();
inputWidget.setText("");
}

@Override
public String getComment()
{
return inputWidget.getText();
}
}
Expand Up @@ -24,6 +24,7 @@
import org.hamcrest.Matchers;
import org.mockito.Answers;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
Expand All @@ -32,6 +33,9 @@
import org.zanata.webtrans.client.events.CommentBeforeSaveEvent;
import org.zanata.webtrans.client.events.NavTransUnitEvent;
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;
Expand Down Expand Up @@ -65,16 +69,26 @@ public class ForceReviewCommentPresenterTest
private CommentBeforeSaveEvent commentBeforeSaveEvent;
@Mock
private TransUnitSaveEvent saveEvent;
@Mock
private KeyShortcutPresenter keyShortcutPresenter;
@Mock
private WebTransMessages messages;
@Captor
private ArgumentCaptor<KeyShortcut> shortcutCapture;

@BeforeMethod
public void setUp() throws Exception
{
MockitoAnnotations.initMocks(this);

presenter = new ForceReviewCommentPresenter(display, eventBus, dispatcher, contextHolder);
presenter = new ForceReviewCommentPresenter(display, eventBus, dispatcher, contextHolder, keyShortcutPresenter, messages);

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

@Test
Expand All @@ -83,6 +97,8 @@ public void testOnCommentBeforeSave() throws Exception
presenter.onCommentBeforeSave(commentBeforeSaveEvent);

verify(display).center();
verify(keyShortcutPresenter).setContextActive(ShortcutContext.Edit, false);
verify(keyShortcutPresenter).setContextActive(ShortcutContext.Popup, true);
}

@Test
Expand All @@ -108,5 +124,7 @@ public void testAddComment() throws Exception
verify(eventBus).fireEvent(saveEvent);
verify(eventBus).fireEvent(NavTransUnitEvent.NEXT_ENTRY_EVENT);
verify(display).hide();
verify(keyShortcutPresenter).setContextActive(ShortcutContext.Edit, true);
verify(keyShortcutPresenter).setContextActive(ShortcutContext.Popup, false);
}
}

0 comments on commit 6e16441

Please sign in to comment.