From: Marc Englund Date: Wed, 14 Nov 2007 14:49:27 +0000 (+0000) Subject: Don't generate nullselection item if one is in the uidl. X-Git-Tag: 6.7.0.beta1~5585 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=39a1152a248eca61472ddeda19aefa38e60fc2b7;p=vaadin-framework.git Don't generate nullselection item if one is in the uidl. svn changeset:2811/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IListSelect.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IListSelect.java index 72a0b9608d..3b65a6aa9e 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IListSelect.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IListSelect.java @@ -30,7 +30,8 @@ public class IListSelect extends IOptionGroupBase { select.setMultipleSelect(isMultiselect()); select.setEnabled(!isDisabled() && !isReadonly()); select.clear(); - if (!isMultiselect() && isNullSelectionAllowed()) { + if (!isMultiselect() && isNullSelectionAllowed() + && !isNullSelectionItemAvailable()) { // can't unselect last item in singleselect mode select.addItem("", null); } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IOptionGroupBase.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IOptionGroupBase.java index 53ad398e98..5a1d624eef 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IOptionGroupBase.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IOptionGroupBase.java @@ -34,6 +34,8 @@ abstract class IOptionGroupBase extends Composite implements Paintable, private boolean nullSelectionAllowed = true; + private boolean nullSelectionItemAvailable = false; + /** * Widget holding the different options (e.g. ListBox or Panel for radio * buttons) (optional, fallbacks to container Panel) @@ -72,42 +74,26 @@ abstract class IOptionGroupBase extends Composite implements Paintable, return immediate; } - protected void setImmediate(boolean immediate) { - this.immediate = immediate; - } - protected boolean isMultiselect() { return multiselect; } - protected void setMultiselect(boolean multiselect) { - this.multiselect = multiselect; - } - protected boolean isDisabled() { return disabled; } - protected void setDisabled(boolean disabled) { - this.disabled = disabled; - } - protected boolean isReadonly() { return readonly; } - protected void setReadonly(boolean readonly) { - this.readonly = readonly; - } - - protected void setNullSelectionAllowed(boolean nullSelectionAllowed) { - this.nullSelectionAllowed = nullSelectionAllowed; - } - protected boolean isNullSelectionAllowed() { return nullSelectionAllowed; } + protected boolean isNullSelectionItemAvailable() { + return nullSelectionItemAvailable; + } + public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { this.client = client; id = uidl.getId(); @@ -123,6 +109,7 @@ abstract class IOptionGroupBase extends Composite implements Paintable, multiselect = "multi".equals(uidl.getStringAttribute("selectmode")); immediate = uidl.getBooleanAttribute("immediate"); nullSelectionAllowed = uidl.getBooleanAttribute("nullselect"); + nullSelectionItemAvailable = uidl.getBooleanAttribute("nullselectitem"); UIDL ops = uidl.getChildUIDL(0); diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ISelect.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ISelect.java index a062207fc8..6c86316389 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ISelect.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ISelect.java @@ -11,26 +11,24 @@ public class ISelect extends IOptionGroupBase { public static final String CLASSNAME = "i-select"; - private static final int VISIBLE_COUNT = 10; - protected ListBox select; public ISelect() { - super(new ListBox(), CLASSNAME); + super(new ListBox(false), CLASSNAME); select = (ListBox) optionsContainer; + select.setVisibleItemCount(1); select.addChangeListener(this); select.setStyleName(CLASSNAME + "-select"); + } protected void buildOptions(UIDL uidl) { - select.setMultipleSelect(isMultiselect()); - if (isMultiselect()) { - select.setVisibleItemCount(VISIBLE_COUNT); - } else { - select.setVisibleItemCount(1); - } select.setEnabled(!isDisabled() && !isReadonly()); select.clear(); + if (isNullSelectionAllowed() && !isNullSelectionItemAvailable()) { + // can't unselect last item in singleselect mode + select.addItem("", null); + } for (Iterator i = uidl.getChildIterator(); i.hasNext();) { UIDL optionUidl = (UIDL) i.next(); select.addItem(optionUidl.getStringAttribute("caption"), optionUidl