All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.dellroad.stuff.vaadin8.EnumComboBox Maven / Gradle / Ivy

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