Package com.storedobject.ui
Class ObjectFormField<T extends StoredObject>
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<T>
com.storedobject.ui.ObjectFormField<T>
- All Implemented Interfaces:
FilterMethods<T>
,ObjectGetter<T>
,ObjectSetter<T>
,ObjectInput<T>
,ObjectProvider<T>
,AbstractObjectInput<T>
,NoDisplayField
,HasElement
,HasThemeStyle
,ValueRequired
,ViewDependent
,com.vaadin.flow.component.AttachNotifier
,com.vaadin.flow.component.BlurNotifier<com.vaadin.flow.component.customfield.CustomField<T>>
,com.vaadin.flow.component.DetachNotifier
,com.vaadin.flow.component.Focusable<com.vaadin.flow.component.customfield.CustomField<T>>
,com.vaadin.flow.component.FocusNotifier<com.vaadin.flow.component.customfield.CustomField<T>>
,com.vaadin.flow.component.HasElement
,com.vaadin.flow.component.HasEnabled
,com.vaadin.flow.component.HasHelper
,com.vaadin.flow.component.HasLabel
,com.vaadin.flow.component.HasPlaceholder
,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<T>,
,T>, T> com.vaadin.flow.component.HasValueAndElement<com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<com.vaadin.flow.component.customfield.CustomField<T>,
,T>, T> com.vaadin.flow.component.shared.HasTooltip
,com.vaadin.flow.component.shared.HasValidationProperties
,com.vaadin.flow.component.shared.InputField<com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<com.vaadin.flow.component.customfield.CustomField<T>,
,T>, T> Serializable
,Consumer<T>
public class ObjectFormField<T extends StoredObject>
extends com.vaadin.flow.component.customfield.CustomField<T>
implements ObjectInput<T>, ViewDependent, NoDisplayField, ValueRequired
- 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> 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>, com.vaadin.flow.component.HasValue.ValueChangeListener<E extends com.vaadin.flow.component.HasValue.ValueChangeEvent<?>>
-
Constructor Summary
ConstructorsConstructorDescriptionObjectFormField
(ObjectEditor<T> formEditor) ObjectFormField
(ObjectEditor<T> formEditor, ObjectField.Type formType) ObjectFormField
(ObjectEditor<T> formEditor, HasContainer mergeTo) ObjectFormField
(Class<T> objectClass) ObjectFormField
(Class<T> objectClass, ObjectField.Type formType) ObjectFormField
(Class<T> objectClass, HasContainer mergeTo) ObjectFormField
(String label, ObjectEditor<T> formEditor) ObjectFormField
(String label, ObjectEditor<T> formEditor, ObjectField.Type formType) ObjectFormField
(String label, ObjectEditor<T> formEditor, HasContainer mergeTo) ObjectFormField
(String label, Class<T> objectClass) ObjectFormField
(String label, Class<T> objectClass, ObjectField.Type formType) ObjectFormField
(String label, Class<T> objectClass, HasContainer mergeTo) ObjectFormField
(String label, Class<T> objectClass, String fieldName, BiFunction<String, Class<T>, ObjectEditor<T>> editorCreator, ObjectField.Type formType) ObjectFormField
(String label, Class<T> objectClass, String fieldName, BiFunction<String, Class<T>, ObjectEditor<T>> editorCreator, HasContainer mergeTo) -
Method Summary
Modifier and TypeMethodDescriptionvoid
This method is called whenever a filter condition is changed.void
attach()
Attach this to the respective container.boolean
Can this field display information like normal fields?void
focus()
Focus this field.protected T
Get the currently cached object.Get the dependent view.com.vaadin.flow.component.Component
Get the component that is currently displaying details of the object value.Get the consumer that is currently consuming details of the object value.final ObjectEditor
<T> Get the internal label of this field.Get the load filter.Get the current object.Get the object for the givenId
.Class of the object supported in this input field.Get theId
of the current object.getObjectId
(T object) Get theId
of the given object.getValue()
Get the current value.boolean
boolean
Get the value required flag.void
load
(ObjectIterator<T> objects) This method does nothing in this field.void
reload()
Reload the allowed values by applying newly set filters.void
Cache an object instance.void
setDependentView
(View masterView) Set the dependent view.void
setDetailComponent
(com.vaadin.flow.component.Component detailComponent) Set a component that will display details of the object value.void
setDisplayDetail
(Consumer<T> displayDetail) Set a consumer that can display/consume the details of the object value.void
setEnabled
(boolean enabled) Enable/disable this field.void
setInternalLabel
(String label) Set the internal label for this field.void
Set object for the givenId
.void
setObject
(StoredObject object) Set the given object as the value.final void
setObjectClass
(Class<? extends T>... classes) Set one or more (typically more than one) class subtypes that this field should allow.void
setPlaceholder
(String placeholder) void
setPrefixFieldControl
(boolean prefixFieldControl) Decide whether "prefix components" needs to be controlled by this field or not.protected void
setPresentationValue
(T object) void
setReadOnly
(boolean readOnly) Make this field read-only.void
setRequired
(boolean required) Set value required flag.void
Set the value as anId
.void
Set the value.protected void
protected boolean
valueEquals
(T value1, T value2) Methods inherited from class com.vaadin.flow.component.customfield.CustomField
add, addThemeVariants, getLabel, onAttach, remove, removeThemeVariants, setLabel
Methods inherited from class com.vaadin.flow.component.AbstractField
addValueChangeListener, getEmptyValue, isEmpty, setModelValue
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.storedobject.ui.util.AbstractObjectInput
applyFilterPredicate, convert, isAllowAny, setItemLabelGenerator
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.storedobject.core.FilterMethods
getEffectiveCondition, getFilterCondition, setFilter, setFilter, setFilter, setFilter, setFilter, setFilter, setLoadFilter, setLoadFilter, setViewFilter, setViewFilter
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.storedobject.vaadin.HasElement
getAttribute, getStyle, setAttribute, setStyle
Methods inherited from interface com.vaadin.flow.component.HasElement
getElement
Methods inherited from interface com.vaadin.flow.component.HasEnabled
isEnabled
Methods inherited from interface com.vaadin.flow.component.HasHelper
getHelperComponent, getHelperText, setHelperComponent, setHelperText
Methods inherited from interface com.vaadin.flow.component.HasLabel
getLabel, setLabel
Methods inherited from interface com.vaadin.flow.component.HasPlaceholder
getPlaceholder
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.storedobject.vaadin.HasThemeStyle
addTheme, asPrimary, asSmall, clearThemes, getInternalElement, removeTheme, setTheme
Methods inherited from interface com.vaadin.flow.component.shared.HasTooltip
getTooltip, setTooltipText
Methods inherited from interface com.vaadin.flow.component.HasValidation
setManualValidation
Methods inherited from interface com.vaadin.flow.component.shared.HasValidationProperties
getErrorMessage, setErrorMessage, setInvalid
Methods inherited from interface com.vaadin.flow.component.HasValue
addValueChangeListener, clear, getEmptyValue, getOptionalValue, isEmpty
Methods inherited from interface com.vaadin.flow.component.HasValueAndElement
isReadOnly, isRequiredIndicatorVisible, setRequiredIndicatorVisible
Methods inherited from interface com.storedobject.ui.ObjectInput
getSearcher
Methods inherited from interface com.storedobject.core.ObjectSetter
accept
-
Constructor Details
-
ObjectFormField
-
ObjectFormField
-
ObjectFormField
-
ObjectFormField
-
ObjectFormField
-
ObjectFormField
-
ObjectFormField
-
ObjectFormField
-
ObjectFormField
-
ObjectFormField
-
ObjectFormField
-
ObjectFormField
-
ObjectFormField
public ObjectFormField(String label, Class<T> objectClass, String fieldName, BiFunction<String, Class<T>, ObjectEditor<T>> editorCreator, ObjectField.Type formType) -
ObjectFormField
public ObjectFormField(String label, Class<T> objectClass, String fieldName, BiFunction<String, Class<T>, ObjectEditor<T>> editorCreator, HasContainer mergeTo)
-
-
Method Details
-
setRequired
public void setRequired(boolean required) Description copied from interface:ValueRequired
Set value required flag.- Specified by:
setRequired
in interfaceValueRequired
- Parameters:
required
- Required or not
-
isRequired
public boolean isRequired()Description copied from interface:ValueRequired
Get the value required flag.- Specified by:
isRequired
in interfaceValueRequired
- Returns:
- Whether required or not.
-
canDisplay
public boolean canDisplay()Description copied from interface:NoDisplayField
Can this field display information like normal fields?- Specified by:
canDisplay
in interfaceNoDisplayField
- Returns:
- True/false.
-
updateValue
protected void updateValue()- Overrides:
updateValue
in classcom.vaadin.flow.component.customfield.CustomField<T extends StoredObject>
-
generateModelValue
- Specified by:
generateModelValue
in classcom.vaadin.flow.component.customfield.CustomField<T extends StoredObject>
-
setPresentationValue
- Specified by:
setPresentationValue
in classcom.vaadin.flow.component.customfield.CustomField<T extends StoredObject>
-
valueEquals
- Overrides:
valueEquals
in classcom.vaadin.flow.component.AbstractField<com.vaadin.flow.component.customfield.CustomField<T extends StoredObject>,
T extends StoredObject>
-
setDetailComponent
public void setDetailComponent(com.vaadin.flow.component.Component detailComponent) Description copied from interface:AbstractObjectInput
Set a component that will display details of the object value.- Specified by:
setDetailComponent
in interfaceAbstractObjectInput<T extends StoredObject>
- Parameters:
detailComponent
- A component that can display information regarding the object.
-
getDetailComponent
public com.vaadin.flow.component.Component getDetailComponent()Description copied from interface:AbstractObjectInput
Get the component that is currently displaying details of the object value.- Specified by:
getDetailComponent
in interfaceAbstractObjectInput<T extends StoredObject>
- Returns:
- Component that is displaying the details.
-
setDisplayDetail
Description copied from interface:AbstractObjectInput
Set a consumer that can display/consume the details of the object value.- Specified by:
setDisplayDetail
in interfaceAbstractObjectInput<T extends StoredObject>
- Parameters:
displayDetail
- A consumer that can accept the object value.
-
getDisplayDetail
Description copied from interface:AbstractObjectInput
Get the consumer that is currently consuming details of the object value.- Specified by:
getDisplayDetail
in interfaceAbstractObjectInput<T extends StoredObject>
- Returns:
- Consumer that is currently set.
-
setPrefixFieldControl
public void setPrefixFieldControl(boolean prefixFieldControl) Description copied from interface:AbstractObjectInput
Decide whether "prefix components" needs to be controlled by this field or not. "Prefix components" are parts of the field that display extra information, and it needs to be turned on or off when the status of the field changes via methods such asAbstractObjectInput.setEnabled(boolean)
,AbstractObjectInput.setReadOnly(boolean)
etc. In some cases, prefix components may be displayed elsewhere and needs to be controlled outside the field.- Specified by:
setPrefixFieldControl
in interfaceAbstractObjectInput<T extends StoredObject>
- Parameters:
prefixFieldControl
- True if it needs to be controlled by this field.
-
isInvalid
public boolean isInvalid()- Specified by:
isInvalid
in interfacecom.vaadin.flow.component.HasValidation
- Specified by:
isInvalid
in interfacecom.vaadin.flow.component.shared.HasValidationProperties
-
getObjectClass
Description copied from interface:AbstractObjectInput
Class of the object supported in this input field.- Specified by:
getObjectClass
in interfaceAbstractObjectInput<T extends StoredObject>
- Specified by:
getObjectClass
in interfaceObjectGetter<T extends StoredObject>
- Specified by:
getObjectClass
in interfaceObjectProvider<T extends StoredObject>
- Specified by:
getObjectClass
in interfaceObjectSetter<T extends StoredObject>
- Returns:
- Class of the supported object.
-
getObject
Description copied from interface:ObjectInput
Get the current object. Same asObjectInput.getValue()
.- Specified by:
getObject
in interfaceAbstractObjectInput<T extends StoredObject>
- Specified by:
getObject
in interfaceObjectGetter<T extends StoredObject>
- Specified by:
getObject
in interfaceObjectInput<T extends StoredObject>
- Specified by:
getObject
in interfaceObjectProvider<T extends StoredObject>
- Returns:
- Current object.
-
setObject
Description copied from interface:ObjectInput
Set the given object as the value.- Specified by:
setObject
in interfaceAbstractObjectInput<T extends StoredObject>
- Specified by:
setObject
in interfaceObjectInput<T extends StoredObject>
- Specified by:
setObject
in interfaceObjectSetter<T extends StoredObject>
- Parameters:
object
- Object to set.
-
getObjectId
Description copied from interface:AbstractObjectInput
Get theId
of the current object.- Specified by:
getObjectId
in interfaceAbstractObjectInput<T extends StoredObject>
- Specified by:
getObjectId
in interfaceObjectGetter<T extends StoredObject>
- Specified by:
getObjectId
in interfaceObjectProvider<T extends StoredObject>
- Returns:
Id
ornull
if no object is currently set.
-
setObject
Description copied from interface:AbstractObjectInput
Set object for the givenId
.- Specified by:
setObject
in interfaceAbstractObjectInput<T extends StoredObject>
- Specified by:
setObject
in interfaceObjectSetter<T extends StoredObject>
- Parameters:
objectId
-Id
of the object to be set.
-
getObject
Description copied from interface:AbstractObjectInput
Get the object for the givenId
. (This is a helper method.)- Specified by:
getObject
in interfaceAbstractObjectInput<T extends StoredObject>
- Parameters:
objectId
-Id
for which object needs to be returned.- Returns:
- Object retrieved from the database or cache. It returns
null
if not found.
-
setCached
Description copied from interface:AbstractObjectInput
Cache an object instance. Default implementation doesn't do anything but a field may cache it and re-used for eliminating unwanted database access.- Specified by:
setCached
in interfaceAbstractObjectInput<T extends StoredObject>
- Parameters:
cached
- Object to be cached.
-
getCached
Description copied from interface:AbstractObjectInput
Get the currently cached object.- Specified by:
getCached
in interfaceAbstractObjectInput<T extends StoredObject>
- Returns:
- Object that is currently cached. It may return
null
.
-
setPlaceholder
- Specified by:
setPlaceholder
in interfacecom.vaadin.flow.component.HasPlaceholder
-
getObjectId
Description copied from interface:AbstractObjectInput
Get theId
of the given object. (This is a helper method.)- Specified by:
getObjectId
in interfaceAbstractObjectInput<T extends StoredObject>
- Parameters:
object
- Object for whichId
is required.- Returns:
Id
of the object.
-
getValue
Description copied from interface:ObjectInput
Get the current value.- Specified by:
getValue
in interfacecom.vaadin.flow.component.HasValue<com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<com.vaadin.flow.component.customfield.CustomField<T extends StoredObject>,
T extends StoredObject>, T extends StoredObject> - Specified by:
getValue
in interfaceObjectInput<T extends StoredObject>
- Overrides:
getValue
in classcom.vaadin.flow.component.AbstractField<com.vaadin.flow.component.customfield.CustomField<T extends StoredObject>,
T extends StoredObject> - Returns:
- Value.
-
setInternalLabel
Description copied from interface:ObjectInput
Set the internal label for this field. Internal labels are used by the embedded field within this field.- Specified by:
setInternalLabel
in interfaceObjectInput<T extends StoredObject>
- Parameters:
label
- Label.
-
getInternalLabel
Description copied from interface:ObjectInput
Get the internal label of this field. Internal labels are used by the embedded field within this field.- Specified by:
getInternalLabel
in interfaceObjectInput<T extends StoredObject>
- Returns:
- Label.
-
setValue
Description copied from interface:ObjectInput
Set the value as anId
. The object representing theId
value will be set. If the corresponding object value is not compatible,null
value will be set.- Specified by:
setValue
in interfaceObjectInput<T extends StoredObject>
- Parameters:
id
-Id
of the object to be set.
-
setValue
Description copied from interface:ObjectInput
Set the value.- Specified by:
setValue
in interfacecom.vaadin.flow.component.HasValue<com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<com.vaadin.flow.component.customfield.CustomField<T extends StoredObject>,
T extends StoredObject>, T extends StoredObject> - Specified by:
setValue
in interfaceObjectInput<T extends StoredObject>
- Overrides:
setValue
in classcom.vaadin.flow.component.AbstractField<com.vaadin.flow.component.customfield.CustomField<T extends StoredObject>,
T extends StoredObject> - Parameters:
object
- Value to set.
-
applyFilter
public void applyFilter()Description copied from interface:FilterMethods
This method is called whenever a filter condition is changed. Methods with default implementation already invoke this method. If any of those methods are overridden, make sure that it invokes this method so that logic to handle filter changes can be coded here.- Specified by:
applyFilter
in interfaceFilterMethods<T extends StoredObject>
-
getLoadFilter
Description copied from interface:FilterMethods
Get the load filter.- Specified by:
getLoadFilter
in interfaceFilterMethods<T extends StoredObject>
- Returns:
- Current load filter.
-
setReadOnly
public void setReadOnly(boolean readOnly) Description copied from interface:AbstractObjectInput
Make this field read-only.- Specified by:
setReadOnly
in interfaceAbstractObjectInput<T extends StoredObject>
- Specified by:
setReadOnly
in interfacecom.vaadin.flow.component.HasValue<com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<com.vaadin.flow.component.customfield.CustomField<T extends StoredObject>,
T extends StoredObject>, T extends StoredObject> - Specified by:
setReadOnly
in interfacecom.vaadin.flow.component.HasValueAndElement<com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<com.vaadin.flow.component.customfield.CustomField<T extends StoredObject>,
T extends StoredObject>, T extends StoredObject> - Parameters:
readOnly
- True to set as read-only.
-
setEnabled
public void setEnabled(boolean enabled) Description copied from interface:AbstractObjectInput
Enable/disable this field.- Specified by:
setEnabled
in interfaceAbstractObjectInput<T extends StoredObject>
- Specified by:
setEnabled
in interfacecom.vaadin.flow.component.HasEnabled
- Parameters:
enabled
- True for enabling.
-
setDependentView
Description copied from interface:ViewDependent
Set the dependent view.- Specified by:
setDependentView
in interfaceViewDependent
- Parameters:
masterView
- The dependent view.
-
getDependentView
Description copied from interface:ViewDependent
Get the dependent view.- Specified by:
getDependentView
in interfaceViewDependent
- Returns:
- The dependent view.
-
attach
public void attach()Attach this to the respective container. There is no need to call this method if you are attaching this to anObjectEditor
. -
focus
public void focus()Description copied from interface:AbstractObjectInput
Focus this field.- Specified by:
focus
in interfaceAbstractObjectInput<T extends StoredObject>
- Specified by:
focus
in interfacecom.vaadin.flow.component.Focusable<T extends StoredObject>
-
load
This method does nothing in this field.- Specified by:
load
in interfaceObjectInput<T extends StoredObject>
- Parameters:
objects
- Objects to load.
-
reload
public void reload()Description copied from interface:ObjectInput
Reload the allowed values by applying newly set filters.- Specified by:
reload
in interfaceObjectInput<T extends StoredObject>
-
setObjectClass
Description copied from interface:ObjectInput
Set one or more (typically more than one) class subtypes that this field should allow.- Specified by:
setObjectClass
in interfaceObjectInput<T extends StoredObject>
- Parameters:
classes
- Classes to allow.
-
getFormEditor
-