summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Englund <marc.englund@itmill.com>2008-01-25 15:06:55 +0000
committerMarc Englund <marc.englund@itmill.com>2008-01-25 15:06:55 +0000
commitafc95e6c9482fc0611449d3d0be7c33ac7daa82b (patch)
tree5de09e59310cfb65bee2852f34f1c8267c9f6155
parent4303123ed4492ae21413aabfb0617a25a05af9ca (diff)
downloadvaadin-framework-afc95e6c9482fc0611449d3d0be7c33ac7daa82b.tar.gz
vaadin-framework-afc95e6c9482fc0611449d3d0be7c33ac7daa82b.zip
Non-immediate mode works like it should when not in immediate mode.
Un-focusing the component will not revert value if the value is valid. svn changeset:3659/svn branch:trunk
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java54
1 files changed, 28 insertions, 26 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 5ab45205b1..2bd7cee311 100644
--- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java
+++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java
@@ -369,35 +369,42 @@ public class IFilterSelect extends Composite implements Paintable,
public void doSelectedItemAction() {
final MenuItem item = getSelectedItem();
- if (allowNewItem) {
- final String newItemValue = tb.getText();
- // check for exact match in menu
- 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;
- }
+ final String enteredItemValue = tb.getText();
+ // check for exact match in menu
+ 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(enteredItemValue)) {
+ selectItem(potentialExactMatch);
+ doItemAction(potentialExactMatch, true);
+ suggestionPopup.hide();
+ return;
}
}
+ }
+ if (allowNewItem) {
- if (!newItemValue.equals("")) {
- client.updateVariable(paintableId, "newitem", newItemValue,
- true);
+ if (!enteredItemValue.equals("")) {
+ client.updateVariable(paintableId, "newitem",
+ enteredItemValue, immediate);
}
} else if (item != null
&& item.getText().toLowerCase().startsWith(
lastFilter.toLowerCase())) {
doItemAction(item, true);
+ } else {
+ if (currentSuggestion != null) {
+ tb.setText(currentSuggestion.getReplacementString());
+ selectedOptionKey = currentSuggestion.key;
+ } else {
+ tb.setText("");
+ selectedOptionKey = null;
+ }
}
suggestionPopup.hide();
}
-
}
public static final int FILTERINGMODE_OFF = 0;
@@ -728,14 +735,9 @@ public class IFilterSelect extends Composite implements Paintable,
}
public void onLostFocus(Widget sender) {
- if (currentSuggestion == null
- || !tb.getText().equals(
- currentSuggestion.getReplacementString())) {
- if (currentSuggestion != null) {
- tb.setText(currentSuggestion.getDisplayString());
- } else {
- tb.setText("");
- }
+ if (suggestionPopup.isJustClosed()) {
+ suggestionPopup.menu.doSelectedItemAction();
}
+
}
}