From: Artur Signell Date: Fri, 21 Aug 2009 12:12:21 +0000 (+0000) Subject: Fix for #3187 - ComboBox shows all the choices again after selecting X-Git-Tag: 6.7.0.beta1~2599 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=ec1551ee541ca2d2a21028eb9e65c2cf9a83aa9f;p=vaadin-framework.git Fix for #3187 - ComboBox shows all the choices again after selecting svn changeset:8522/svn branch:6.1 --- diff --git a/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java b/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java index 5716794e2c..e57d009724 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java @@ -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;