]> source.dussan.org Git - vaadin-framework.git/commitdiff
cleaned and fixed shortcuthandler code
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 30 Jan 2008 15:11:11 +0000 (15:11 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 30 Jan 2008 15:11:11 +0000 (15:11 +0000)
svn changeset:3674/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java
src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java
src/com/itmill/toolkit/terminal/gwt/client/ui/ShortcutActionHandler.java

index 7d85558982aca183186b4341b2f3b334bf392a05..849968a747ff0a3f991d5785a7415e2491dbe5a1 100644 (file)
@@ -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;
         }
     }
index cc3ec96511dd43b2d1da026e280616fa029ffced..d64c8e8f0105ef5850a57d1d8d0bb74000384838 100644 (file)
@@ -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;
         }
 
index 14555ba5adf40c09f4885f2209fba6a25165596a..244710c6c9f3a6bf1866fb03acce661292e78774 100644 (file)
@@ -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 {