aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Englund <marc.englund@itmill.com>2007-12-11 13:46:41 +0000
committerMarc Englund <marc.englund@itmill.com>2007-12-11 13:46:41 +0000
commit41cd4c74563053bdd8ffa4867daa402b63aade8a (patch)
tree2d4a0366c2c7e0f69d71506ed3b543d8a7a5ca24
parent4a6827616b43aeb1f6a4817081bb2765dac90a0f (diff)
downloadvaadin-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.java38
-rw-r--r--src/com/itmill/toolkit/ui/Select.java2
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;
}
}