org.dellroad.stuff.vaadin8.EnumComboBox Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dellroad-stuff-vaadin8 Show documentation
Show all versions of dellroad-stuff-vaadin8 Show documentation
DellRoad Stuff classes related to Vaadin 8.x.
The newest version!
/*
* Copyright (C) 2022 Archie L. Cobbs. All rights reserved.
*/
package org.dellroad.stuff.vaadin8;
import com.vaadin.ui.ComboBox;
import java.util.EnumSet;
/**
* {@link ComboBox} that chooses an {@link Enum} value.
*
* @param enum type
*/
@SuppressWarnings("serial")
public class EnumComboBox> extends ComboBox {
private Class enumClass;
/**
* Default constructor.
*
*
* Caller must separately invoke {@link #setEnumClass}.
*/
public EnumComboBox() {
this(null);
}
/**
* Convenience constructor.
*
*
* Equivalent to:
*
* EnumComboBox(enumClass, true);
*
*
* @param enumClass enum type, or null to leave unset
*/
public EnumComboBox(Class enumClass) {
this(enumClass, true);
}
/**
* Primary constructor.
*
* @param enumClass enum type, or null to leave unset
* @param allowEmpty true to allow an empty selection, false otherwise
*/
public EnumComboBox(Class enumClass, boolean allowEmpty) {
this.setItemCaptionGenerator(T::toString);
this.setEmptySelectionAllowed(allowEmpty);
if (enumClass != null)
this.setEnumClass(enumClass);
}
/**
* Set the enum class.
*
* @param enumClass enum type
* @throws IllegalArgumentException if {@code enumClass} is null
*/
public void setEnumClass(Class enumClass) {
if (enumClass == null)
throw new IllegalArgumentException("null enumClass");
final EnumSet enums = EnumSet.allOf(enumClass);
this.setItems(enums);
if (!this.isEmptySelectionAllowed() && !enums.isEmpty())
this.setSelectedItem(enums.iterator().next());
this.enumClass = enumClass;
}
/**
* Get the enum class.
*
* @return enum type
*/
public Class getEnumClass() {
return this.enumClass;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy