]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix for #3187 - ComboBox shows all the choices again after selecting
authorArtur Signell <artur.signell@itmill.com>
Fri, 21 Aug 2009 12:12:21 +0000 (12:12 +0000)
committerArtur Signell <artur.signell@itmill.com>
Fri, 21 Aug 2009 12:12:21 +0000 (12:12 +0000)
svn changeset:8522/svn branch:6.1

src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java

index 5716794e2c62200e686206659f78a45df8b5d2cc..e57d009724ea2dfd2134bc466876a2380e2e1a33 100644 (file)
@@ -841,32 +841,60 @@ public class VFilterSelect extends Composite implements Paintable, Field,
     }
 
     public void onKeyDown(Widget sender, char keyCode, int modifiers) {
-        if (enabled && suggestionPopup.isAttached()) {
-            switch (keyCode) {
-            case KeyboardListener.KEY_DOWN:
-                suggestionPopup.selectNextItem();
-                DOM.eventPreventDefault(DOM.eventGetCurrentEvent());
-                break;
-            case KeyboardListener.KEY_UP:
-                suggestionPopup.selectPrevItem();
-                DOM.eventPreventDefault(DOM.eventGetCurrentEvent());
-                break;
-            case KeyboardListener.KEY_PAGEDOWN:
-                if (hasNextPage()) {
-                    filterOptions(currentPage + 1, lastFilter);
-                }
-                break;
-            case KeyboardListener.KEY_PAGEUP:
-                if (currentPage > 0) {
-                    filterOptions(currentPage - 1, lastFilter);
-                }
+        if (enabled) {
+            if (suggestionPopup.isAttached()) {
+                popupKeyDown(keyCode);
+            } else {
+                inputFieldKeyDown(keyCode);
+            }
+        }
+    }
+
+    private void inputFieldKeyDown(char keyCode) {
+        switch (keyCode) {
+        case KeyboardListener.KEY_DOWN:
+        case KeyboardListener.KEY_UP:
+        case KeyboardListener.KEY_PAGEDOWN:
+        case KeyboardListener.KEY_PAGEUP:
+            if (suggestionPopup.isAttached()) {
                 break;
-            case KeyboardListener.KEY_ENTER:
-            case KeyboardListener.KEY_TAB:
-                suggestionPopup.menu.doSelectedItemAction();
+            } else {
+                // open popup as from gadget
+                filterOptions(-1, "");
+                lastFilter = "";
+                tb.selectAll();
                 break;
             }
         }
+
+    }
+
+    private void popupKeyDown(char keyCode) {
+        switch (keyCode) {
+        case KeyboardListener.KEY_DOWN:
+            suggestionPopup.selectNextItem();
+            DOM.eventPreventDefault(DOM.eventGetCurrentEvent());
+            break;
+        case KeyboardListener.KEY_UP:
+            suggestionPopup.selectPrevItem();
+            DOM.eventPreventDefault(DOM.eventGetCurrentEvent());
+            break;
+        case KeyboardListener.KEY_PAGEDOWN:
+            if (hasNextPage()) {
+                filterOptions(currentPage + 1, lastFilter);
+            }
+            break;
+        case KeyboardListener.KEY_PAGEUP:
+            if (currentPage > 0) {
+                filterOptions(currentPage - 1, lastFilter);
+            }
+            break;
+        case KeyboardListener.KEY_ENTER:
+        case KeyboardListener.KEY_TAB:
+            suggestionPopup.menu.doSelectedItemAction();
+            break;
+        }
+
     }
 
     public void onKeyPress(Widget sender, char keyCode, int modifiers) {
@@ -881,21 +909,12 @@ public class VFilterSelect extends Composite implements Paintable, Field,
             case KeyboardListener.KEY_SHIFT:
             case KeyboardListener.KEY_CTRL:
             case KeyboardListener.KEY_ALT:
-                ; // NOP
-                break;
             case KeyboardListener.KEY_DOWN:
             case KeyboardListener.KEY_UP:
             case KeyboardListener.KEY_PAGEDOWN:
             case KeyboardListener.KEY_PAGEUP:
-                if (suggestionPopup.isAttached()) {
-                    break;
-                } else {
-                    // open popup as from gadget
-                    filterOptions(-1, "");
-                    lastFilter = "";
-                    tb.selectAll();
-                    break;
-                }
+                ; // NOP
+                break;
             case KeyboardListener.KEY_ESCAPE:
                 reset();
                 break;