package au.com.vaadinutils.jasper.parameter; import au.com.vaadinutils.crud.FormHelper; import au.com.vaadinutils.jasper.scheduler.entities.DateParameterType; import com.vaadin.ui.ComboBox; import com.vaadin.ui.Component; public class ReportParameterEnum<T extends Enum<T>> extends ReportParameter<Enum<T>> { private ComboBox field; private Class<T> enumClass; /** * * @param caption * @param defaultValue * @param parameterName * @param enumClass */ public ReportParameterEnum(String caption, T defaultValue, String parameterName, Class<T> enumClass) { super(caption, parameterName); field = new ComboBox(caption); this.enumClass = enumClass; field.setContainerDataSource(FormHelper.createContainerFromEnumClass("value", enumClass)); field.setNewItemsAllowed(false); field.setNullSelectionAllowed(false); field.setTextInputAllowed(false); field.setValue(defaultValue); } @Override public String getValue(String parameterName) { return field.getValue().toString(); } @Override public Component getComponent() { return field; } @Override public boolean shouldExpand() { return false; } @Override public void setDefaultValue(Enum<T> defaultValue) { field.setValue(defaultValue); } @Override public String getExpectedParameterClassName() { return String.class.getCanonicalName(); } @Override public String getDisplayValue(String parameterName) { return getValue(null); } @Override public boolean validate() { return true; } @Override public void setValueAsString(String value, String parameterName) { field.setValue(Enum.valueOf(enumClass, value)); } @Override public boolean isDateField() { return false; } @Override public DateParameterType getDateParameterType() { throw new RuntimeException("Not implemented"); } }