com.vaadin.flow.component.combobox.
Class ComboBox<T>
- java.lang.Object
-
- com.vaadin.flow.component.Component
-
- com.vaadin.flow.component.AbstractField<C,T>
-
- com.vaadin.flow.component.AbstractSinglePropertyField<R,T>
-
- com.vaadin.flow.component.combobox.GeneratedVaadinComboBox<ComboBox<T>,T>
-
- com.vaadin.flow.component.combobox.ComboBox<T>
-
Type Parameters:
T
- the type of the items to be inserted in the combo boxAll Implemented Interfaces:
AttachNotifier, BlurNotifier<ComboBox<T>>, DetachNotifier, Focusable<ComboBox<T>>, FocusNotifier<ComboBox<T>>, HasElement, HasEnabled, HasHelper, HasLabel, HasSize, HasStyle, HasValidation, HasValue<AbstractField.ComponentValueChangeEvent<ComboBox<T>,T>,T>, HasValueAndElement<AbstractField.ComponentValueChangeEvent<ComboBox<T>,T>,T>, HasClientValidation, HasFilterableDataProvider<T,String>, HasItems<T>, HasValidator<T>, Serializable
@JsModule(value="./flow-component-renderer.js") @JsModule(value="./comboBoxConnector-es6.js") @JavaScript(value="frontend://comboBoxConnector.js") public class ComboBox<T> extends GeneratedVaadinComboBox<ComboBox<T>,T> implements HasSize, HasValidation, HasFilterableDataProvider<T,String>, HasHelper, HasLabel, HasValidator<T>, HasClientValidation
Server-side component for the
vaadin-combo-box
webcomponent. It contains the same features of the webcomponent, such as item filtering, object selection and item templating.ComboBox supports lazy loading. This means that when using large data sets, items are requested from the server one "page" at a time when the user scrolls down the overlay. The number of items in one page is by default 50, and can be changed with
setPageSize(int)
.ComboBox can do filtering either in the browser or in the server. When ComboBox has only a relatively small set of items, the filtering will happen in the browser, allowing smooth user-experience. When the size of the data set is larger than the
pageSize
, the webcomponent doesn't necessarily have all the data available and it will make requests to the server to handle the filtering. Also, if you have defined custom filtering logic, with eg.setItems(ItemFilter, Collection)
, filtering will happen in the server. To enable client-side filtering with larger data sets, you can override thepageSize
to be bigger than the size of your data set. However, then the full data set will be sent to the client immediately and you will lose the benefits of lazy loading.Author:
Vaadin Ltd
See Also:
-
-
Nested Class Summary
Nested Classes Modifier and Type Class and Description static interface
ComboBox.FetchItemsCallback<T>
A callback method for fetching items.
static interface
ComboBox.ItemFilter<T>
Predicate to check
ComboBox
items against user typed strings.-
Nested classes/interfaces inherited from class com.vaadin.flow.component.combobox.GeneratedVaadinComboBox
GeneratedVaadinComboBox.CustomValueSetEvent<R extends GeneratedVaadinComboBox<R,?>>, GeneratedVaadinComboBox.FilterChangeEvent<R extends GeneratedVaadinComboBox<R,?>>, GeneratedVaadinComboBox.InvalidChangeEvent<R extends GeneratedVaadinComboBox<R,?>>, GeneratedVaadinComboBox.OpenedChangeEvent<R extends GeneratedVaadinComboBox<R,?>>, GeneratedVaadinComboBox.SelectedItemChangeEvent<R extends GeneratedVaadinComboBox<R,?>>
-
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.shared.HasClientValidation
HasClientValidation.ClientValidatedEvent
-
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
Constructors Constructor and Description ComboBox()
Default constructor.
ComboBox(int pageSize)
Creates an empty combo box with the defined page size for lazy loading.
ComboBox(String label)
Creates an empty combo box with the defined label.
ComboBox(String label, Collection<T> items)
Creates a combo box with the defined label and populated with the items in the collection.
ComboBox(String label, T... items)
Creates a combo box with the defined label and populated with the items in the array.
-
Method Summary
All Methods Modifier and Type Method and Description Registration
addCustomValueSetListener(ComponentEventListener<GeneratedVaadinComboBox.CustomValueSetEvent<ComboBox<T>>> listener)
Adds a listener for the event which is fired when user inputs a string value that does not match any existing items and commits it eg.
Registration
addValidationStatusChangeListener(ValidationStatusChangeListener<T> listener)
Enables the implementing components to notify changes in their validation status to the observers.
DataProvider<T,?>
getDataProvider()
Gets the data provider used by this ComboBox.
T
getEmptyValue()
Returns the value that represents an empty value.
String
getErrorMessage()
Gets the current error message from the combobox.
ItemLabelGenerator<T>
getItemLabelGenerator()
Gets the item label generator that is used to produce the strings shown in the combo box for each item.
String
getLabel()
Gets the label of the combobox.
int
getPageSize()
Gets the page size, which is the number of items fetched at a time from the data provider.
String
getPattern()
Gets the valid input pattern
String
getPlaceholder()
Gets the placeholder of the combobox.
boolean
isAllowCustomValue()
If
true
, the user can input string values that do not match to any existing item labels, which will fire aCustomValueSetEvent
.boolean
isAutofocus()
Get the state for the auto-focus property of the combobox.
boolean
isAutoOpen()
Gets whether dropdown will open automatically or not.
boolean
isClearButtonVisible()
Gets whether this combo box displays a clear button when a value is selected.
protected boolean
isEnforcedFieldValidationEnabled()
boolean
isInvalid()
Gets the validity of the combobox output.
boolean
isOpened()
Gets the states of the drop-down.
boolean
isPreventInvalidInput()
Determines whether preventing the user from inputing invalid value.
boolean
isRequired()
Determines whether the combobox is marked as input required.
protected void
onAttach(AttachEvent attachEvent)
Called when the component is attached to a UI.
protected void
onDetach(DetachEvent detachEvent)
Called when the component is detached from a UI.
void
setAllowCustomValue(boolean allowCustomValue)
Enables or disables the component firing events for custom string input.
void
setAutofocus(boolean autofocus)
Set the combobox to be input focused when the page loads.
void
setAutoOpen(boolean autoOpen)
Enables or disables the dropdown opening automatically.
void
setClearButtonVisible(boolean clearButtonVisible)
Allows displaying a clear button in the combo box when a value is selected.
void
setDataProvider(ComboBox.FetchItemsCallback<T> fetchItems, SerializableFunction<String,Integer> sizeCallback)
Sets a CallbackDataProvider using the given fetch items callback and a size callback.
void
setDataProvider(ComboBox.ItemFilter<T> itemFilter, ListDataProvider<T> listDataProvider)
Sets a list data provider with an item filter as the data provider of this combo box.
<C> void
setDataProvider(DataProvider<T,C> dataProvider, SerializableFunction<String,C> filterConverter)
Sets the data provider and filter converter for this listing.
void
setDataProvider(DataProvider<T,String> dataProvider)
Sets the data provider for this listing.
void
setDataProvider(ListDataProvider<T> listDataProvider)
Sets a list data provider as the data provider of this combo box.
void
setErrorMessage(String errorMessage)
Description copied from corresponding location in WebComponent:
void
setInvalid(boolean invalid)
Description copied from corresponding location in WebComponent:
void
setItemLabelGenerator(ItemLabelGenerator<T> itemLabelGenerator)
Sets the item label generator that is used to produce the strings shown in the combo box for each item.
void
setItems(Collection<T> items)
Sets the data items of this component provided as a collection.
void
setItems(ComboBox.ItemFilter<T> itemFilter, Collection<T> items)
Sets the data items of this combo box and a filtering function for defining which items are displayed when user types into the combo box.
void
setItems(ComboBox.ItemFilter<T> itemFilter, T... items)
Sets the data items of this combo box and a filtering function for defining which items are displayed when user types into the combo box.
void
setLabel(String label)
Sets the label for the combobox.
void
setOpened(boolean opened)
Description copied from corresponding location in WebComponent:
void
setPageSize(int pageSize)
Sets the page size, which is the number of items requested at a time from the data provider.
void
setPattern(String pattern)
Description copied from corresponding location in WebComponent:
void
setPlaceholder(String placeholder)
Description copied from corresponding location in WebComponent:
void
setPreventInvalidInput(boolean preventInvalidInput)
Description copied from corresponding location in WebComponent:
void
setRenderer(Renderer<T> renderer)
Sets the TemplateRenderer responsible to render the individual items in the list of possible choices of the ComboBox.
void
setRequired(boolean required)
Description copied from corresponding location in WebComponent:
void
setRequiredIndicatorVisible(boolean requiredIndicatorVisible)
Sets the required indicator visible or not.
void
setValue(T value)
Sets the value of this object.
protected void
validate()
Description copied from corresponding location in WebComponent:
-
Methods inherited from class com.vaadin.flow.component.combobox.GeneratedVaadinComboBox
addFilterChangeListener, addInvalidChangeListener, addOpenedChangeListener, addSelectedItemChangeListener, addToPrefix, cancel, checkValidity, clearCache, close, getErrorMessageString, getFilteredItemsJsonArray, getFilterString, getItemIdPathString, getItemLabelPathString, getItemsJsonArray, getItemValuePathString, getLabelString, getNameString, getPageSizeDouble, getPatternString, getPlaceholderString, getSelectedItemJsonObject, getSizeDouble, isAllowCustomValueBoolean, isAutofocusBoolean, isClearButtonVisibleBoolean, isDisabledBoolean, isInvalidBoolean, isLoadingBoolean, isOpenedBoolean, isPreventInvalidInputBoolean, isReadonlyBoolean, isRequiredBoolean, open, remove, removeAll, render, setDisabled, setFilter, setFilteredItems, setItemIdPath, setItemLabelPath, setItems, setItemValuePath, setLoading, setName, setPageSize, setReadonly, setSelectedItem, setSize
-
Methods inherited from class com.vaadin.flow.component.AbstractSinglePropertyField
getSynchronizationRegistration, hasValidValue, setPresentationValue, setSynchronizedEvent
-
Methods inherited from class com.vaadin.flow.component.AbstractField
addValueChangeListener, getValue, isEmpty, setModelValue, valueEquals
-
Methods inherited from class com.vaadin.flow.component.Component
addListener, fireEvent, from, get, getChildren, getElement, getEventBus, getId, getLocale, getParent, getTranslation, getTranslation, getTranslation, getTranslation, getUI, hasListener, isAttached, isTemplateMapped, isVisible, onEnabledStateChanged, 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.HasSize
getCssSize, 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.HasHelper
getHelperComponent, getHelperText, setHelperComponent, setHelperText
-
Methods inherited from interface com.vaadin.flow.component.HasElement
getElement
-
Methods inherited from interface com.vaadin.flow.data.binder.HasValidator
getDefaultValidator
-
Methods inherited from interface com.vaadin.flow.component.shared.HasClientValidation
addClientValidatedEventListener
-
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.Focusable
addFocusShortcut, blur, focus, getTabIndex, setTabIndex
-
Methods inherited from interface com.vaadin.flow.component.BlurNotifier
addBlurListener
-
Methods inherited from interface com.vaadin.flow.component.FocusNotifier
addFocusListener
-
Methods inherited from interface com.vaadin.flow.component.HasEnabled
isEnabled, setEnabled
-
Methods inherited from interface com.vaadin.flow.component.HasValueAndElement
isReadOnly, isRequiredIndicatorVisible, setReadOnly
-
Methods inherited from interface com.vaadin.flow.component.HasValue
clear, getOptionalValue
-
Methods inherited from interface com.vaadin.flow.component.AttachNotifier
addAttachListener
-
Methods inherited from interface com.vaadin.flow.component.DetachNotifier
addDetachListener
-
-
-
-
Constructor Detail
-
ComboBox
public ComboBox(int pageSize)
Creates an empty combo box with the defined page size for lazy loading.
The default page size is 50.
The page size is also the largest number of items that can support client-side filtering. If you provide more items than the page size, the component has to fall back to server-side filtering.
Parameters:
pageSize
- the amount of items to request at a time for lazy loadingSee Also:
#setPageSize(int)}
-
ComboBox
public ComboBox()
Default constructor. Creates an empty combo box.
-
ComboBox
public ComboBox(String label)
Creates an empty combo box with the defined label.
Parameters:
label
- the label describing the combo box
-
ComboBox
public ComboBox(String label, Collection<T> items)
Creates a combo box with the defined label and populated with the items in the collection.
Parameters:
label
- the label describing the combo boxitems
- the items to be shown in the list of the combo boxSee Also:
-
ComboBox
@SafeVarargs public ComboBox(String label, T... items)
Creates a combo box with the defined label and populated with the items in the array.
Parameters:
label
- the label describing the combo boxitems
- the items to be shown in the list of the combo boxSee Also:
-
-
Method Detail
-
setValue
public void setValue(T value)
Description copied from interface:
HasValue
Sets the value of this object. If the new value is not equal to
getValue()
, fires a value change event. May throwIllegalArgumentException
if the value is not acceptable.Implementation note: the implementing class should document whether null values are accepted or not, and override
HasValue.getEmptyValue()
if the empty value is notnull
.
-
setRenderer
public void setRenderer(Renderer<T> renderer)
Sets the TemplateRenderer responsible to render the individual items in the list of possible choices of the ComboBox. It doesn't affect how the selected item is rendered - that can be configured by using
setItemLabelGenerator(ItemLabelGenerator)
.Parameters:
renderer
- a renderer for the items in the selection list of the ComboBox, notnull
Note that filtering of the ComboBox is not affected by the renderer that is set here. Filtering is done on the original values and can be affected bysetItemLabelGenerator(ItemLabelGenerator)
.
-
setItems
public void setItems(Collection<T> items)
Sets the data items of this component provided as a collection.
The provided collection instance may be used as-is. Subsequent modification of the collection might cause inconsistent data to be shown in the component unless it is explicitly instructed to read the data again.
Filtering will use a case insensitive match to show all items where the filter text is a substring of the label displayed for that item, which you can configure with
setItemLabelGenerator(ItemLabelGenerator)
.Filtering will be handled in the client-side if the size of the data set is less than the page size. To force client-side filtering with a larger data set (at the cost of increased network traffic), you can increase the page size with
setPageSize(int)
.Setting the items creates a new DataProvider, which in turn resets the combo box's value to
null
. If you want to add and remove items to the current item set without resetting the value, you should update the previously set item collection and callgetDataProvider().refreshAll()
.
-
setItems
public void setItems(ComboBox.ItemFilter<T> itemFilter, Collection<T> items)
Sets the data items of this combo box and a filtering function for defining which items are displayed when user types into the combo box.
Note that defining a custom filter will force the component to make server roundtrips to handle the filtering. Otherwise it can handle filtering in the client-side, if the size of the data set is less than the
pageSize
.Setting the items creates a new DataProvider, which in turn resets the combo box's value to
null
. If you want to add and remove items to the current item set without resetting the value, you should update the previously set item collection and callgetDataProvider().refreshAll()
.Parameters:
itemFilter
- filter to check if an item is shown when user typed some text into the ComboBoxitems
- the data items to display
-
setItems
public void setItems(ComboBox.ItemFilter<T> itemFilter, T... items)
Sets the data items of this combo box and a filtering function for defining which items are displayed when user types into the combo box.
Note that defining a custom filter will force the component to make server roundtrips to handle the filtering. Otherwise it can handle filtering in the client-side, if the size of the data set is less than the
pageSize
.Setting the items creates a new DataProvider, which in turn resets the combo box's value to
null
. If you want to add and remove items to the current item set without resetting the value, you should update the previously set item collection and callgetDataProvider().refreshAll()
.Parameters:
itemFilter
- filter to check if an item is shown when user typed some text into the ComboBoxitems
- the data items to display
-
setDataProvider
public void setDataProvider(DataProvider<T,String> dataProvider)
Sets the data provider for this listing. The data provider is queried for displayed items as needed.
The filter-type of the given data provider must be String so that it can handle the filters typed into the ComboBox by users. If your data provider uses some other type of filter, you can provide a function which converts the ComboBox's filter-string into that type via
setDataProvider(DataProvider, SerializableFunction)
. Another way to do the same thing is to use this method with your data provider converted withDataProvider.withConvertedFilter(SerializableFunction)
.Changing the combo box's data provider resets its current value to
null
.Specified by:
setDataProvider
in interfaceHasFilterableDataProvider<T,String>
Parameters:
dataProvider
- the data provider, notnull
-
setDataProvider
public <C> void setDataProvider(DataProvider<T,C> dataProvider, SerializableFunction<String,C> filterConverter)
Sets the data provider and filter converter for this listing. The data provider is queried for displayed items as needed.
ComboBox triggers filtering queries based on the strings users type into the field. For this reason you need to provide the second parameter, a function which converts the filter-string typed by the user into filter-type used by your data provider. If your data provider already supports String as the filter-type, it can be used without a converter function via
setDataProvider(DataProvider)
.Using this method provides the same result as using a data provider wrapped with
DataProvider.withConvertedFilter(SerializableFunction)
.Changing the combo box's data provider resets its current value to
null
.Specified by:
setDataProvider
in interfaceHasFilterableDataProvider<T,String>
Type Parameters:
C
- the filter typeParameters:
dataProvider
- the data provider, notnull
filterConverter
- a function that converts filter values produced by this listing into filter values expected by the provided data provider, notnull
-
onAttach
protected void onAttach(AttachEvent attachEvent)
Description copied from class:
Component
Called when the component is attached to a UI.
The default implementation does nothing.
This method is invoked before the
AttachEvent
is fired for the component.
-
onDetach
protected void onDetach(DetachEvent detachEvent)
Description copied from class:
Component
Called when the component is detached from a UI.
The default implementation does nothing.
This method is invoked before the
DetachEvent
is fired for the component.
-
setDataProvider
public void setDataProvider(ListDataProvider<T> listDataProvider)
Sets a list data provider as the data provider of this combo box.
Filtering will use a case insensitive match to show all items where the filter text is a substring of the label displayed for that item, which you can configure with
setItemLabelGenerator(ItemLabelGenerator)
.Filtering will be handled in the client-side if the size of the data set is less than the page size. To force client-side filtering with a larger data set (at the cost of increased network traffic), you can increase the page size with
setPageSize(int)
.Changing the combo box's data provider resets its current value to
null
.Parameters:
listDataProvider
- the list data provider to use, notnull
-
setDataProvider
public void setDataProvider(ComboBox.FetchItemsCallback<T> fetchItems, SerializableFunction<String,Integer> sizeCallback)
Sets a CallbackDataProvider using the given fetch items callback and a size callback.
This method is a shorthand for making a
CallbackDataProvider
that handles a partialQuery
object.Changing the combo box's data provider resets its current value to
null
.Parameters:
fetchItems
- a callback for fetching itemssizeCallback
- a callback for getting the count of itemsSee Also:
-
setDataProvider
public void setDataProvider(ComboBox.ItemFilter<T> itemFilter, ListDataProvider<T> listDataProvider)
Sets a list data provider with an item filter as the data provider of this combo box. The item filter is used to compare each item to the filter text entered by the user.
Note that defining a custom filter will force the component to make server roundtrips to handle the filtering. Otherwise it can handle filtering in the client-side, if the size of the data set is less than the
pageSize
.Changing the combo box's data provider resets its current value to
null
.Parameters:
itemFilter
- filter to check if an item is shown when user typed some text into the ComboBoxlistDataProvider
- the list data provider to use, notnull
-
getDataProvider
public DataProvider<T,?> getDataProvider()
Gets the data provider used by this ComboBox.
Returns:
the data provider used by this ComboBox
-
setItemLabelGenerator
public void setItemLabelGenerator(ItemLabelGenerator<T> itemLabelGenerator)
Sets the item label generator that is used to produce the strings shown in the combo box for each item. By default,
String.valueOf(Object)
is used.When the
setRenderer(Renderer)
is used, the ItemLabelGenerator is only used to show the selected item label.Parameters:
itemLabelGenerator
- the item label provider to use, not null
-
getItemLabelGenerator
public ItemLabelGenerator<T> getItemLabelGenerator()
Gets the item label generator that is used to produce the strings shown in the combo box for each item.
Returns:
the item label generator used, not null
-
setPageSize
public void setPageSize(int pageSize)
Sets the page size, which is the number of items requested at a time from the data provider. This does not guarantee a maximum query size to the backend; when the overlay has room to render more new items than the page size, multiple "pages" will be requested at once.
The page size is also the largest number of items that can support client-side filtering. If you provide more items than the page size, the component has to fall back to server-side filtering.
Setting the page size after the ComboBox has been rendered effectively resets the component, and the current page(s) and sent over again.
The default page size is 50.
Parameters:
pageSize
- the maximum number of items sent per request, should be greater than zero
-
getPageSize
public int getPageSize()
Gets the page size, which is the number of items fetched at a time from the data provider.
The page size is also the largest number of items that can support client-side filtering. If you provide more items than the page size, the component has to fall back to server-side filtering.
The default page size is 50.
Returns:
the maximum number of items sent per request
See Also:
#setPageSize(int)}
-
setOpened
public void setOpened(boolean opened)
Description copied from class:
GeneratedVaadinComboBox
Description copied from corresponding location in WebComponent:
True if the dropdown is open, false otherwise.
Overrides:
setOpened
in classGeneratedVaadinComboBox<ComboBox<T>,T>
Parameters:
opened
- the boolean value to set
-
isOpened
public boolean isOpened()
Gets the states of the drop-down.
Returns:
true
if the drop-down is opened,false
otherwise
-
setInvalid
public void setInvalid(boolean invalid)
Description copied from class:
GeneratedVaadinComboBox
Description copied from corresponding location in WebComponent:
Set to true if the value is invalid.
Specified by:
setInvalid
in interfaceHasValidation
Overrides:
setInvalid
in classGeneratedVaadinComboBox<ComboBox<T>,T>
Parameters:
invalid
- the boolean value to set
-
isInvalid
public boolean isInvalid()
Gets the validity of the combobox output.
return true, if the value is invalid.
Specified by:
isInvalid
in interfaceHasValidation
Returns:
the
validity
property from the component
-
setErrorMessage
public void setErrorMessage(String errorMessage)
Description copied from class:
GeneratedVaadinComboBox
Description copied from corresponding location in WebComponent:
The error message to display when the input is invalid.
Specified by:
setErrorMessage
in interfaceHasValidation
Overrides:
setErrorMessage
in classGeneratedVaadinComboBox<ComboBox<T>,T>
Parameters:
errorMessage
- the String value to set
-
getErrorMessage
public String getErrorMessage()
Gets the current error message from the combobox.
Specified by:
getErrorMessage
in interfaceHasValidation
Returns:
the current error message
-
setAllowCustomValue
public void setAllowCustomValue(boolean allowCustomValue)
Enables or disables the component firing events for custom string input.
When enabled, a
CustomValueSetEvent
will be fired when the user inputs a string value that does not match any existing items and commits it eg. by blurring or pressing the enter-key.Note that ComboBox doesn't do anything with the custom value string automatically. Use the
addCustomValueSetListener(ComponentEventListener)
method to determine how the custom value should be handled. For example, when the ComboBox hasString
as the value type, you can add a listener which sets the custom string as the value of the ComboBox withsetValue(Object)
.Setting to
true
also allows an unfocused ComboBox to display a string that doesn't match any of its items nor its current value, unless this is explicitly handled withaddCustomValueSetListener(ComponentEventListener)
. When set tofalse
, an unfocused ComboBox will always display the label of the currently selected item.Overrides:
setAllowCustomValue
in classGeneratedVaadinComboBox<ComboBox<T>,T>
Parameters:
allowCustomValue
-true
to enable custom value set events,false
to disable themSee Also:
-
isAllowCustomValue
public boolean isAllowCustomValue()
If
true
, the user can input string values that do not match to any existing item labels, which will fire aCustomValueSetEvent
.Returns:
true
if the component fires custom value set events,false
otherwiseSee Also:
setAllowCustomValue(boolean)
,addCustomValueSetListener(ComponentEventListener)
-
setAutoOpen
public void setAutoOpen(boolean autoOpen)
Enables or disables the dropdown opening automatically. If
false
the dropdown is only opened when clicking the toggle button or pressing Up or Down arrow keys.Parameters:
autoOpen
-false
to prevent the dropdown from opening automatically
-
isAutoOpen
public boolean isAutoOpen()
Gets whether dropdown will open automatically or not.
Returns:
@{code true} if enabled,
false
otherwise
-
setAutofocus
public void setAutofocus(boolean autofocus)
Set the combobox to be input focused when the page loads.
Overrides:
setAutofocus
in classGeneratedVaadinComboBox<ComboBox<T>,T>
Parameters:
autofocus
- the boolean value to set
-
isAutofocus
public boolean isAutofocus()
Get the state for the auto-focus property of the combobox.
This property is not synchronized automatically from the client side, so the returned value may not be the same as in client side.
Returns:
the
autofocus
property from the combobox
-
setPreventInvalidInput
public void setPreventInvalidInput(boolean preventInvalidInput)
Description copied from class:
GeneratedVaadinComboBox
Description copied from corresponding location in WebComponent:
Set to true to prevent the user from entering invalid input.
Overrides:
setPreventInvalidInput
in classGeneratedVaadinComboBox<ComboBox<T>,T>
Parameters:
preventInvalidInput
- the boolean value to set
-
isPreventInvalidInput
public boolean isPreventInvalidInput()
Determines whether preventing the user from inputing invalid value.
This property is not synchronized automatically from the client side, so the returned value may not be the same as in client side.
Returns:
the
preventInvalidInput
property of the combobox
-
setRequired
public void setRequired(boolean required)
Description copied from class:
GeneratedVaadinComboBox
Description copied from corresponding location in WebComponent:
Set to true to mark the input as required.
Overrides:
setRequired
in classGeneratedVaadinComboBox<ComboBox<T>,T>
Parameters:
required
- the boolean value to set
-
isRequired
public boolean isRequired()
Determines whether the combobox is marked as input required.
This property is not synchronized automatically from the client side, so the returned value may not be the same as in client side.
Returns:
true
if the input is required,false
otherwise
-
setLabel
public void setLabel(String label)
Sets the label for the combobox.
-
getLabel
public String getLabel()
Gets the label of the combobox.
-
setPlaceholder
public void setPlaceholder(String placeholder)
Description copied from class:
GeneratedVaadinComboBox
Description copied from corresponding location in WebComponent:
A placeholder string in addition to the label.
Overrides:
setPlaceholder
in classGeneratedVaadinComboBox<ComboBox<T>,T>
Parameters:
placeholder
- the String value to set
-
getPlaceholder
public String getPlaceholder()
Gets the placeholder of the combobox.
Returns:
the
placeholder
property of the combobox
-
setPattern
public void setPattern(String pattern)
Description copied from class:
GeneratedVaadinComboBox
Description copied from corresponding location in WebComponent:
A pattern to validate the
input
with.Overrides:
setPattern
in classGeneratedVaadinComboBox<ComboBox<T>,T>
Parameters:
pattern
- the String value to set
-
getPattern
public String getPattern()
Gets the valid input pattern
Returns:
the
pattern
property of the combobox
-
getEmptyValue
public T getEmptyValue()
Description copied from interface:
HasValue
Returns the value that represents an empty value.
By default
HasValue
is expected to supportnull
as empty values. Specific implementations might not support this.Specified by:
getEmptyValue
in interfaceHasValue<AbstractField.ComponentValueChangeEvent<ComboBox<T>,T>,T>
Overrides:
getEmptyValue
in classAbstractField<ComboBox<T>,T>
Returns:
empty value
-
addCustomValueSetListener
public Registration addCustomValueSetListener(ComponentEventListener<GeneratedVaadinComboBox.CustomValueSetEvent<ComboBox<T>>> listener)
Adds a listener for the event which is fired when user inputs a string value that does not match any existing items and commits it eg. by blurring or pressing the enter-key.
Note that ComboBox doesn't do anything with the custom value string automatically. Use this method to determine how the custom value should be handled. For example, when the ComboBox has
String
as the value type, you can add a listener which sets the custom string as the value of the ComboBox withsetValue(Object)
.As a side effect, this makes the ComboBox allow custom values. If you want to disable the firing of custom value set events once the listener is added, please disable it explicitly via the
setAllowCustomValue(boolean)
method.The custom value becomes disallowed automatically once the last custom value set listener is removed.
Overrides:
addCustomValueSetListener
in classGeneratedVaadinComboBox<ComboBox<T>,T>
Parameters:
listener
- the listener to be notified when a new value is filledReturns:
a
Registration
for removing the event listenerSee Also:
-
setRequiredIndicatorVisible
public void setRequiredIndicatorVisible(boolean requiredIndicatorVisible)
Description copied from interface:
HasValue
Sets the required indicator visible or not.
If set visible, it is visually indicated in the user interface.
The method is intended to be used with
Binder
which does server-side validation. In case HTML element has its own (client-side) validation it should be disabled whensetRequiredIndicatorVisible(true)
is called and re-enabled back onsetRequiredIndicatorVisible(false)
. It's responsibility of each component implementation to follow the contract so that the method call doesn't do anything else than show/hide the "required" indication. Usually components provide their ownsetRequired
method which should be called in case the client-side validation is required.Specified by:
setRequiredIndicatorVisible
in interfaceHasValue<AbstractField.ComponentValueChangeEvent<ComboBox<T>,T>,T>
Specified by:
setRequiredIndicatorVisible
in interfaceHasValueAndElement<AbstractField.ComponentValueChangeEvent<ComboBox<T>,T>,T>
Parameters:
requiredIndicatorVisible
-true
to make the required indicator visible,false
if not
-
setClearButtonVisible
public void setClearButtonVisible(boolean clearButtonVisible)
Allows displaying a clear button in the combo box when a value is selected.
The clear button is an icon, which can be clicked to set the combo box value to
null
.Overrides:
setClearButtonVisible
in classGeneratedVaadinComboBox<ComboBox<T>,T>
Parameters:
clearButtonVisible
-true
to display the clear button,false
to hide it
-
isClearButtonVisible
public boolean isClearButtonVisible()
Gets whether this combo box displays a clear button when a value is selected.
Returns:
true
if this combo box displays a clear button,false
otherwiseSee Also:
-
validate
protected void validate()
Description copied from class:
GeneratedVaadinComboBox
Description copied from corresponding location in WebComponent:
Returns true if
value
is valid, and sets theinvalid
flag appropriately.This function is not supported by Flow because it returns a
boolean
. Functions with return types different than void are not supported at this moment.Overrides:
validate
in classGeneratedVaadinComboBox<ComboBox<T>,T>
-
addValidationStatusChangeListener
public Registration addValidationStatusChangeListener(ValidationStatusChangeListener<T> listener)
Description copied from interface:
HasValidator
Enables the implementing components to notify changes in their validation status to the observers.
Note: This method can be overridden by the implementing classes e.g. components, to enable the associated
Binder.Binding
instance subscribing for their validation change events and revalidate itself.This method primarily designed for notifying the Binding about the validation status changes of a bound component at the client-side. WebComponents such as
<vaadin-date-picker>
or any other component that accept a formatted text as input should be able to communicate their invalid status to their server-side instance, and a bound server-side component instance must notify its binding about this validation status change as well. When the binding instance revalidates, a chain of validators and convertors get executed one of which is the default validator provided byHasValidator.getDefaultValidator()
. Thus, In order for the binding to be able to show/clear errors for its associated bound field, it is important that implementing components take that validation status into account while implementing any validator and converter includingHasValidator.getDefaultValidator()
. Here is an example:@Tag("date-picker-demo") public class DatePickerDemo implements HasValidator<LocalDate> { // Each web component has a way to communicate its validation status // to its server-side component instance. The following clientSideValid // state is introduced here just for the sake of simplicity of this code // snippet: boolean clientSideValid = true; /** * Note how
clientSideValid
engaged in the definition * of this method. It is important to reflect this status either * in the returning validation result of this method or any other * validation that is associated with this component. */ @Override public Validator getDefaultValidator() { return (value, valueContext) -> clientSideValid ? ValidationResult.ok() : ValidationResult.error("Invalid date format"); } private final Collection<ValidationStatusChangeListener<LocalDate>> validationStatusListeners = new ArrayList<>(); /** * This enables the binding to subscribe for the validation status * change events that are fired by this component and revalidate * itself respectively. */ @Override public Registration addValidationStatusChangeListener( ValidationStatusChangeListener<LocalDate> listener) { validationStatusListeners.add(listener); return () -> validationStatusListeners.remove(listener); } private void fireValidationStatusChangeEvent( boolean newValidationStatus) { if (this.clientSideValid != newValidationStatus) { this.clientSideValid = newValidationStatus; var event = new ValidationStatusChangeEvent<>(this, newValidationStatus); validationStatusListeners.forEach( listener -> listener.validationStatusChanged(event)); } } }Specified by:
addValidationStatusChangeListener
in interfaceHasValidator<T>
Returns:
Registration of the added listener.
See Also:
-
isEnforcedFieldValidationEnabled
protected boolean isEnforcedFieldValidationEnabled()
-
-