From 71eb232024007276021500e06da6b614f8e6f0a4 Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Wed, 30 Jan 2008 15:11:11 +0000 Subject: [PATCH] cleaned and fixed shortcuthandler code svn changeset:3674/svn branch:trunk --- .../toolkit/terminal/gwt/client/ui/IView.java | 6 +--- .../terminal/gwt/client/ui/IWindow.java | 8 ++--- .../gwt/client/ui/ShortcutActionHandler.java | 36 +++++++++++++------ 3 files changed, 28 insertions(+), 22 deletions(-) diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java index 7d85558982..849968a747 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java @@ -11,7 +11,6 @@ import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Event; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.WindowResizeListener; -import com.google.gwt.user.client.ui.KeyboardListenerCollection; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; @@ -161,10 +160,7 @@ public class IView extends SimplePanel implements Paintable, public void onBrowserEvent(Event event) { super.onBrowserEvent(event); if (DOM.eventGetType(event) == Event.ONKEYDOWN && actionHandler != null) { - final int modifiers = KeyboardListenerCollection - .getKeyboardModifiers(event); - actionHandler.handleKeyboardEvent( - (char) DOM.eventGetKeyCode(event), modifiers); + actionHandler.handleKeyboardEvent(event); return; } } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java index cc3ec96511..d64c8e8f01 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java @@ -12,7 +12,6 @@ import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Event; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Frame; -import com.google.gwt.user.client.ui.KeyboardListenerCollection; import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.ScrollListener; import com.google.gwt.user.client.ui.ScrollPanel; @@ -334,13 +333,10 @@ public class IWindow extends PopupPanel implements Paintable, ScrollListener { return contents; } - public void onBrowserEvent(Event event) { + public void onBrowserEvent(final Event event) { final int type = DOM.eventGetType(event); if (type == Event.ONKEYDOWN && shortcutHandler != null) { - final int modifiers = KeyboardListenerCollection - .getKeyboardModifiers(event); - shortcutHandler.handleKeyboardEvent((char) DOM - .eventGetKeyCode(event), modifiers); + shortcutHandler.handleKeyboardEvent(event); return; } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ShortcutActionHandler.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ShortcutActionHandler.java index 14555ba5ad..244710c6c9 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ShortcutActionHandler.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ShortcutActionHandler.java @@ -7,7 +7,13 @@ package com.itmill.toolkit.terminal.gwt.client.ui; import java.util.ArrayList; import java.util.Iterator; +import com.google.gwt.user.client.Command; +import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.DeferredCommand; +import com.google.gwt.user.client.Element; +import com.google.gwt.user.client.Event; import com.google.gwt.user.client.ui.KeyboardListener; +import com.google.gwt.user.client.ui.KeyboardListenerCollection; import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection; import com.itmill.toolkit.terminal.gwt.client.UIDL; @@ -60,28 +66,36 @@ public class ShortcutActionHandler { } } - /** - * This method compares given key code and modifier keys to internal list of - * actions. If matching action is found it is fired. - * - * @param keyCode - * character typed - * @param modifiers - * modifier keys (bitmask like in {@link KeyboardListener}) - */ - public void handleKeyboardEvent(char keyCode, int modifiers) { + public void handleKeyboardEvent(Event event) { + final int modifiers = KeyboardListenerCollection + .getKeyboardModifiers(event); + final char keyCode = (char) DOM.eventGetKeyCode(event); final ShortcutKeyCombination kc = new ShortcutKeyCombination(keyCode, modifiers); final Iterator it = actions.iterator(); while (it.hasNext()) { final ShortcutAction a = (ShortcutAction) it.next(); if (a.getShortcutCombination().equals(kc)) { - client.updateVariable(paintableId, "action", a.getKey(), true); + shakeTarget(DOM.eventGetTarget(event)); + DeferredCommand.addCommand(new Command() { + public void execute() { + client.updateVariable(paintableId, "action", + a.getKey(), true); + } + }); break; } } } + public static native void shakeTarget(Element e) + /*-{ + if(e.blur) { + e.blur(); + e.focus(); + } + }-*/; + } class ShortcutKeyCombination { -- 2.39.5