package pt.ist.vaadinframework.data.hints; import java.util.Arrays; import java.util.Collection; import pt.ist.vaadinframework.data.HintedProperty.Hint; import com.vaadin.data.Container; import com.vaadin.data.util.IndexedContainer; import com.vaadin.ui.AbstractSelect; import com.vaadin.ui.Field; public class Options implements Hint { private final Container container; private int captionMode = AbstractSelect.ITEM_CAPTION_MODE_EXPLICIT_DEFAULTS_ID; private Object captionPropertyId = null; public Options(Container container) { this.container = container; } public Options(Collection<?> options) { this(new IndexedContainer(options)); } public Options(Object... options) { this(Arrays.asList(options)); } /** * Sets the item caption mode. * * See also: {@link AbstractSelect#setItemCaptionMode(int) } * * @param captionMode * one of the modes defined in {@link AbstractSelect}. */ public Options mode(int captionMode) { Options options = new Options(container); options.captionMode = captionMode; options.captionPropertyId = captionPropertyId; return options; } public Options captionPropertyId(Object captionPropertyId) { Options options = new Options(container); options.captionMode = captionMode; options.captionPropertyId = captionPropertyId; return options; } @Override public Field applyHint(Field field) { ((AbstractSelect) field).setContainerDataSource(container); ((AbstractSelect) field).setItemCaptionMode(captionMode); ((AbstractSelect) field).setItemCaptionPropertyId(captionPropertyId); return field; } @Override public boolean appliesTo(Field field) { return field instanceof AbstractSelect; } }