From 728f60409e3ca3dd8f85fff714b972cbd474b665 Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Mon, 25 Aug 2008 05:50:59 +0000 Subject: [PATCH] Fixes #1230 - NPE in AbstractSelect.select and allow selecting null -> NullSelectionItem svn changeset:5249/svn branch:trunk --- .../toolkit/tests/tickets/Ticket1230.java | 35 ++++++++++++++++++- src/com/itmill/toolkit/ui/AbstractSelect.java | 21 +++++------ 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); } } -- 2.39.5