From 41cd4c74563053bdd8ffa4867daa402b63aade8a Mon Sep 17 00:00:00 2001 From: Marc Englund Date: Tue, 11 Dec 2007 13:46:41 +0000 Subject: [PATCH] ComboBox fixes: select newitem, entered item exists, etc issues svn changeset:3218/svn branch:trunk --- .../terminal/gwt/client/ui/IFilterSelect.java | 38 ++++++++++--------- 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; } } -- 2.39.5