]> source.dussan.org Git - vaadin-framework.git/commitdiff
Displayed empty if value==null even if nullselection is not allowed. Fixes #1996
authorMarc Englund <marc.englund@itmill.com>
Thu, 21 Aug 2008 09:43:07 +0000 (09:43 +0000)
committerMarc Englund <marc.englund@itmill.com>
Thu, 21 Aug 2008 09:43:07 +0000 (09:43 +0000)
svn changeset:5232/svn branch:trunk

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

index b011928bf9a3b9950be798bf89f8dd2df79f1aa7..9cc1e685c84c3e191ef0e7460fdc575a8113b6a0 100644 (file)
@@ -34,14 +34,23 @@ public class INativeSelect extends IOptionGroupBase implements Field {
             // can't unselect last item in singleselect mode
             select.addItem("", null);
         }
+        boolean selected = false;
         for (final Iterator i = uidl.getChildIterator(); i.hasNext();) {
             final UIDL optionUidl = (UIDL) i.next();
             select.addItem(optionUidl.getStringAttribute("caption"), optionUidl
                     .getStringAttribute("key"));
             if (optionUidl.hasAttribute("selected")) {
                 select.setItemSelected(select.getItemCount() - 1, true);
+                selected = true;
             }
         }
+        if (!selected && !isNullSelectionAllowed()) {
+            // null-select not allowed, but value not selected yet; add null and
+            // remove when something is selected
+            select.insertItem("", null, 0);
+            select.setItemSelected(0, true);
+        }
+
     }
 
     protected Object[] getSelectedItems() {
@@ -55,6 +64,7 @@ public class INativeSelect extends IOptionGroupBase implements Field {
     }
 
     public void onChange(Widget sender) {
+
         if (select.isMultipleSelect()) {
             client.updateVariable(id, "selected", getSelectedItems(),
                     isImmediate());
@@ -62,6 +72,10 @@ public class INativeSelect extends IOptionGroupBase implements Field {
             client.updateVariable(id, "selected", new String[] { ""
                     + getSelectedItem() }, isImmediate());
         }
+        if (!isNullSelectionAllowed() && "null".equals(select.getValue(0))) {
+            // remove temporary empty item
+            select.removeItem(0);
+        }
     }
 
     public void setHeight(String height) {