package org.vaadin.viritin.fields; import java.util.Arrays; import java.util.Collection; import org.vaadin.viritin.fluency.ui.FluentAbstractField; import com.vaadin.ui.ComboBox; import com.vaadin.ui.ItemCaptionGenerator; /** * A field that can be easily used to edit enumeration types. * * @param <T> the type of Enum edited by this field */ public class EnumSelect<T extends Enum<T>> extends ComboBox<T> implements FluentAbstractField<EnumSelect<T>, T> { private static final long serialVersionUID = 6512803610855055709L; public EnumSelect(Class<T> enumClass) { this(null, enumClass); } public EnumSelect(String caption, Class<T> enumClass) { super(caption, getConstantList(enumClass)); } public EnumSelect<T> withItemCaptionGenerator(ItemCaptionGenerator<T> itemCaptionGenerator) { setItemCaptionGenerator(itemCaptionGenerator); return this; } private static <T extends Enum<T>> Collection<T> getConstantList(Class<T> enumClass) { final T[] constants=enumClass.getEnumConstants(); return Arrays.asList(constants); } }