aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtur Signell <artur.signell@itmill.com>2008-08-25 05:50:59 +0000
committerArtur Signell <artur.signell@itmill.com>2008-08-25 05:50:59 +0000
commit728f60409e3ca3dd8f85fff714b972cbd474b665 (patch)
tree1d7370c37b73ac3043a94ff17af713d3e8d82a46
parent647f3c761d27410eb336e8d733566c43caaa1d75 (diff)
downloadvaadin-framework-728f60409e3ca3dd8f85fff714b972cbd474b665.tar.gz
vaadin-framework-728f60409e3ca3dd8f85fff714b972cbd474b665.zip
Fixes #1230 - NPE in AbstractSelect.select and allow selecting null -> NullSelectionItem
svn changeset:5249/svn branch:trunk
-rw-r--r--src/com/itmill/toolkit/tests/tickets/Ticket1230.java35
-rw-r--r--src/com/itmill/toolkit/ui/AbstractSelect.java21
2 files changed, 45 insertions, 11 deletions
diff --git a/src/com/itmill/toolkit/tests/tickets/Ticket1230.java b/src/com/itmill/toolkit/tests/tickets/Ticket1230.java
index 16b35bdc3a..be757af3fb 100644
--- a/src/com/itmill/toolkit/tests/tickets/Ticket1230.java
+++ b/src/com/itmill/toolkit/tests/tickets/Ticket1230.java
@@ -20,7 +20,7 @@ public class Ticket1230 extends Application {
Window w = new Window(getClass().getSimpleName());
setMainWindow(w);
- GridLayout layout = new GridLayout(3, 5);
+ GridLayout layout = new GridLayout(5, 5);
w.setLayout(layout);
layout.setSpacing(true);
@@ -37,6 +37,22 @@ public class Ticket1230 extends Application {
}
});
layout.addComponent(b);
+ b = new Button("Select 1", new ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ selectWithoutNullItem.select("1");
+
+ }
+ });
+ layout.addComponent(b);
+ b = new Button("Select 2", new ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ selectWithoutNullItem.select("2");
+
+ }
+ });
+ layout.addComponent(b);
b = new Button("Select null", new ClickListener() {
@@ -64,6 +80,23 @@ public class Ticket1230 extends Application {
});
layout.addComponent(b);
+ b = new Button("Select 1", new ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ selectWithNullItem.select("1");
+
+ }
+ });
+ layout.addComponent(b);
+ b = new Button("Select 2", new ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ selectWithNullItem.select("2");
+
+ }
+ });
+ layout.addComponent(b);
+
b = new Button("Select null", new ClickListener() {
public void buttonClick(ClickEvent event) {
diff --git a/src/com/itmill/toolkit/ui/AbstractSelect.java b/src/com/itmill/toolkit/ui/AbstractSelect.java
index fc7acaff30..b368f755a4 100644
--- a/src/com/itmill/toolkit/ui/AbstractSelect.java
+++ b/src/com/itmill/toolkit/ui/AbstractSelect.java
@@ -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);
}
}