]> source.dussan.org Git - vaadin-framework.git/commitdiff
fixes #1133
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 29 Nov 2007 07:21:03 +0000 (07:21 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 29 Nov 2007 07:21:03 +0000 (07:21 +0000)
svn changeset:3029/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java

index e208e918467a08dd490e980266aa4e60925c7eff..48991eec3b9f42ab7ee3ffc28c680d4d28e4913d 100644 (file)
@@ -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