Class MapField<K,V>

java.lang.Object
com.vaadin.flow.component.Component
com.vaadin.flow.component.AbstractField<com.vaadin.flow.component.customfield.CustomField<T>,T>
com.vaadin.flow.component.customfield.CustomField<Map<K,V>>
org.vaadin.miki.superfields.collections.MapField<K,V>
All Implemented Interfaces:
com.vaadin.flow.component.AttachNotifier, com.vaadin.flow.component.BlurNotifier<com.vaadin.flow.component.customfield.CustomField<Map<K,V>>>, com.vaadin.flow.component.DetachNotifier, com.vaadin.flow.component.Focusable<com.vaadin.flow.component.customfield.CustomField<Map<K,V>>>, com.vaadin.flow.component.FocusNotifier<com.vaadin.flow.component.customfield.CustomField<Map<K,V>>>, com.vaadin.flow.component.HasElement, com.vaadin.flow.component.HasEnabled, com.vaadin.flow.component.HasHelper, com.vaadin.flow.component.HasLabel, com.vaadin.flow.component.HasSize, com.vaadin.flow.component.HasStyle, com.vaadin.flow.component.HasTheme, com.vaadin.flow.component.HasValidation, com.vaadin.flow.component.HasValue<com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<com.vaadin.flow.component.customfield.CustomField<Map<K,V>>,Map<K,V>>,Map<K,V>>, com.vaadin.flow.component.HasValueAndElement<com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<com.vaadin.flow.component.customfield.CustomField<Map<K,V>>,Map<K,V>>,Map<K,V>>, com.vaadin.flow.component.shared.HasTooltip, com.vaadin.flow.component.shared.HasValidationProperties, Serializable, HasHelperPositionable, HasId, HasLabelPositionable, WithHelperMixin<MapField<K,V>>, WithHelperPositionableMixin<MapField<K,V>>, WithIdMixin<MapField<K,V>>, WithLabelMixin<MapField<K,V>>, WithLabelPositionableMixin<MapField<K,V>>, WithValueMixin<com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<com.vaadin.flow.component.customfield.CustomField<Map<K,V>>,Map<K,V>>,Map<K,V>,MapField<K,V>>, HasCollectionElementFilter<Map.Entry<K,V>>, HasCollectionValueComponentProvider<Map.Entry<K,V>>, WithCollectionElementFilterMixin<Map.Entry<K,V>,MapField<K,V>>, WithCollectionValueComponentProviderMixin<Map.Entry<K,V>,MapField<K,V>>

@CssImport(value="./styles/label-positions.css", themeFor="vaadin-custom-field") public class MapField<K,V> extends com.vaadin.flow.component.customfield.CustomField<Map<K,V>> implements com.vaadin.flow.component.HasStyle, WithIdMixin<MapField<K,V>>, WithValueMixin<com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<com.vaadin.flow.component.customfield.CustomField<Map<K,V>>,Map<K,V>>,Map<K,V>,MapField<K,V>>, WithHelperPositionableMixin<MapField<K,V>>, WithHelperMixin<MapField<K,V>>, WithLabelMixin<MapField<K,V>>, WithCollectionValueComponentProviderMixin<Map.Entry<K,V>,MapField<K,V>>, WithCollectionElementFilterMixin<Map.Entry<K,V>,MapField<K,V>>, WithLabelPositionableMixin<MapField<K,V>>
Basic field to support values that are Maps. This basically forwards everything to a CollectionField and wraps the value in a Map. It also expects a component capable of displaying values of type Map.Entry.
Since:
2022-04-08
Author:
miki
See Also:
  • Nested Class Summary

    Nested classes/interfaces inherited from class com.vaadin.flow.component.AbstractField

    com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<C extends com.vaadin.flow.component.Component,V extends Object>

    Nested classes/interfaces inherited from interface com.vaadin.flow.component.BlurNotifier

    com.vaadin.flow.component.BlurNotifier.BlurEvent<C extends com.vaadin.flow.component.Component>

    Nested classes/interfaces inherited from interface com.vaadin.flow.component.FocusNotifier

    com.vaadin.flow.component.FocusNotifier.FocusEvent<C extends com.vaadin.flow.component.Component>

    Nested classes/interfaces inherited from interface com.vaadin.flow.component.HasValue

    com.vaadin.flow.component.HasValue.ValueChangeEvent<V extends Object>, com.vaadin.flow.component.HasValue.ValueChangeListener<E extends com.vaadin.flow.component.HasValue.ValueChangeEvent<?>>
  • Field Summary

    Fields inherited from interface org.vaadin.miki.markers.HasHelperPositionable

    HELPER_ABOVE_THEME_VARIANT

    Fields inherited from interface org.vaadin.miki.markers.HasLabelPositionable

    LABEL_POSITION_ATTRIBUTE, LABEL_POSITION_DETAILS_ATTRIBUTE
  • Constructor Summary

    Constructors
    Constructor
    Description
    MapField(com.vaadin.flow.function.SerializableSupplier<C> entryComponentProvider)
    Creates a new MapField with given entry component provider.
    MapField(com.vaadin.flow.function.SerializableSupplier<Map<K,V>> emptyMapSupplier, Supplier<L> layoutProvider, com.vaadin.flow.function.SerializableSupplier<C> entryComponentProvider)
    Creates a new MapField with given empty map supplier, layout provider and entry component provider.
    MapField(com.vaadin.flow.function.SerializableSupplier<Map<K,V>> emptyMapSupplier, CollectionLayoutProvider<?> mainLayoutProvider, CollectionValueComponentProvider<Map.Entry<K,V>,?> entryValueComponentProvider)
    Creates a new MapField using given empty map provider, and layout and entry component providers for the underlying CollectionField.
    MapField(Supplier<L> layoutProvider, com.vaadin.flow.function.SerializableSupplier<C> entryComponentProvider)
    Creates a new MapField with given layout provider and entry component provider.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
     
    protected Map<K,V>
     
    com.vaadin.flow.function.SerializablePredicate<Map.Entry<K,V>>
    Returns current value filter.
    <W extends com.vaadin.flow.component.Component & com.vaadin.flow.component.HasValue<?, Map.Entry<K, V>>>
    CollectionValueComponentProvider<Map.Entry<K,V>,W>
    Returns the current provider used to generate components.
    static <X, Y> com.vaadin.flow.function.SerializablePredicate<Map.Entry<X,Y>>
    Produces a non-null entry filter (entry, its key and its value must be non-null).
    void
    setCollectionElementFilter(com.vaadin.flow.function.SerializablePredicate<Map.Entry<K,V>> collectionElementFilter)
    Sets a value filter.
    void
    Sets the provider used to generate components for each element of the collection.
    protected void
     
    void
    setReadOnly(boolean readOnly)
     

    Methods inherited from class com.vaadin.flow.component.customfield.CustomField

    add, addThemeVariants, getLabel, onAttach, remove, removeThemeVariants, setLabel, updateValue

    Methods inherited from class com.vaadin.flow.component.AbstractField

    addValueChangeListener, getEmptyValue, getValue, isEmpty, setModelValue, setValue, valueEquals

    Methods inherited from class com.vaadin.flow.component.Component

    addListener, findAncestor, fireEvent, from, get, getChildren, getElement, getEventBus, getId, getListeners, getLocale, getParent, getTranslation, getTranslation, getTranslation, getTranslation, getTranslation, getTranslation, getUI, hasListener, isAttached, isTemplateMapped, isVisible, onDetach, onEnabledStateChanged, removeFromParent, scrollIntoView, scrollIntoView, set, setElement, setId, setVisible

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface com.vaadin.flow.component.AttachNotifier

    addAttachListener

    Methods inherited from interface com.vaadin.flow.component.BlurNotifier

    addBlurListener

    Methods inherited from interface com.vaadin.flow.component.DetachNotifier

    addDetachListener

    Methods inherited from interface com.vaadin.flow.component.Focusable

    addFocusShortcut, blur, getTabIndex, setTabIndex

    Methods inherited from interface com.vaadin.flow.component.FocusNotifier

    addFocusListener

    Methods inherited from interface com.vaadin.flow.component.HasElement

    getElement

    Methods inherited from interface com.vaadin.flow.component.HasEnabled

    isEnabled, setEnabled

    Methods inherited from interface com.vaadin.flow.component.HasHelper

    getHelperComponent, getHelperText, setHelperComponent, setHelperText

    Methods inherited from interface org.vaadin.miki.markers.HasHelperPositionable

    isHelperAbove, setHelperAbove, setHelperAbove, setHelperBelow

    Methods inherited from interface org.vaadin.miki.markers.HasId

    getId, setId

    Methods inherited from interface com.vaadin.flow.component.HasLabel

    getLabel, setLabel

    Methods inherited from interface org.vaadin.miki.markers.HasLabelPositionable

    getLabelPosition, setLabelPosition

    Methods inherited from interface com.vaadin.flow.component.HasSize

    getHeight, getHeightUnit, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getWidth, getWidthUnit, setHeight, setHeight, setHeightFull, setMaxHeight, setMaxHeight, setMaxWidth, setMaxWidth, setMinHeight, setMinHeight, setMinWidth, setMinWidth, setSizeFull, setSizeUndefined, setWidth, setWidth, setWidthFull

    Methods inherited from interface com.vaadin.flow.component.HasStyle

    addClassName, addClassNames, getClassName, getClassNames, getStyle, hasClassName, removeClassName, removeClassNames, setClassName, setClassName

    Methods inherited from interface com.vaadin.flow.component.HasTheme

    addThemeName, addThemeNames, getThemeName, getThemeNames, hasThemeName, removeThemeName, removeThemeNames, setThemeName, setThemeName

    Methods inherited from interface com.vaadin.flow.component.shared.HasTooltip

    getTooltip, setTooltipText

    Methods inherited from interface com.vaadin.flow.component.shared.HasValidationProperties

    getErrorMessage, isInvalid, setErrorMessage, setInvalid

    Methods inherited from interface com.vaadin.flow.component.HasValue

    addValueChangeListener, clear, getEmptyValue, getOptionalValue, getValue, isEmpty, setValue

    Methods inherited from interface com.vaadin.flow.component.HasValueAndElement

    isReadOnly, isRequiredIndicatorVisible, setRequiredIndicatorVisible

    Methods inherited from interface org.vaadin.miki.superfields.collections.WithCollectionElementFilterMixin

    withCollectionElementFilter

    Methods inherited from interface org.vaadin.miki.superfields.collections.WithCollectionValueComponentProviderMixin

    withCollectionComponentProvider

    Methods inherited from interface org.vaadin.miki.markers.WithHelperMixin

    withHelperComponent, withHelperText

    Methods inherited from interface org.vaadin.miki.markers.WithHelperPositionableMixin

    withHelperAbove, withHelperAbove, withHelperBelow

    Methods inherited from interface org.vaadin.miki.markers.WithIdMixin

    withId

    Methods inherited from interface org.vaadin.miki.markers.WithLabelMixin

    withLabel

    Methods inherited from interface org.vaadin.miki.markers.WithLabelPositionableMixin

    withLabelPosition

    Methods inherited from interface org.vaadin.miki.markers.WithValueMixin

    withValue
  • Constructor Details

    • MapField

      public MapField(com.vaadin.flow.function.SerializableSupplier<Map<K,V>> emptyMapSupplier, Supplier<L> layoutProvider, com.vaadin.flow.function.SerializableSupplier<C> entryComponentProvider)
      Creates a new MapField with given empty map supplier, layout provider and entry component provider.
      Type Parameters:
      L - Ensures layout provider produces a Component that HasComponents.
      C - Ensures entry component provider produces a Component that HasValue of type Map.Entry<K, V>.
      Parameters:
      emptyMapSupplier - A supplier of empty maps.
      layoutProvider - Provider of the main layout of the component.
      entryComponentProvider - Provides component to display entries of the map.
      See Also:
    • MapField

      public MapField(Supplier<L> layoutProvider, com.vaadin.flow.function.SerializableSupplier<C> entryComponentProvider)
      Creates a new MapField with given layout provider and entry component provider. The produced map will be a LinkedHashMap.
      Type Parameters:
      L - Ensures layout provider produces a Component that HasComponents.
      C - Ensures entry component provider produces a Component that HasValue of type Map.Entry<K, V>.
      Parameters:
      layoutProvider - Provider of the main layout of the component.
      entryComponentProvider - Provides component to display entries of the map.
      See Also:
    • MapField

      public MapField(com.vaadin.flow.function.SerializableSupplier<C> entryComponentProvider)
      Creates a new MapField with given entry component provider. Uses FlexLayoutHelpers.column() as layout provider. The produced map will be a LinkedHashMap.
      Type Parameters:
      C - Ensures entry component provider produces a Component that HasValue of type Map.Entry<K, V>.
      Parameters:
      entryComponentProvider - Provides component to display entries of the map.
    • MapField

      public MapField(com.vaadin.flow.function.SerializableSupplier<Map<K,V>> emptyMapSupplier, CollectionLayoutProvider<?> mainLayoutProvider, CollectionValueComponentProvider<Map.Entry<K,V>,?> entryValueComponentProvider)
      Creates a new MapField using given empty map provider, and layout and entry component providers for the underlying CollectionField.
      Parameters:
      emptyMapSupplier - A supplier of empty maps.
      mainLayoutProvider - Provider of the main layout for the underlying CollectionField.
      entryValueComponentProvider - Provider of entry components displayed in the underlying CollectionField.
  • Method Details

    • nonNullEntryFilter

      public static <X, Y> com.vaadin.flow.function.SerializablePredicate<Map.Entry<X,Y>> nonNullEntryFilter()
      Produces a non-null entry filter (entry, its key and its value must be non-null).
      Type Parameters:
      X - Key type.
      Y - Value type.
      Returns:
      Predicate.
    • generateModelValue

      protected Map<K,V> generateModelValue()
      Specified by:
      generateModelValue in class com.vaadin.flow.component.customfield.CustomField<Map<K,V>>
    • setPresentationValue

      protected void setPresentationValue(Map<K,V> map)
      Specified by:
      setPresentationValue in class com.vaadin.flow.component.customfield.CustomField<Map<K,V>>
    • setReadOnly

      public void setReadOnly(boolean readOnly)
      Specified by:
      setReadOnly in interface com.vaadin.flow.component.HasValue<K,V>
      Specified by:
      setReadOnly in interface com.vaadin.flow.component.HasValueAndElement<K,V>
    • focus

      public void focus()
      Specified by:
      focus in interface com.vaadin.flow.component.Focusable<K>
    • setCollectionValueComponentProvider

      public void setCollectionValueComponentProvider(CollectionValueComponentProvider<Map.Entry<K,V>,?> provider)
      Description copied from interface: HasCollectionValueComponentProvider
      Sets the provider used to generate components for each element of the collection.
      Specified by:
      setCollectionValueComponentProvider in interface HasCollectionValueComponentProvider<K>
      Parameters:
      provider - A non-null provider.
    • getCollectionValueComponentProvider

      public <W extends com.vaadin.flow.component.Component & com.vaadin.flow.component.HasValue<?, Map.Entry<K, V>>> CollectionValueComponentProvider<Map.Entry<K,V>,W> getCollectionValueComponentProvider()
      Description copied from interface: HasCollectionValueComponentProvider
      Returns the current provider used to generate components.
      Specified by:
      getCollectionValueComponentProvider in interface HasCollectionValueComponentProvider<K>
      Type Parameters:
      W - Generic type of the actual component.
      Returns:
      A non-null provider.
    • setCollectionElementFilter

      public void setCollectionElementFilter(com.vaadin.flow.function.SerializablePredicate<Map.Entry<K,V>> collectionElementFilter)
      Description copied from interface: HasCollectionElementFilter
      Sets a value filter. Only items matching the filter will be included in the generated value.
      Specified by:
      setCollectionElementFilter in interface HasCollectionElementFilter<K>
      Parameters:
      collectionElementFilter - Value filter to use.
    • getCollectionElementFilter

      public com.vaadin.flow.function.SerializablePredicate<Map.Entry<K,V>> getCollectionElementFilter()
      Description copied from interface: HasCollectionElementFilter
      Returns current value filter. All items in the value will pass this filter.
      Specified by:
      getCollectionElementFilter in interface HasCollectionElementFilter<K>
      Returns:
      A non-null filter.