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);
}
\r
private boolean nullSelectionAllowed = true;\r
\r
+ private boolean nullSelectionItemAvailable = false;\r
+\r
/**\r
* Widget holding the different options (e.g. ListBox or Panel for radio\r
* buttons) (optional, fallbacks to container Panel)\r
return immediate;\r
}\r
\r
- protected void setImmediate(boolean immediate) {\r
- this.immediate = immediate;\r
- }\r
-\r
protected boolean isMultiselect() {\r
return multiselect;\r
}\r
\r
- protected void setMultiselect(boolean multiselect) {\r
- this.multiselect = multiselect;\r
- }\r
-\r
protected boolean isDisabled() {\r
return disabled;\r
}\r
\r
- protected void setDisabled(boolean disabled) {\r
- this.disabled = disabled;\r
- }\r
-\r
protected boolean isReadonly() {\r
return readonly;\r
}\r
\r
- protected void setReadonly(boolean readonly) {\r
- this.readonly = readonly;\r
- }\r
-\r
- protected void setNullSelectionAllowed(boolean nullSelectionAllowed) {\r
- this.nullSelectionAllowed = nullSelectionAllowed;\r
- }\r
-\r
protected boolean isNullSelectionAllowed() {\r
return nullSelectionAllowed;\r
}\r
\r
+ protected boolean isNullSelectionItemAvailable() {\r
+ return nullSelectionItemAvailable;\r
+ }\r
+\r
public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {\r
this.client = client;\r
id = uidl.getId();\r
multiselect = "multi".equals(uidl.getStringAttribute("selectmode"));\r
immediate = uidl.getBooleanAttribute("immediate");\r
nullSelectionAllowed = uidl.getBooleanAttribute("nullselect");\r
+ nullSelectionItemAvailable = uidl.getBooleanAttribute("nullselectitem");\r
\r
UIDL ops = uidl.getChildUIDL(0);\r
\r
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