diff options
3 files changed, 16 insertions, 30 deletions
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 |