diff options
author | Matti Tahvonen <matti.tahvonen@itmill.com> | 2007-11-29 07:21:03 +0000 |
---|---|---|
committer | Matti Tahvonen <matti.tahvonen@itmill.com> | 2007-11-29 07:21:03 +0000 |
commit | f28318c002dc4ad62457c960a0b42620dcc0fd87 (patch) | |
tree | 66eb67b8854279d879fe1d2201a70dc9c85ab867 /src | |
parent | 38b6fa91ebcb6ba5fde4ef34a7d9bdfe539973b3 (diff) | |
download | vaadin-framework-f28318c002dc4ad62457c960a0b42620dcc0fd87.tar.gz vaadin-framework-f28318c002dc4ad62457c960a0b42620dcc0fd87.zip |
fixes #1133
svn changeset:3029/svn branch:trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java | 105 |
1 files changed, 60 insertions, 45 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 e208e91846..48991eec3b 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java @@ -419,6 +419,7 @@ public class IFilterSelect extends Composite implements Paintable, private int totalMatches; private boolean allowNewItem; private boolean nullSelectionAllowed; + private boolean enabled; public IFilterSelect() { selectedItemIcon.setVisible(false); @@ -484,6 +485,14 @@ public class IFilterSelect extends Composite implements Paintable, paintableId = uidl.getId(); this.client = client; + if (uidl.hasAttribute("disabled") || uidl.hasAttribute("readonly")) { + tb.setEnabled(false); + enabled = false; + } else { + tb.setEnabled(true); + enabled = true; + } + if (client.updateComponent(this, uidl, true)) { return; } @@ -585,7 +594,7 @@ public class IFilterSelect extends Composite implements Paintable, } public void onKeyDown(Widget sender, char keyCode, int modifiers) { - if (suggestionPopup.isAttached()) { + if (enabled && suggestionPopup.isAttached()) { switch (keyCode) { case KeyboardListener.KEY_DOWN: suggestionPopup.selectNextItem(); @@ -618,26 +627,28 @@ public class IFilterSelect extends Composite implements Paintable, } public void onKeyUp(Widget sender, char keyCode, int modifiers) { - switch (keyCode) { - case KeyboardListener.KEY_ENTER: - case KeyboardListener.KEY_TAB: - ; // NOP - break; - case KeyboardListener.KEY_DOWN: - case KeyboardListener.KEY_UP: - case KeyboardListener.KEY_PAGEDOWN: - case KeyboardListener.KEY_PAGEUP: - if (suggestionPopup.isAttached()) { + if (enabled) { + switch (keyCode) { + case KeyboardListener.KEY_ENTER: + case KeyboardListener.KEY_TAB: + ; // NOP break; - } else { - // open popup as from gadget - filterOptions(0, ""); - tb.selectAll(); + 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(0, ""); + tb.selectAll(); + break; + } + default: + filterOptions(currentPage); break; } - default: - filterOptions(currentPage); - break; } } @@ -645,39 +656,43 @@ public class IFilterSelect extends Composite implements Paintable, * Listener for popupopener */ public void onClick(Widget sender) { - // ask suggestionPopup if it was just closed, we are using GWT Popup's - // auto close feature - if (!suggestionPopup.isJustClosed()) { - filterOptions(0, ""); - } - DOM.eventPreventDefault(DOM.eventGetCurrentEvent()); - tb.selectAll(); - tb.setFocus(true); + if (enabled) { + // ask suggestionPopup if it was just closed, we are using GWT + // Popup's + // auto close feature + if (!suggestionPopup.isJustClosed()) { + filterOptions(0, ""); + } + DOM.eventPreventDefault(DOM.eventGetCurrentEvent()); + tb.selectAll(); + tb.setFocus(true); + + } } /* * Calculate minumum width for FilterSelect textarea */ private native int minWidth(String captions) /*-{ - if(!captions || captions.length <= 0) - return 0; - captions = captions.split("|"); - var d = $wnd.document.createElement("div"); - var html = ""; - for(var i=0; i < captions.length; i++) { - html += "<div>" + captions[i] + "</div>"; - // TODO apply same CSS classname as in suggestionmenu - } - d.style.position = "absolute"; - d.style.top = "0"; - d.style.left = "0"; - d.style.visibility = "hidden"; - d.innerHTML = html; - $wnd.document.body.appendChild(d); - var w = d.offsetWidth; - $wnd.document.body.removeChild(d); - return w; - }-*/; + if(!captions || captions.length <= 0) + return 0; + captions = captions.split("|"); + var d = $wnd.document.createElement("div"); + var html = ""; + for(var i=0; i < captions.length; i++) { + html += "<div>" + captions[i] + "</div>"; + // TODO apply same CSS classname as in suggestionmenu + } + d.style.position = "absolute"; + d.style.top = "0"; + d.style.left = "0"; + d.style.visibility = "hidden"; + d.innerHTML = html; + $wnd.document.body.appendChild(d); + var w = d.offsetWidth; + $wnd.document.body.removeChild(d); + return w; + }-*/; public void onFocus(Widget sender) { // NOP |