GWTアプリでキーボードショートカットを設定

概要

キーボードショートカットを実装するには、画面のどの要素がアクティブな時でもキーイベントをハンドルする必要がある。
widget.addKeyDownHandler(...)では実装できない。

EventクラスにNativePreviewHandlerを追加することで実現する。

参考:https://groups.google.com/forum/#!topic/google-web-toolkit/Pmq8OF77RTM

Main.java

    public void onModuleLoad() {
        Event.addNativePreviewHandler(new Event.NativePreviewHandler() {
            public void onPreviewNativeEvent(NativePreviewEvent event) {
                NativeEvent ne = event.getNativeEvent();
                if (KeyUpEvent.getType().getName() != ne.getType())
                    return;
                switch (ne.getKeyCode()) {
                case KeyCodes.KEY_A:
                    fireCommand1();
                    break;
                case KeyCodes.KEY_ENTER:
                    fireCommand2();
                    break;
                }
            }
        });
}