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

Commit

Permalink
Merge pull request #182 from zanata/rhbz1008253-FF-esc
Browse files Browse the repository at this point in the history
rhbz1008253 - intercept ESC so that firefox won't close connection
  • Loading branch information
Alex Eng committed Sep 18, 2013
2 parents 09deb76 + 9c8f1b9 commit a7ef4a1
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 2 deletions.
Expand Up @@ -200,7 +200,7 @@ public void onPreviewNativeEvent(NativePreviewEvent nativeEvent)
.addKey(new Keys(Keys.NO_MODIFIER, KeyCodes.KEY_ESCAPE))
.setContext(ShortcutContext.Application)
.setDescription(messages.closeShortcutView())
.setKeyEvent(KeyEvent.KEY_UP)
.setKeyEvent(KeyEvent.KEY_DOWN)
.setPreventDefault(true)
.setStopPropagation(true)
.setHandler(new KeyShortcutEventHandler()
Expand Down
@@ -1,7 +1,12 @@
package org.zanata.webtrans.client.ui;

import org.zanata.webtrans.client.events.KeyShortcutEvent;
import org.zanata.webtrans.client.events.KeyShortcutEventHandler;
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.presenter.KeyShortcutPresenter;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.user.client.ui.DialogBox;

/**
Expand All @@ -12,11 +17,51 @@ public class ShortcutContextAwareDialogBox extends DialogBox
private final ShortcutContext modalContext;
private final KeyShortcutPresenter keyShortcutPresenter;

public ShortcutContextAwareDialogBox(boolean autoHide, boolean modal, ShortcutContext modalContext, KeyShortcutPresenter keyShortcutPresenter)
public ShortcutContextAwareDialogBox(final boolean autoHide, final boolean modal, ShortcutContext modalContext, KeyShortcutPresenter keyShortcutPresenter)
{
super(autoHide, modal);
this.modalContext = modalContext;
this.keyShortcutPresenter = keyShortcutPresenter;
// intercept esc key so that Firefox won't close event service connection
KeyShortcutEventHandler handler = createKeyShortcutEventHandler(autoHide, modal);
KeyShortcut hideSelfShortcut = KeyShortcut.Builder.builder()
.addKey(new Keys(Keys.NO_MODIFIER, KeyCodes.KEY_ESCAPE))
.setContext(modalContext)
.setKeyEvent(KeyShortcut.KeyEvent.KEY_DOWN)
.setPreventDefault(true)
.setStopPropagation(true)
.setHandler(handler)
.build();
keyShortcutPresenter.register(hideSelfShortcut);
}

private KeyShortcutEventHandler createKeyShortcutEventHandler(boolean autoHide, boolean modal)
{
KeyShortcutEventHandler handler;
if (autoHide && modal)
{
handler = new KeyShortcutEventHandler()
{
@Override
public void onKeyShortcut(KeyShortcutEvent event)
{
// no op
}
};

}
else
{
handler = new KeyShortcutEventHandler()
{
@Override
public void onKeyShortcut(KeyShortcutEvent event)
{
hide();
}
};
}
return handler;
}

@Override
Expand Down

0 comments on commit a7ef4a1

Please sign in to comment.