Class CustomField<T>
- Type Parameters:
T- field value type
- All Implemented Interfaces:
AttachNotifier,BlurNotifier<CustomField<T>>,DetachNotifier,Focusable<CustomField<T>>,FocusNotifier<CustomField<T>>,HasElement,HasEnabled,HasHelper,HasLabel,HasSize,HasStyle,HasTheme,HasValidation,HasValue<AbstractField.ComponentValueChangeEvent<CustomField<T>,,T>, T> HasValueAndElement<AbstractField.ComponentValueChangeEvent<CustomField<T>,,T>, T> HasTooltip,HasValidationProperties,InputField<AbstractField.ComponentValueChangeEvent<CustomField<T>,,T>, T> Serializable
HasValue whose UI content can be constructed by the user, enabling
the creation of e.g. form fields by composing Vaadin components.
Customization of both the visual presentation and the logic of the field is
possible.
Subclasses must implement generateModelValue() and
AbstractFieldsetPresentationValue(Object).
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class com.vaadin.flow.component.AbstractField
AbstractField.ComponentValueChangeEvent<C extends Component,V> Nested classes/interfaces inherited from interface com.vaadin.flow.component.BlurNotifier
BlurNotifier.BlurEvent<C extends Component>Nested classes/interfaces inherited from interface com.vaadin.flow.component.FocusNotifier
FocusNotifier.FocusEvent<C extends Component>Nested classes/interfaces inherited from interface com.vaadin.flow.component.HasValue
HasValue.ValueChangeEvent<V>, HasValue.ValueChangeListener<E extends HasValue.ValueChangeEvent<?>> -
Constructor Summary
ConstructorsConstructorDescriptionDefault constructor.CustomField(T defaultValue) Constructs a new custom field.CustomField(T defaultValue, boolean manualValueUpdate) Constructs a new custom field. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidAdds the given components as children of this component.voidaddThemeVariants(CustomFieldVariant... variants) Adds theme variants to the component.protected abstract TThis method should return the value of the field, based on value of the internal fields.getLabel()Gets the label for the field.protected voidRemoves the given child components from this component.voidremoveThemeVariants(CustomFieldVariant... variants) Removes theme variants from the component.voidSets the label for the field.protected abstract voidsetPresentationValue(T newPresentationValue) This method should be implemented to set the value of the fields contained in this custom field according to the value of the parameter.protected voidRegenerates the value by callinggenerateModelValue()and updates the model.Methods 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, onAttach, 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, focus, 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 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.HasValidation
setManualValidationMethods 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, setReadOnly, setRequiredIndicatorVisible
-
Constructor Details
-
CustomField
public CustomField()Default constructor. -
CustomField
Constructs a new custom field.- Parameters:
defaultValue- The initial value for the field. Will also be used byAbstractField.getEmptyValue().- See Also:
-
CustomField
Constructs a new custom field.- Parameters:
defaultValue- The initial value for the field. Will also be used byAbstractField.getEmptyValue().manualValueUpdate- whentruethe component does not automatically update its value when one of the contained fields changes. This allows controlling manually when the value is updated, which can be done by callingupdateValue().falseby default.- See Also:
-
-
Method Details
-
generateModelValue
This method should return the value of the field, based on value of the internal fields.- Returns:
- new value of the field.
-
setPresentationValue
This method should be implemented to set the value of the fields contained in this custom field according to the value of the parameter. It can also be use to show the value to the user in some way, like placing it in an element contained on the field.Updates the presentation of this field to display the provided value. Subclasses should override this method to show the value to the user. This is typically done by setting an element property or by applying changes to child components.
If
AbstractField.setModelValue(Object, boolean)is called from within this method, the value of the last invocation will be used as the model value instead of the value passed to this method. In this caseAbstractField.setPresentationValue(Object)will not be called again. Changing the provided value might be useful if the provided value is sanitized.See
AbstractFieldfor an overall description on the difference between model values and presentation values.- Specified by:
setPresentationValuein classAbstractField<CustomField<T>,T> - Parameters:
newPresentationValue- The new presentation value.
-
updateValue
protected void updateValue()Regenerates the value by callinggenerateModelValue()and updates the model. If the value is different than the current one, aHasValue.ValueChangeEventwill be generated withHasValue.ValueChangeEvent.isFromClient()set totrueThis method is called when the webcomponent generates a changed event, typically in response to a change made by the user in one of the contained fields.
Custom implementations of this method must call
AbstractField.setModelValue(Object, boolean)with the updated model value. Subclasses can call this method when the model value needs to be regenerated and updated. -
add
Adds the given components as children of this component.- Parameters:
components- the components to add
-
remove
Removes the given child components from this component.- Parameters:
components- the components to remove- Throws:
IllegalArgumentException- if any of the components is not a child of this component
-
getLabel
Gets the label for the field. -
setLabel
Sets the label for the field. -
addThemeVariants
Adds theme variants to the component.- Parameters:
variants- theme variants to add
-
removeThemeVariants
Removes theme variants from the component.- Parameters:
variants- theme variants to remove
-