]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fixes #1230 - NPE in AbstractSelect.select and allow selecting null -> NullSelectionItem
authorArtur Signell <artur.signell@itmill.com>
Mon, 25 Aug 2008 05:50:59 +0000 (05:50 +0000)
committerArtur Signell <artur.signell@itmill.com>
Mon, 25 Aug 2008 05:50:59 +0000 (05:50 +0000)
svn changeset:5249/svn branch:trunk

src/com/itmill/toolkit/tests/tickets/Ticket1230.java
src/com/itmill/toolkit/ui/AbstractSelect.java

index 16b35bdc3a9080fc73252076f0c17c4d58843f37..be757af3fb80d302db5b7393130054ff623cbaaa 100644 (file)
@@ -20,7 +20,7 @@ public class Ticket1230 extends Application {
         Window w = new Window(getClass().getSimpleName());\r
         setMainWindow(w);\r
 \r
-        GridLayout layout = new GridLayout(3, 5);\r
+        GridLayout layout = new GridLayout(5, 5);\r
         w.setLayout(layout);\r
 \r
         layout.setSpacing(true);\r
@@ -37,6 +37,22 @@ public class Ticket1230 extends Application {
                 }\r
             });\r
             layout.addComponent(b);\r
+            b = new Button("Select 1", new ClickListener() {\r
+\r
+                public void buttonClick(ClickEvent event) {\r
+                    selectWithoutNullItem.select("1");\r
+\r
+                }\r
+            });\r
+            layout.addComponent(b);\r
+            b = new Button("Select 2", new ClickListener() {\r
+\r
+                public void buttonClick(ClickEvent event) {\r
+                    selectWithoutNullItem.select("2");\r
+\r
+                }\r
+            });\r
+            layout.addComponent(b);\r
 \r
             b = new Button("Select null", new ClickListener() {\r
 \r
@@ -64,6 +80,23 @@ public class Ticket1230 extends Application {
             });\r
             layout.addComponent(b);\r
 \r
+            b = new Button("Select 1", new ClickListener() {\r
+\r
+                public void buttonClick(ClickEvent event) {\r
+                    selectWithNullItem.select("1");\r
+\r
+                }\r
+            });\r
+            layout.addComponent(b);\r
+            b = new Button("Select 2", new ClickListener() {\r
+\r
+                public void buttonClick(ClickEvent event) {\r
+                    selectWithNullItem.select("2");\r
+\r
+                }\r
+            });\r
+            layout.addComponent(b);\r
+\r
             b = new Button("Select null", new ClickListener() {\r
 \r
                 public void buttonClick(ClickEvent event) {\r
index fc7acaff3042398495be9965396ea880ae4ce9a9..b368f755a4a567403515502b382df9999cfd27ba 100644 (file)
@@ -590,6 +590,10 @@ public abstract class AbstractSelect extends AbstractField implements
      */
     public void setValue(Object newValue) throws Property.ReadOnlyException,
             Property.ConversionException {
+        if (newValue == null) {
+            newValue = getNullSelectionItemId();
+        }
+
         setValue(newValue, false);
     }
 
@@ -1318,16 +1322,13 @@ public abstract class AbstractSelect extends AbstractField implements
      * 
      */
     public void select(Object itemId) {
-        if (!isSelected(itemId) && items.containsId(itemId)) {
-            if (isMultiSelect()) {
-                final Set s = new HashSet((Set) getValue());
-                s.add(itemId);
-                setValue(s);
-            } else if (itemId.equals(getNullSelectionItemId())) {
-                setValue(null);
-            } else {
-                setValue(itemId);
-            }
+        if (!isMultiSelect()) {
+            setValue(itemId);
+        } else if (!isSelected(itemId) && itemId != null
+                && items.containsId(itemId)) {
+            final Set s = new HashSet((Set) getValue());
+            s.add(itemId);
+            setValue(s);
         }
     }