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_VARIANTFields inherited from interface org.vaadin.miki.markers.HasLabelPositionable
LABEL_POSITION_ATTRIBUTE, LABEL_POSITION_DETAILS_ATTRIBUTE -
Constructor Summary
ConstructorsConstructorDescriptionMapField(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
Modifier and TypeMethodDescriptionvoidfocus()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).voidsetCollectionElementFilter(com.vaadin.flow.function.SerializablePredicate<Map.Entry<K, V>> collectionElementFilter) Sets a value filter.voidSets 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, getLabel, onAttach, remove, removeThemeVariants, setLabel, updateValueMethods inherited from class com.vaadin.flow.component.AbstractField
addValueChangeListener, getEmptyValue, getValue, isEmpty, setModelValue, setValue, valueEqualsMethods 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, setVisibleMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.vaadin.flow.component.AttachNotifier
addAttachListenerMethods inherited from interface com.vaadin.flow.component.BlurNotifier
addBlurListenerMethods inherited from interface com.vaadin.flow.component.DetachNotifier
addDetachListenerMethods inherited from interface com.vaadin.flow.component.Focusable
addFocusShortcut, blur, getTabIndex, setTabIndexMethods inherited from interface com.vaadin.flow.component.FocusNotifier
addFocusListenerMethods inherited from interface com.vaadin.flow.component.HasElement
getElementMethods inherited from interface com.vaadin.flow.component.HasEnabled
isEnabled, setEnabledMethods inherited from interface com.vaadin.flow.component.HasHelper
getHelperComponent, getHelperText, setHelperComponent, setHelperTextMethods inherited from interface org.vaadin.miki.markers.HasHelperPositionable
isHelperAbove, setHelperAbove, setHelperAbove, setHelperBelowMethods inherited from interface com.vaadin.flow.component.HasLabel
getLabel, setLabelMethods inherited from interface org.vaadin.miki.markers.HasLabelPositionable
getLabelPosition, setLabelPositionMethods 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, setWidthFullMethods inherited from interface com.vaadin.flow.component.HasStyle
addClassName, addClassNames, getClassName, getClassNames, getStyle, hasClassName, removeClassName, removeClassNames, setClassName, setClassNameMethods inherited from interface com.vaadin.flow.component.HasTheme
addThemeName, addThemeNames, getThemeName, getThemeNames, hasThemeName, removeThemeName, removeThemeNames, setThemeName, setThemeNameMethods inherited from interface com.vaadin.flow.component.shared.HasTooltip
getTooltip, setTooltipTextMethods inherited from interface com.vaadin.flow.component.shared.HasValidationProperties
getErrorMessage, isInvalid, setErrorMessage, setInvalidMethods inherited from interface com.vaadin.flow.component.HasValue
addValueChangeListener, clear, getEmptyValue, getOptionalValue, getValue, isEmpty, setValueMethods inherited from interface com.vaadin.flow.component.HasValueAndElement
isReadOnly, isRequiredIndicatorVisible, setRequiredIndicatorVisibleMethods inherited from interface org.vaadin.miki.superfields.collections.WithCollectionElementFilterMixin
withCollectionElementFilterMethods inherited from interface org.vaadin.miki.superfields.collections.WithCollectionValueComponentProviderMixin
withCollectionComponentProviderMethods inherited from interface org.vaadin.miki.markers.WithHelperMixin
withHelperComponent, withHelperTextMethods inherited from interface org.vaadin.miki.markers.WithHelperPositionableMixin
withHelperAbove, withHelperAbove, withHelperBelowMethods inherited from interface org.vaadin.miki.markers.WithIdMixin
withIdMethods inherited from interface org.vaadin.miki.markers.WithLabelMixin
withLabelMethods inherited from interface org.vaadin.miki.markers.WithLabelPositionableMixin
withLabelPositionMethods 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 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:
-
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:
-
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 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
-
setPresentationValue
-
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, CollectionValueComponentProvider<Map.Entry<K,V>>> V>, getCollectionValueComponentProvider()W> 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
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.
-