diff options
author | Marc Englund <marc.englund@itmill.com> | 2007-12-11 13:46:41 +0000 |
---|---|---|
committer | Marc Englund <marc.englund@itmill.com> | 2007-12-11 13:46:41 +0000 |
commit | 41cd4c74563053bdd8ffa4867daa402b63aade8a (patch) | |
tree | 2d4a0366c2c7e0f69d71506ed3b543d8a7a5ca24 | |
parent | 4a6827616b43aeb1f6a4817081bb2765dac90a0f (diff) | |
download | vaadin-framework-41cd4c74563053bdd8ffa4867daa402b63aade8a.tar.gz vaadin-framework-41cd4c74563053bdd8ffa4867daa402b63aade8a.zip |
ComboBox fixes: select newitem, entered item exists, etc issues
svn changeset:3218/svn branch:trunk
-rw-r--r-- | src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java | 38 | ||||
-rw-r--r-- | src/com/itmill/toolkit/ui/Select.java | 2 |
2 files changed, 22 insertions, 18 deletions
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java index 947d3dff37..36a3379f60 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java @@ -354,27 +354,31 @@ public class IFilterSelect extends Composite implements Paintable, public void doSelectedItemAction() { final MenuItem item = getSelectedItem(); - if (item != null - && item.getText().toLowerCase().startsWith( - lastFilter.toLowerCase())) { - doItemAction(item, true); - } else if (allowNewItem) { + if (allowNewItem) { final String newItemValue = tb.getText(); // check for exact match in menu - if (getItems().size() == 1) { - final MenuItem potentialExactMatch = (MenuItem) getItems() - .get(0); - if (potentialExactMatch.getText().equals(newItemValue)) { - selectItem(potentialExactMatch); - doSelectedItemAction(); - return; - } - } else { - if (!newItemValue.equals("")) { - client.updateVariable(paintableId, "newitem", - newItemValue, true); + int p = getItems().size(); + if (p > 0) { + for (int i = 0; i < p; i++) { + final MenuItem potentialExactMatch = (MenuItem) getItems() + .get(i); + if (potentialExactMatch.getText().equals(newItemValue)) { + selectItem(potentialExactMatch); + doItemAction(potentialExactMatch, true); + suggestionPopup.hide(); + return; + } } } + + if (!newItemValue.equals("")) { + client.updateVariable(paintableId, "newitem", newItemValue, + true); + } + } else if (item != null + && item.getText().toLowerCase().startsWith( + lastFilter.toLowerCase())) { + doItemAction(item, true); } suggestionPopup.hide(); } diff --git a/src/com/itmill/toolkit/ui/Select.java b/src/com/itmill/toolkit/ui/Select.java index 775d8614dd..0eb18f0929 100644 --- a/src/com/itmill/toolkit/ui/Select.java +++ b/src/com/itmill/toolkit/ui/Select.java @@ -310,7 +310,7 @@ public class Select extends AbstractSelect implements AbstractSelect.Filtering { } setValue(newitem); // rebuild list - filterstring = newitem; + filterstring = null; prevfilterstring = null; } } |