com.holonplatform.vaadin.flow.components

## Interface Input<T>

- Type Parameters:
    `T` - Value type
  All Superinterfaces:
    HasComponent, com.vaadin.flow.component.HasElement, Serializable, ValueComponent<T>, ValueHolder<T,ValueHolder.ValueChangeEvent<T>>
  All Known Subinterfaces:
    MultiSelect<T>, SingleSelect<T>, ValidatableInput<T>, ValidatableMultiSelect<T>, ValidatableSingleSelect<T>

      public interface Input<T>
      extends ValueHolder<T,ValueHolder.ValueChangeEvent<T>>, ValueComponent<T>

  Input component representation, i.e. a UI component that has a user-editable value.

  Extends `ValueHolder` since handles a value, supporting `ValueChangeListener`s registration.

  The actual UI `Component` which represents the input component can be obtained through `HasComponent.getComponent()`.

  Since:
    5.2.0

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static interface` | `Input.InputPropertyRenderer<T>` A convenience interface with a fixed `Input` rendering type to use a `Input` `PropertyRenderer` as a functional interface.
    `static class` | `Input.InputValueConversionException` Exception used to notify Input values conversion errors.
    `static interface` | `Input.PropertyHandler<P,T,V extends com.vaadin.flow.component.HasValue<?,T>,C extends com.vaadin.flow.component.Component>` Input field/component property handler.

    - ### Nested classes/interfaces inherited from interface com.holonplatform.vaadin.flow.components.ValueHolder

      `ValueHolder.ValueChangeEvent<V>, ValueHolder.ValueChangeListener<V,E extends ValueHolder.ValueChangeEvent<V>>`

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `com.holonplatform.core.Registration` | `addReadonlyChangeListener(ReadonlyChangeListener listener)` Adds a read-only change listener, called when the read-only state changes.
    `default <A> Optional<A>` | `as(Class<A> type)` Get this `Input` component as the given object `type`, if available.
    `default com.vaadin.flow.component.HasValue<?,T>` | `asHasValue()` Get this `Input` as an `HasValue` component.
    `static BooleanInputBuilder` | `boolean_()` Gets a builder to create `Boolean` type `Input`s.
    `static <T,H extends com.vaadin.flow.component.Component & com.vaadin.flow.component.HasValue<?,T>> HasValueInputBuilder<T,H,H>` | `builder(H field)` Get a `HasValueInputBuilder` to create an `Input` using given `HasValue` `Component` field instance.
    `static <T,H extends com.vaadin.flow.component.HasValue<?,T>,C extends com.vaadin.flow.component.Component> HasValueInputBuilder<T,H,C>` | `builder(H field, C component)` Get a `HasValueInputBuilder` to create an `Input` using given `HasValue` and `Component` field instances.
    `static <T,V> InputConverterBuilder<T,V>` | `builder(Input<V> input, com.vaadin.flow.data.converter.Converter<V,T> converter)` Get a builder to configure and create a new `Input` from another `Input` with a different value type, using given `Converter` to perform value conversions.
    `static <T> Optional<Input<T>>` | `create(Class<T> type)` Create an `Input` to handle given value `type`, if available.
    `static <T> Input<T>` | `create(com.holonplatform.core.property.Property<T> property)` Create an `Input` component using given `Property` to detect the Input value type and the Input configuration.
    `static DateInputBuilder` | `date()` Gets a builder to create `Date` type `Input`s.
    `static DateTimeInputBuilder` | `dateTime()` Gets a builder to create `Date` type `Input`s with time (hours and minutes) support.
    `static <E extends Enum<E>> OptionsMultiSelectConfigurator.OptionsMultiSelectInputBuilder<E,E>` | `enumMultiSelect(Class<E> enumType)` Gets a builder to create a `MultiSelect` type `Input` for given `enum` type.
    `static <E extends Enum<E>> OptionsSingleSelectConfigurator.OptionsSingleSelectInputBuilder<E,E>` | `enumOptionSelect(Class<E> enumType)` Gets a builder to create a options mode `SingleSelect` type `Input` for given `enum` type.
    `static <E extends Enum<E>> FilterableSingleSelectConfigurator.FilterableSingleSelectInputBuilder<E,E>` | `enumSelect(Class<E> enumType)` Gets a builder to create a `SingleSelect` type `Input` for given `enum` type.
    `void` | `focus()` Sets the focus for this input component, if supported by concrete component implementation.
    `static <T,F extends com.vaadin.flow.component.Component & com.vaadin.flow.component.HasValue<?,T>> Input<T>` | `from(F field)` Create a `Input` component type from given `HasValue` component.
    `static <F extends com.vaadin.flow.component.Component & com.vaadin.flow.component.HasValue<?,V>,T,V> Input<T>` | `from(F field, com.vaadin.flow.data.converter.Converter<V,T> converter)` Create a new `Input` from given `HasValue` component with a different value type, using given `Converter` to perform value conversions.
    `static <F extends com.vaadin.flow.component.Component & com.vaadin.flow.component.HasValue<?,V>,T,V> Input<T>` | `from(F field, com.holonplatform.core.property.Property<T> property, com.holonplatform.core.property.PropertyValueConverter<T,V> converter)` Create a new `Input` from another `Input` with a different value type, using given `PropertyValueConverter` to perform value conversions.
    `static <T,V> Input<T>` | `from(Input<V> input, com.vaadin.flow.data.converter.Converter<V,T> converter)` Create a new `Input` from another `Input` with a different value type, using given `Converter` to perform value conversions.
    `static <T,V> Input<T>` | `from(Input<V> input, com.holonplatform.core.property.Property<T> property, com.holonplatform.core.property.PropertyValueConverter<T,V> converter)` Create a new `Input` from another `Input` with a different value type, using given `PropertyValueConverter` to perform value conversions.
    `default Optional<InvalidChangeEventNotifier>` | `hasInvalidChangeEventNotifier()` Checks whether this input supports invalid change events notification, using a `InvalidChangeEventNotifier`.
    `default Optional<HasPlaceholder>` | `hasPlaceholder()` Checks whether this component supports a placeholder, which text can be handled using the `HasPlaceholder` interface.
    `default Optional<HasTitle>` | `hasTitle()` Checks whether this component supports a title, which text can be handled using the `HasTitle` interface.
    `boolean` | `isReadOnly()` Returns whether this input component is in read-only mode or not.
    `boolean` | `isRequired()` Gets whether the field is required, i.e. a required indicator symbol is visible.
    `static LocalDateInputBuilder` | `localDate()` Gets a builder to create `LocalDate` type `Input`s.
    `static LocalDateTimeInputBuilder` | `localDateTime()` Gets a builder to create `LocalDateTime` type `Input`s.
    `static LocalTimeInputBuilder` | `localTime()` Gets a builder to create `LocalTime` type `Input`s.
    `static <T> OptionsMultiSelectConfigurator.OptionsMultiSelectInputBuilder<T,T>` | `multiOptionSelect(Class<T> type)` Gets a builder to create a options `MultiSelect` type `Input`, which uses a `CheckboxGroup` as input component.
    `static <T,ITEM> OptionsMultiSelectConfigurator.OptionsMultiSelectInputBuilder<T,ITEM>` | `multiOptionSelect(Class<T> type, Class<ITEM> itemType, ItemConverter<T,ITEM> itemConverter)` Gets a builder to create a options `MultiSelect` type `Input`, which uses a `CheckboxGroup` as input component.
    `static <T> OptionsMultiSelectConfigurator.PropertyOptionsMultiSelectInputBuilder<T>` | `multiOptionSelect(com.holonplatform.core.property.Property<T> selectionProperty)` Gets a builder to create a `Property` model based options `MultiSelect` type `Input`, which uses a `CheckboxGroup` as input component.
    `static <T> OptionsMultiSelectConfigurator.PropertyOptionsMultiSelectInputBuilder<T>` | `multiOptionSelect(com.holonplatform.core.property.Property<T> selectionProperty, Function<T,Optional<com.holonplatform.core.property.PropertyBox>> itemConverter)` Gets a builder to create a `Property` model based options `MultiSelect` type `Input`, which uses a `CheckboxGroup` as input component.
    `static <T extends Number> NumberInputBuilder<T>` | `number(Class<T> numberClass)` Gets a builder to create a numeric type `Input`.
    `static PasswordInputBuilder` | `password()` Gets a builder to create `String` type `Input`s which do not display user input on screen, used to enter secret text information, such as user passwords.
    `void` | `setReadOnly(boolean readOnly)` Sets the read-only mode of this input component.
    `void` | `setRequired(boolean required)` Sets whether the required indicator symbol is visible.
    `static <T> OptionsSingleSelectConfigurator.OptionsSingleSelectInputBuilder<T,T>` | `singleOptionSelect(Class<T> type)` Gets a builder to create a options `SingleSelect` type `Input`, which uses a `RadioButtonGroup` as input component.
    `static <T,ITEM> OptionsSingleSelectConfigurator.OptionsSingleSelectInputBuilder<T,ITEM>` | `singleOptionSelect(Class<T> type, Class<ITEM> itemType, ItemConverter<T,ITEM> itemConverter)` Gets a builder to create a options `SingleSelect` type `Input`, which uses a `RadioButtonGroup` as input component.
    `static <T> OptionsSingleSelectConfigurator.PropertyOptionsSingleSelectInputBuilder<T>` | `singleOptionSelect(com.holonplatform.core.property.Property<T> selectionProperty)` Gets a builder to create a `Property` model based options `SingleSelect` type `Input`, which uses a `RadioButtonGroup` as input component.
    `static <T> OptionsSingleSelectConfigurator.PropertyOptionsSingleSelectInputBuilder<T>` | `singleOptionSelect(com.holonplatform.core.property.Property<T> selectionProperty, Function<T,Optional<com.holonplatform.core.property.PropertyBox>> itemConverter)` Gets a builder to create a `Property` model based options `SingleSelect` type `Input`, which uses a `RadioButtonGroup` as input component.
    `static <T> FilterableSingleSelectConfigurator.FilterableSingleSelectInputBuilder<T,T>` | `singleSelect(Class<T> type)` Gets a builder to create a filterable `SingleSelect` type `Input`, which uses a `ComboBox` as input component.
    `static <T,ITEM> FilterableSingleSelectConfigurator.FilterableSingleSelectInputBuilder<T,ITEM>` | `singleSelect(Class<T> type, Class<ITEM> itemType, ItemConverter<T,ITEM> itemConverter)` Gets a builder to create a filterable `SingleSelect` type `Input`, which uses a `ComboBox` as input component.
    `static <T> FilterableSingleSelectConfigurator.PropertyFilterableSingleSelectInputBuilder<T>` | `singleSelect(com.holonplatform.core.property.Property<T> selectionProperty)` Gets a builder to create a `Property` model based filterable `SingleSelect` type `Input`, which uses a `ComboBox` as input component.
    `static <T> FilterableSingleSelectConfigurator.PropertyFilterableSingleSelectInputBuilder<T>` | `singleSelect(com.holonplatform.core.property.Property<T> selectionProperty, Function<T,Optional<com.holonplatform.core.property.PropertyBox>> itemConverter)` Gets a builder to create a `Property` model based filterable `SingleSelect` type `Input`, which uses a `ComboBox` as input component.
    `static <T> SingleSelectConfigurator.SingleSelectInputBuilder<T,T>` | `singleSimpleSelect(Class<T> type)` Gets a builder to create a simple `SingleSelect` type `Input`, which uses a `Select` as input component.
    `static <T,ITEM> SingleSelectConfigurator.SingleSelectInputBuilder<T,ITEM>` | `singleSimpleSelect(Class<T> type, Class<ITEM> itemType, ItemConverter<T,ITEM> itemConverter)` Gets a builder to create a simple `SingleSelect` type `Input`, which uses a `Select` as input component.
    `static <T> SingleSelectConfigurator.PropertySingleSelectInputBuilder<T>` | `singleSimpleSelect(com.holonplatform.core.property.Property<T> selectionProperty)` Gets a builder to create a `Property` model based simple `SingleSelect` type `Input`, which uses a `Select` as input component.
    `static <T> SingleSelectConfigurator.PropertySingleSelectInputBuilder<T>` | `singleSimpleSelect(com.holonplatform.core.property.Property<T> selectionProperty, Function<T,Optional<com.holonplatform.core.property.PropertyBox>> itemConverter)` Gets a builder to create a `Property` model based simple `SingleSelect` type `Input`, which uses a `Select` as input component.
    `static StringInputBuilder` | `string()` Gets a builder to a create `String` type `Input`.
    `static StringAreaInputBuilder` | `stringArea()` Gets a builder to create a multi-row `String` type `Input`.

    - ### Methods inherited from interface com.holonplatform.vaadin.flow.components.ValueHolder

      `addValueChangeListener, clear, getEmptyValue, getValue, getValueIfPresent, isEmpty, setValue`

    - ### Methods inherited from interface com.holonplatform.vaadin.flow.components.ValueComponent

      `getValue, hasValueChangeMode`

    - ### Methods inherited from interface com.holonplatform.vaadin.flow.components.HasComponent

      `create, getComponent, getElement, hasEnabled, hasLabel, hasSize, hasStyle, hasValidation, isVisible, setVisible`

- - ### Method Detail

    - #### setReadOnly

          void setReadOnly(boolean readOnly)

      Sets the read-only mode of this input component. The user can't change the value when in read-only mode.
      Parameters:
        `readOnly` - the read-only mode of this input component

    - #### isReadOnly

          boolean isReadOnly()

      Returns whether this input component is in read-only mode or not.
      Returns:
        `false` if the user can modify the value, `true` if not

    - #### addReadonlyChangeListener

          com.holonplatform.core.Registration addReadonlyChangeListener(ReadonlyChangeListener listener)

      Adds a read-only change listener, called when the read-only state changes.
      Parameters:
        `listener` - the read-only change listener to add (not null)
      Returns:
        a registration for the listener, which provides the remove operation

    - #### isRequired

          boolean isRequired()

      Gets whether the field is required, i.e. a required indicator symbol is visible.
      Returns:
        `true` if the field as required, `false` otherwise

    - #### setRequired

          void setRequired(boolean required)

      Sets whether the required indicator symbol is visible.
      Parameters:
        `required` - `true` to set the field as required, `false` otherwise

    - #### focus

          void focus()

      Sets the focus for this input component, if supported by concrete component implementation.

    - #### hasTitle

          default Optional<HasTitle> hasTitle()

      Checks whether this component supports a title, which text can be handled using the `HasTitle` interface.
      Returns:
        If this component supports a title, return the `HasTitle` reference. An empty Optional is returned otherwise.

    - #### hasPlaceholder

          default Optional<HasPlaceholder> hasPlaceholder()

      Checks whether this component supports a placeholder, which text can be handled using the `HasPlaceholder` interface.
      Returns:
        If this component supports a placeholder, return the `HasPlaceholder` reference. An empty Optional is returned otherwise.

    - #### hasInvalidChangeEventNotifier

          default Optional<InvalidChangeEventNotifier> hasInvalidChangeEventNotifier()

      Checks whether this input supports invalid change events notification, using a `InvalidChangeEventNotifier`.
      Returns:
        If this input supports invalid change events notification, return the `InvalidChangeEventNotifier` reference. An empty Optional is returned otherwise.

    - #### as

          default <A> Optional<A> as(Class<A> type)

      Get this `Input` component as the given object `type`, if available.
      Type Parameters:
        `A` - The object type
      Parameters:
        `type` - The object type to obtain (not null)
      Returns:
        Optional object instance of given type, empty if not available

    - #### asHasValue

          default com.vaadin.flow.component.HasValue<?,T> asHasValue()

      Get this `Input` as an `HasValue` component.
      Returns:
        The `HasValue` component

    - #### from

          static <T,F extends com.vaadin.flow.component.Component & com.vaadin.flow.component.HasValue<?,T>> Input<T> from(F field)

      Create a `Input` component type from given `HasValue` component.
      Type Parameters:
        `F` - `HasValue` component type
        `T` - Value type
      Parameters:
        `field` - The field instance (not null)
      Returns:
        A new `Input` component which wraps the given `field`

    - #### from

          static <T,V> Input<T> from(Input<V> input,
                                     com.vaadin.flow.data.converter.Converter<V,T> converter)

      Create a new `Input` from another `Input` with a different value type, using given `Converter` to perform value conversions.
      Type Parameters:
        `T` - New value type
        `V` - Original value type
      Parameters:
        `input` - Actual input (not null)
        `converter` - Value converter (not null)
      Returns:
        A new `Input` of the converted value type

    - #### from

          static <F extends com.vaadin.flow.component.Component & com.vaadin.flow.component.HasValue<?,V>,T,V> Input<T> from(F field,
                                                                                                                             com.vaadin.flow.data.converter.Converter<V,T> converter)

      Create a new `Input` from given `HasValue` component with a different value type, using given `Converter` to perform value conversions.
      Type Parameters:
        `F` - `HasValue` component type
        `T` - New value type
        `V` - Original value type
      Parameters:
        `field` - The field (not null)
        `converter` - Value converter (not null)
      Returns:
        A new `Input` of the converted value type

    - #### from

          static <T,V> Input<T> from(Input<V> input,
                                     com.holonplatform.core.property.Property<T> property,
                                     com.holonplatform.core.property.PropertyValueConverter<T,V> converter)

      Create a new `Input` from another `Input` with a different value type, using given `PropertyValueConverter` to perform value conversions.
      Type Parameters:
        `T` - New value type
        `V` - Original value type
      Parameters:
        `input` - Actual input (not null)
        `property` - Property to provide to the converter
        `converter` - Value converter (not null)
      Returns:
        A new `Input` of the converted value type

    - #### from

          static <F extends com.vaadin.flow.component.Component & com.vaadin.flow.component.HasValue<?,V>,T,V> Input<T> from(F field,
                                                                                                                             com.holonplatform.core.property.Property<T> property,
                                                                                                                             com.holonplatform.core.property.PropertyValueConverter<T,V> converter)

      Create a new `Input` from another `Input` with a different value type, using given `PropertyValueConverter` to perform value conversions.
      Type Parameters:
        `F` - `HasValue` component type
        `T` - New value type
        `V` - Original value type
      Parameters:
        `field` - The field (not null)
        `property` - Property to provide to the converter
        `converter` - Value converter (not null)
      Returns:
        A new `Input` of the converted value type

    - #### builder

          static <T,H extends com.vaadin.flow.component.Component & com.vaadin.flow.component.HasValue<?,T>> HasValueInputBuilder<T,H,H> builder(H field)

      Get a `HasValueInputBuilder` to create an `Input` using given `HasValue` `Component` field instance.
      Type Parameters:
        `T` - Value type
        `H` - Field type
      Parameters:
        `field` - `HasValue` `Component` field (not null)
      Returns:
        A new `HasValueInputBuilder`

    - #### builder

          static <T,H extends com.vaadin.flow.component.HasValue<?,T>,C extends com.vaadin.flow.component.Component> HasValueInputBuilder<T,H,C> builder(H field,
                                                                                                                                                         C component)

      Get a `HasValueInputBuilder` to create an `Input` using given `HasValue` and `Component` field instances.
      Type Parameters:
        `T` - Value type
        `H` - `HasValue` type
        `C` - `Component` type
      Parameters:
        `field` - `HasValue` field (not null)
        `component` - Field `Component` (not null)
      Returns:
        A new `HasValueInputBuilder`

    - #### builder

          static <T,V> InputConverterBuilder<T,V> builder(Input<V> input,
                                                          com.vaadin.flow.data.converter.Converter<V,T> converter)

      Get a builder to configure and create a new `Input` from another `Input` with a different value type, using given `Converter` to perform value conversions.
      Type Parameters:
        `T` - Presentation value type
        `V` - Model value type
      Parameters:
        `input` - The original input (not null)
        `converter` - The value converter (not null)
      Returns:
        A new `InputConverterBuilder`

    - #### create

          static <T> Input<T> create(com.holonplatform.core.property.Property<T> property)

      Create an `Input` component using given `Property` to detect the Input value type and the Input configuration.

      Any available `Input` type `PropertyRenderer` from the current `PropertyRendererRegistry` will be used to provide the `Input` instance.

      Type Parameters:
        `T` - Property and Input type
      Parameters:
        `property` - The property to use (not null)
      Returns:
        A new `Input` component with the same type of given `Property`
      Throws:
        `com.holonplatform.core.property.PropertyRendererRegistry.NoSuitableRendererAvailableException` - if a suitable `Input` type `PropertyRenderer` is not available
      See Also:
        `PropertyRendererRegistry`

    - #### string

          static StringInputBuilder string()

      Gets a builder to a create `String` type `Input`.
      Returns:
        A new `StringInputBuilder`

    - #### stringArea

          static StringAreaInputBuilder stringArea()

      Gets a builder to create a multi-row `String` type `Input`.
      Returns:
        A new `StringAreaInputBuilder`

    - #### password

          static PasswordInputBuilder password()

      Gets a builder to create `String` type `Input`s which do not display user input on screen, used to enter secret text information, such as user passwords.
      Returns:
        A new `PasswordInputBuilder`

    - #### localDate

          static LocalDateInputBuilder localDate()

      Gets a builder to create `LocalDate` type `Input`s.
      Returns:
        A `LocalDateInputBuilder`

    - #### localDateTime

          static LocalDateTimeInputBuilder localDateTime()

      Gets a builder to create `LocalDateTime` type `Input`s.
      Returns:
        A `LocalDateTimeInputBuilder`

    - #### localTime

          static LocalTimeInputBuilder localTime()

      Gets a builder to create `LocalTime` type `Input`s.
      Returns:
        A `LocalTimeInputBuilder`

    - #### date

          static DateInputBuilder date()

      Gets a builder to create `Date` type `Input`s.

      This Input use the `Date` type only for simple date representations (day, month, year), i.e. without the time part.

      Returns:
        A `DateInputBuilder`

    - #### dateTime

          static DateTimeInputBuilder dateTime()

      Gets a builder to create `Date` type `Input`s with time (hours and minutes) support.

      Only the hours and minutes time parts are supported.

      Returns:
        A `DateTimeInputBuilder`

    - #### boolean_

          static BooleanInputBuilder boolean_()

      Gets a builder to create `Boolean` type `Input`s.
      Returns:
        A `BooleanInputBuilder`

    - #### number

          static <T extends Number> NumberInputBuilder<T> number(Class<T> numberClass)

      Gets a builder to create a numeric type `Input`.
      Type Parameters:
        `T` - Number type
      Parameters:
        `numberClass` - Number class (not null)
      Returns:
        A new `NumberInputBuilder`

    - #### singleSelect

          static <T> FilterableSingleSelectConfigurator.FilterableSingleSelectInputBuilder<T,T> singleSelect(Class<T> type)

      Gets a builder to create a filterable `SingleSelect` type `Input`, which uses a `ComboBox` as input component.

      This builder can be used when the selection items type and the selection value type are consistent. Use `singleSelect(Class, Class, ItemConverter)` if not.

      Type Parameters:
        `T` - Value type
      Parameters:
        `type` - Selection value type (not null)
      Returns:
        A new `FilterableSingleSelectConfigurator.FilterableSingleSelectInputBuilder`

    - #### singleSelect

          static <T,ITEM> FilterableSingleSelectConfigurator.FilterableSingleSelectInputBuilder<T,ITEM> singleSelect(Class<T> type,
                                                                                                                     Class<ITEM> itemType,
                                                                                                                     ItemConverter<T,ITEM> itemConverter)

      Gets a builder to create a filterable `SingleSelect` type `Input`, which uses a `ComboBox` as input component.

      This builder can be used when the selection items type and the selection value type are not consistent (i.e. of different type). When the the selection item and the selection value types are consistent, the `singleSelect(Class)` method can be used.

      Type Parameters:
        `T` - Value type
        `ITEM` - Item type
      Parameters:
        `type` - Selection value type (not null)
        `itemType` - Selection items type (not null)
        `itemConverter` - The item converter to use to convert a selection item into a selection (Input) value and back (not null)
      Returns:
        A new `FilterableSingleSelectConfigurator.FilterableSingleSelectInputBuilder`

    - #### singleSelect

          static <T> FilterableSingleSelectConfigurator.PropertyFilterableSingleSelectInputBuilder<T> singleSelect(com.holonplatform.core.property.Property<T> selectionProperty)

      Gets a builder to create a `Property` model based filterable `SingleSelect` type `Input`, which uses a `ComboBox` as input component.
      Type Parameters:
        `T` - Value type
      Parameters:
        `selectionProperty` - The property to use to represent the selection value (not null)
      Returns:
        A new `FilterableSingleSelectConfigurator.PropertyFilterableSingleSelectInputBuilder`

    - #### singleSelect

          static <T> FilterableSingleSelectConfigurator.PropertyFilterableSingleSelectInputBuilder<T> singleSelect(com.holonplatform.core.property.Property<T> selectionProperty,
                                                                                                                   Function<T,Optional<com.holonplatform.core.property.PropertyBox>> itemConverter)

      Gets a builder to create a `Property` model based filterable `SingleSelect` type `Input`, which uses a `ComboBox` as input component.
      Type Parameters:
        `T` - Value type
      Parameters:
        `selectionProperty` - The property to use to represent the selection value (not null)
        `itemConverter` - The function to use to convert a selection value into the corresponding `PropertyBox` item
      Returns:
        A new `FilterableSingleSelectConfigurator.PropertyFilterableSingleSelectInputBuilder`

    - #### singleSimpleSelect

          static <T> SingleSelectConfigurator.SingleSelectInputBuilder<T,T> singleSimpleSelect(Class<T> type)

      Gets a builder to create a simple `SingleSelect` type `Input`, which uses a `Select` as input component.

      This builder can be used when the selection items type and the selection value type are consistent. Use `singleSelect(Class, Class, ItemConverter)` if not.

      Type Parameters:
        `T` - Value type
      Parameters:
        `type` - Selection value type (not null)
      Returns:
        A new `SingleSelectConfigurator.SingleSelectInputBuilder`

    - #### singleSimpleSelect

          static <T,ITEM> SingleSelectConfigurator.SingleSelectInputBuilder<T,ITEM> singleSimpleSelect(Class<T> type,
                                                                                                       Class<ITEM> itemType,
                                                                                                       ItemConverter<T,ITEM> itemConverter)

      Gets a builder to create a simple `SingleSelect` type `Input`, which uses a `Select` as input component.

      This builder can be used when the selection items type and the selection value type are not consistent (i.e. of different type). When the the selection item and the selection value types are consistent, the `singleSelect(Class)` method can be used.

      Type Parameters:
        `T` - Value type
        `ITEM` - Item type
      Parameters:
        `type` - Selection value type (not null)
        `itemType` - Selection items type (not null)
        `itemConverter` - The item converter to use to convert a selection item into a selection (Input) value and back (not null)
      Returns:
        A new `SingleSelectConfigurator.SingleSelectInputBuilder`

    - #### singleSimpleSelect

          static <T> SingleSelectConfigurator.PropertySingleSelectInputBuilder<T> singleSimpleSelect(com.holonplatform.core.property.Property<T> selectionProperty)

      Gets a builder to create a `Property` model based simple `SingleSelect` type `Input`, which uses a `Select` as input component.
      Type Parameters:
        `T` - Value type
      Parameters:
        `selectionProperty` - The property to use to represent the selection value (not null)
      Returns:
        A new `SingleSelectConfigurator.PropertySingleSelectInputBuilder`

    - #### singleSimpleSelect

          static <T> SingleSelectConfigurator.PropertySingleSelectInputBuilder<T> singleSimpleSelect(com.holonplatform.core.property.Property<T> selectionProperty,
                                                                                                     Function<T,Optional<com.holonplatform.core.property.PropertyBox>> itemConverter)

      Gets a builder to create a `Property` model based simple `SingleSelect` type `Input`, which uses a `Select` as input component.
      Type Parameters:
        `T` - Value type
      Parameters:
        `selectionProperty` - The property to use to represent the selection value (not null)
        `itemConverter` - The function to use to convert a selection value into the corresponding `PropertyBox` item
      Returns:
        A new `SingleSelectConfigurator.PropertySingleSelectInputBuilder`

    - #### singleOptionSelect

          static <T> OptionsSingleSelectConfigurator.OptionsSingleSelectInputBuilder<T,T> singleOptionSelect(Class<T> type)

      Gets a builder to create a options `SingleSelect` type `Input`, which uses a `RadioButtonGroup` as input component.

      This builder can be used when the selection items type and the selection value type are consistent. Use `singleOptionSelect(Class, Class, ItemConverter)` if not.

      Type Parameters:
        `T` - Value type
      Parameters:
        `type` - Selection value type (not null)
      Returns:
        A new `OptionsSingleSelectConfigurator.OptionsSingleSelectInputBuilder`

    - #### singleOptionSelect

          static <T,ITEM> OptionsSingleSelectConfigurator.OptionsSingleSelectInputBuilder<T,ITEM> singleOptionSelect(Class<T> type,
                                                                                                                     Class<ITEM> itemType,
                                                                                                                     ItemConverter<T,ITEM> itemConverter)

      Gets a builder to create a options `SingleSelect` type `Input`, which uses a `RadioButtonGroup` as input component.

      This builder can be used when the selection items type and the selection value type are not consistent (i.e. of different type). When the the selection item and the selection value types are consistent, the `singleOptionSelect(Class)` method can be used.

      Type Parameters:
        `T` - Value type
        `ITEM` - Item type
      Parameters:
        `type` - Selection value type (not null)
        `itemType` - Selection items type (not null)
        `itemConverter` - The item converter to use to convert a selection item into a selection (Input) value and back (not null)
      Returns:
        A new `OptionsSingleSelectConfigurator.OptionsSingleSelectInputBuilder`

    - #### singleOptionSelect

          static <T> OptionsSingleSelectConfigurator.PropertyOptionsSingleSelectInputBuilder<T> singleOptionSelect(com.holonplatform.core.property.Property<T> selectionProperty)

      Gets a builder to create a `Property` model based options `SingleSelect` type `Input`, which uses a `RadioButtonGroup` as input component.
      Type Parameters:
        `T` - Value type
      Parameters:
        `selectionProperty` - The property to use to represent the selection value (not null)
      Returns:
        A new `OptionsSingleSelectConfigurator.PropertyOptionsSingleSelectInputBuilder`

    - #### singleOptionSelect

          static <T> OptionsSingleSelectConfigurator.PropertyOptionsSingleSelectInputBuilder<T> singleOptionSelect(com.holonplatform.core.property.Property<T> selectionProperty,
                                                                                                                   Function<T,Optional<com.holonplatform.core.property.PropertyBox>> itemConverter)

      Gets a builder to create a `Property` model based options `SingleSelect` type `Input`, which uses a `RadioButtonGroup` as input component.
      Type Parameters:
        `T` - Value type
      Parameters:
        `selectionProperty` - The property to use to represent the selection value (not null)
        `itemConverter` - The function to use to convert a selection value into the corresponding `PropertyBox` item
      Returns:
        A new `OptionsSingleSelectConfigurator.PropertyOptionsSingleSelectInputBuilder`

    - #### multiOptionSelect

          static <T> OptionsMultiSelectConfigurator.OptionsMultiSelectInputBuilder<T,T> multiOptionSelect(Class<T> type)

      Gets a builder to create a options `MultiSelect` type `Input`, which uses a `CheckboxGroup` as input component.

      This builder can be used when the selection items type and the selection value type are consistent. Use `multiOptionSelect(Class, Class, ItemConverter)` if not.

      Type Parameters:
        `T` - Value type
      Parameters:
        `type` - Selection value type (not null)
      Returns:
        A new `OptionsMultiSelectConfigurator.OptionsMultiSelectInputBuilder`

    - #### multiOptionSelect

          static <T,ITEM> OptionsMultiSelectConfigurator.OptionsMultiSelectInputBuilder<T,ITEM> multiOptionSelect(Class<T> type,
                                                                                                                  Class<ITEM> itemType,
                                                                                                                  ItemConverter<T,ITEM> itemConverter)

      Gets a builder to create a options `MultiSelect` type `Input`, which uses a `CheckboxGroup` as input component.

      This builder can be used when the selection items type and the selection value type are not consistent (i.e. of different type). When the the selection item and the selection value types are consistent, the `multiOptionSelect(Class)` method can be used.

      Type Parameters:
        `T` - Value type
        `ITEM` - Item type
      Parameters:
        `type` - Selection value type (not null)
        `itemType` - Selection items type (not null)
        `itemConverter` - The item converter to use to convert a selection item into a selection (Input) value and back (not null)
      Returns:
        A new `OptionsMultiSelectConfigurator.OptionsMultiSelectInputBuilder`

    - #### multiOptionSelect

          static <T> OptionsMultiSelectConfigurator.PropertyOptionsMultiSelectInputBuilder<T> multiOptionSelect(com.holonplatform.core.property.Property<T> selectionProperty)

      Gets a builder to create a `Property` model based options `MultiSelect` type `Input`, which uses a `CheckboxGroup` as input component.
      Type Parameters:
        `T` - Value type
      Parameters:
        `selectionProperty` - The property to use to represent the selection value (not null)
      Returns:
        A new `OptionsMultiSelectConfigurator.PropertyOptionsMultiSelectInputBuilder`

    - #### multiOptionSelect

          static <T> OptionsMultiSelectConfigurator.PropertyOptionsMultiSelectInputBuilder<T> multiOptionSelect(com.holonplatform.core.property.Property<T> selectionProperty,
                                                                                                                Function<T,Optional<com.holonplatform.core.property.PropertyBox>> itemConverter)

      Gets a builder to create a `Property` model based options `MultiSelect` type `Input`, which uses a `CheckboxGroup` as input component.
      Type Parameters:
        `T` - Value type
      Parameters:
        `selectionProperty` - The property to use to represent the selection value (not null)
        `itemConverter` - The function to use to convert a selection value into the corresponding `PropertyBox` item
      Returns:
        A new `OptionsMultiSelectConfigurator.PropertyOptionsMultiSelectInputBuilder`

    - #### enumSelect

          static <E extends Enum<E>> FilterableSingleSelectConfigurator.FilterableSingleSelectInputBuilder<E,E> enumSelect(Class<E> enumType)

      Gets a builder to create a `SingleSelect` type `Input` for given `enum` type.

      All the enum constants declared for the given enum type will be available as selection items.

      Type Parameters:
        `E` - Enum type
      Parameters:
        `enumType` - Enum type (not null)
      Returns:
        A new `FilterableSingleSelectConfigurator.FilterableSingleSelectInputBuilder`

    - #### enumOptionSelect

          static <E extends Enum<E>> OptionsSingleSelectConfigurator.OptionsSingleSelectInputBuilder<E,E> enumOptionSelect(Class<E> enumType)

      Gets a builder to create a options mode `SingleSelect` type `Input` for given `enum` type.

      All the enum constants declared for the given enum type will be available as selection items.

      Type Parameters:
        `E` - Enum type
      Parameters:
        `enumType` - Enum type (not null)
      Returns:
        A new `OptionsSingleSelectConfigurator.OptionsSingleSelectInputBuilder`

    - #### enumMultiSelect

          static <E extends Enum<E>> OptionsMultiSelectConfigurator.OptionsMultiSelectInputBuilder<E,E> enumMultiSelect(Class<E> enumType)

      Gets a builder to create a `MultiSelect` type `Input` for given `enum` type.

      All the enum constants declared for the given enum type will be available as selection items.

      Type Parameters:
        `E` - Enum type
      Parameters:
        `enumType` - Enum type (not null)
      Returns:
        A new `OptionsMultiSelectConfigurator.OptionsMultiSelectInputBuilder`

    - #### create

          static <T> Optional<Input<T>> create(Class<T> type)

      Create an `Input` to handle given value `type`, if available.
      Type Parameters:
        `T` - Value type
      Parameters:
        `type` - The value type (not null)
      Returns:
        Optional `Input` component

Copyright © 2019 The Holon Platform. All rights reserved.