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>,com.vaadin.flow.component.DetachNotifier,com.vaadin.flow.component.Focusable<com.vaadin.flow.component.customfield.CustomField>,com.vaadin.flow.component.FocusNotifier<com.vaadin.flow.component.customfield.CustomField>,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,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 areMaps. This basically forwards everything to aCollectionFieldand wraps the value in aMap. It also expects a component capable of displaying values of typeMap.Entry.- Since:
- 2022-04-08
- Author:
- miki
- See Also:
MapEntryField,CollectionField, Serialized Form
-
-
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 newMapFieldwith 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 newMapFieldwith 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 newMapFieldusing given empty map provider, and layout and entry component providers for the underlyingCollectionField.MapField(Supplier<L> layoutProvider, com.vaadin.flow.function.SerializableSupplier<C> entryComponentProvider)Creates a newMapFieldwith given layout provider and entry component provider.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidfocus()protected Map<K,V>generateModelValue()com.vaadin.flow.function.SerializablePredicate<Map.Entry<K,V>>getCollectionElementFilter()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>getCollectionValueComponentProvider()Returns the current provider used to generate components.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).voidsetCollectionElementFilter(com.vaadin.flow.function.SerializablePredicate<Map.Entry<K,V>> collectionElementFilter)Sets a value filter.voidsetCollectionValueComponentProvider(CollectionValueComponentProvider<Map.Entry<K,V>,?> provider)Sets the provider used to generate components for each element of the collection.protected voidsetPresentationValue(Map<K,V> map)voidsetReadOnly(boolean readOnly)-
Methods inherited from class com.vaadin.flow.component.customfield.CustomField
add, addThemeVariants, getErrorMessage, getLabel, isInvalid, onAttach, remove, removeThemeVariants, setErrorMessage, setInvalid, 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, 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.Focusable
addFocusShortcut, blur, getTabIndex, setTabIndex
-
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.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.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 Detail
-
MapField
public MapField(com.vaadin.flow.function.SerializableSupplier<Map<K,V>> emptyMapSupplier, Supplier<L> layoutProvider, com.vaadin.flow.function.SerializableSupplier<C> entryComponentProvider)
Creates a newMapFieldwith given empty map supplier, layout provider and entry component provider.- Type Parameters:
L- Ensures layout provider produces aComponentthatHasComponents.C- Ensures entry component provider produces aComponentthatHasValueof typeMap.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:
MapEntryField
-
MapField
public MapField(Supplier<L> layoutProvider, com.vaadin.flow.function.SerializableSupplier<C> entryComponentProvider)
Creates a newMapFieldwith given layout provider and entry component provider. The produced map will be aLinkedHashMap.- Type Parameters:
L- Ensures layout provider produces aComponentthatHasComponents.C- Ensures entry component provider produces aComponentthatHasValueof typeMap.Entry<K, V>.- Parameters:
layoutProvider- Provider of the main layout of the component.entryComponentProvider- Provides component to display entries of the map.- See Also:
MapEntryField
-
MapField
public MapField(com.vaadin.flow.function.SerializableSupplier<C> entryComponentProvider)
Creates a newMapFieldwith given entry component provider. UsesFlexLayoutHelpers.column()as layout provider. The produced map will be aLinkedHashMap.- Type Parameters:
C- Ensures entry component provider produces aComponentthatHasValueof typeMap.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 newMapFieldusing given empty map provider, and layout and entry component providers for the underlyingCollectionField.- Parameters:
emptyMapSupplier- A supplier of empty maps.mainLayoutProvider- Provider of the main layout for the underlyingCollectionField.entryValueComponentProvider- Provider of entry components displayed in the underlyingCollectionField.
-
-
Method Detail
-
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.
-
setReadOnly
public void setReadOnly(boolean readOnly)
-
focus
public void focus()
- Specified by:
focusin interfacecom.vaadin.flow.component.Focusable<K>
-
setCollectionValueComponentProvider
public void setCollectionValueComponentProvider(CollectionValueComponentProvider<Map.Entry<K,V>,?> provider)
Description copied from interface:HasCollectionValueComponentProviderSets the provider used to generate components for each element of the collection.- Specified by:
setCollectionValueComponentProviderin interfaceHasCollectionValueComponentProvider<K>- Parameters:
provider- A non-nullprovider.
-
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:HasCollectionValueComponentProviderReturns the current provider used to generate components.- Specified by:
getCollectionValueComponentProviderin interfaceHasCollectionValueComponentProvider<K>- Type Parameters:
W- Generic type of the actual component.- Returns:
- A non-
nullprovider.
-
setCollectionElementFilter
public void setCollectionElementFilter(com.vaadin.flow.function.SerializablePredicate<Map.Entry<K,V>> collectionElementFilter)
Description copied from interface:HasCollectionElementFilterSets a value filter. Only items matching the filter will be included in the generated value.- Specified by:
setCollectionElementFilterin interfaceHasCollectionElementFilter<K>- Parameters:
collectionElementFilter- Value filter to use.
-
getCollectionElementFilter
public com.vaadin.flow.function.SerializablePredicate<Map.Entry<K,V>> getCollectionElementFilter()
Description copied from interface:HasCollectionElementFilterReturns current value filter. All items in the value will pass this filter.- Specified by:
getCollectionElementFilterin interfaceHasCollectionElementFilter<K>- Returns:
- A non-
nullfilter.
-
-