com.vaadin.ui.
Class CustomField<T>
- java.lang.Object
-
- com.vaadin.server.AbstractClientConnector
-
- com.vaadin.ui.AbstractComponent
-
- com.vaadin.ui.AbstractField<T>
-
- com.vaadin.ui.CustomField<T>
-
Type Parameters:
T
- field value typeAll Implemented Interfaces:
HasValue<T>
,ContextClickEvent.ContextClickNotifier
,MethodEventSource
,ClientConnector
,Sizeable
,Connector
,Component
,Component.Focusable
,HasComponents
,Serializable
,Iterable<Component>
Direct Known Subclasses:
public abstract class CustomField<T> extends AbstractField<T> implements HasComponents
A
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
initContent()
.Most custom fields can simply compose a user interface that calls the methods
AbstractField.doSetValue(Object)
andHasValue.getValue()
when necessary.Since:
8.0
See Also:
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.vaadin.server.ClientConnector
ClientConnector.AttachEvent, ClientConnector.AttachListener, ClientConnector.ConnectorErrorEvent, ClientConnector.DetachEvent, ClientConnector.DetachListener
-
Nested classes/interfaces inherited from interface com.vaadin.ui.Component
Component.ErrorEvent, Component.Event, Component.Focusable, Component.Listener
-
Nested classes/interfaces inherited from interface com.vaadin.ui.HasComponents
HasComponents.ComponentAttachDetachNotifier, HasComponents.ComponentAttachEvent, HasComponents.ComponentAttachListener, HasComponents.ComponentDetachEvent, HasComponents.ComponentDetachListener
-
Nested classes/interfaces inherited from interface com.vaadin.data.HasValue
HasValue.ValueChangeEvent<V>, HasValue.ValueChangeListener<V>
-
Nested classes/interfaces inherited from interface com.vaadin.server.Sizeable
Sizeable.Unit
-
-
Field Summary
-
Fields inherited from class com.vaadin.ui.AbstractComponent
DESIGN_ATTR_PLAIN_TEXT
-
Fields inherited from interface com.vaadin.server.Sizeable
SIZE_UNDEFINED, UNITS_CM, UNITS_EM, UNITS_EX, UNITS_INCH, UNITS_MM, UNITS_PERCENTAGE, UNITS_PICAS, UNITS_PIXELS, UNITS_POINTS
-
-
Constructor Summary
Constructors Constructor Description CustomField()
Constructs a new custom field.
-
Method Summary
All Methods Modifier and Type Method Description void
attach()
Constructs the content and notifies it that the
CustomField
is attached to a window.void
focus()
Sets the focus for this component if the component is
Component.Focusable
.protected Component
getContent()
Returns the content (UI) of the custom component.
protected CustomFieldState
getState()
Returns the shared state bean with information to be sent from the server to the client.
protected CustomFieldState
getState(boolean markAsDirty)
Returns the shared state for this connector.
int
getTabIndex()
Gets the tabulator index of the
Focusable
component.protected abstract Component
initContent()
Create the content component or layout for the field.
Iterator<Component>
iterator()
Gets an iterator to the collection of contained components.
void
setFocusDelegate(Component.Focusable focusDelegate)
Sets the component to which all methods from the
Component.Focusable
interface should be delegated.void
setHeight(float height, Sizeable.Unit unit)
Sets the height of the object.
void
setTabIndex(int tabIndex)
Sets the tabulator index of the
Focusable
component.void
setWidth(float width, Sizeable.Unit unit)
Sets the width of the object.
-
Methods inherited from class com.vaadin.ui.AbstractField
addValueChangeListener, createValueChange, doSetValue, getCustomAttributes, isDifferentValue, isReadOnly, isRequiredIndicatorVisible, readDesign, setReadOnly, setRequiredIndicatorVisible, setValue, setValue, writeDesign
-
Methods inherited from class com.vaadin.ui.AbstractComponent
addContextClickListener, addListener, addShortcutListener, addStyleName, beforeClientResponse, detach, findAncestor, fireComponentErrorEvent, fireComponentEvent, getActionManager, getCaption, getComponentError, getData, getDebugId, getDescription, getErrorMessage, getHeight, getHeightUnits, getIcon, getId, getLocale, getParent, getPrimaryStyleName, getStyleName, getWidth, getWidthUnits, isCaptionAsHtml, isConnectorEnabled, isEnabled, isOrHasAncestor, isResponsive, isVisible, removeContextClickListener, removeListener, removeShortcutListener, removeStyleName, setCaption, setCaptionAsHtml, setComponentError, setData, setDebugId, setDescription, setDescription, setEnabled, setHeight, setHeightFull, setHeightUndefined, setIcon, setId, setLocale, setParent, setPrimaryStyleName, setResponsive, setSizeFull, setSizeUndefined, setStyleName, setVisible, setWidth, setWidthFull, setWidthUndefined
-
Methods inherited from class com.vaadin.server.AbstractClientConnector
addAttachListener, addDetachListener, addExtension, addListener, addListener, addListener, addListener, addListener, addListener, addMethodInvocationToQueue, createState, encodeState, equals, fireEvent, getAllChildrenIterable, getConnectorId, getErrorHandler, getExtensions, getListeners, getResource, getRpcManager, getRpcProxy, getSession, getStateType, getUI, handleConnectorRequest, hashCode, hasListeners, isAttached, isThis, markAsDirty, markAsDirtyRecursive, registerRpc, registerRpc, removeAttachListener, removeDetachListener, removeExtension, removeListener, removeListener, removeListener, removeListener, removeListener, requestRepaint, requestRepaintAll, retrievePendingRpcCalls, setErrorHandler, setResource, updateDiffstate
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.vaadin.server.ClientConnector
addAttachListener, addDetachListener, beforeClientResponse, detach, encodeState, getErrorHandler, getExtensions, getRpcManager, getStateType, handleConnectorRequest, isAttached, isConnectorEnabled, markAsDirty, markAsDirtyRecursive, removeAttachListener, removeDetachListener, removeExtension, requestRepaint, requestRepaintAll, retrievePendingRpcCalls, setErrorHandler
-
Methods inherited from interface com.vaadin.ui.Component
addListener, addStyleName, addStyleNames, getCaption, getDescription, getIcon, getId, getLocale, getParent, getPrimaryStyleName, getStyleName, getUI, isEnabled, isVisible, readDesign, removeListener, removeStyleName, removeStyleNames, setCaption, setEnabled, setIcon, setId, setParent, setPrimaryStyleName, setStyleName, setStyleName, setVisible, writeDesign
-
Methods inherited from interface com.vaadin.shared.Connector
getConnectorId
-
Methods inherited from interface com.vaadin.data.HasValue
clear, getDefaultValidator, getEmptyValue, getOptionalValue, getValue, isEmpty
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Methods inherited from interface com.vaadin.server.Sizeable
getHeight, getHeightUnits, getWidth, getWidthUnits, setHeight, setHeightFull, setHeightUndefined, setSizeFull, setSizeUndefined, setWidth, setWidthFull, setWidthUndefined
-
-
-
-
Method Detail
-
attach
public void attach()
Constructs the content and notifies it that the
CustomField
is attached to a window.Specified by:
attach
in interfaceClientConnector
Specified by:
Overrides:
attach
in classAbstractComponent
See Also:
-
getContent
protected Component getContent()
Returns the content (UI) of the custom component.
Returns:
Component
-
initContent
protected abstract Component initContent()
Create the content component or layout for the field. Subclasses of
CustomField
should implement this method. Note that this method is called when the CustomField is attached to a layout or whengetContent()
is called explicitly for the first time. It is only called once for aCustomField
.Returns:
Component
representing the UI of the CustomField
-
setHeight
public void setHeight(float height, Sizeable.Unit unit)
Description copied from interface:
Sizeable
Sets the height of the object. Negative number implies unspecified size (terminal is free to set the size).
Specified by:
setHeight
in interfaceSizeable
Overrides:
setHeight
in classAbstractComponent
Parameters:
height
- the height of the object.unit
- the unit used for the width.
-
setWidth
public void setWidth(float width, Sizeable.Unit unit)
Description copied from interface:
Sizeable
Sets the width of the object. Negative number implies unspecified size (terminal is free to set the size).
Specified by:
setWidth
in interfaceSizeable
Overrides:
setWidth
in classAbstractComponent
Parameters:
width
- the width of the object.unit
- the unit used for the width.
-
getState
protected CustomFieldState getState()
Description copied from class:
AbstractComponent
Returns the shared state bean with information to be sent from the server to the client. Subclasses should override this method and set any relevant fields of the state returned by super.getState().
Overrides:
getState
in classAbstractField<T>
Returns:
updated component shared state
-
getState
protected CustomFieldState getState(boolean markAsDirty)
Description copied from class:
AbstractClientConnector
Returns the shared state for this connector.
Overrides:
getState
in classAbstractField<T>
Parameters:
markAsDirty
- true if the connector should automatically be marked dirty, false otherwiseReturns:
The shared state for this connector. Never null.
See Also:
-
iterator
public Iterator<Component> iterator()
Description copied from interface:
HasComponents
Gets an iterator to the collection of contained components. Using this iterator it is possible to step through all components contained in this container.
The iterator is typically unmodifiable, and calls to
Iterator.remove()
throw an exception.Specified by:
iterator
in interfaceHasComponents
Specified by:
iterator
in interfaceIterable<T>
Returns:
the component iterator.
-
setFocusDelegate
public void setFocusDelegate(Component.Focusable focusDelegate)
Sets the component to which all methods from the
Component.Focusable
interface should be delegated.Set this to a wrapped field to include that field in the tabbing order, to make it receive focus when
focus()
is called and to make it be correctly focused when used as a Grid editor component.By default,
Component.Focusable
events are handled by the super class and ultimately ignored.Parameters:
focusDelegate
- the focusable component to which focus events are redirected
-
focus
public void focus()
Description copied from class:
AbstractComponent
Sets the focus for this component if the component is
Component.Focusable
.Specified by:
focus
in interfaceComponent.Focusable
Overrides:
focus
in classAbstractField<T>
See Also:
FieldEvents
,FieldEvents.FocusEvent
,FieldEvents.FocusListener
,FieldEvents.BlurEvent
,FieldEvents.BlurListener
-
getTabIndex
public int getTabIndex()
Description copied from interface:
Component.Focusable
Gets the tabulator index of the
Focusable
component.Specified by:
getTabIndex
in interfaceComponent.Focusable
Overrides:
getTabIndex
in classAbstractField<T>
Returns:
tab index set for the
Focusable
componentSee Also:
-
setTabIndex
public void setTabIndex(int tabIndex)
Description copied from interface:
Component.Focusable
Sets the tabulator index of the
Focusable
component. The tab index property is used to specify the order in which the fields are focused when the user presses the Tab key. Components with a defined tab index are focused sequentially first, and then the components with no tab index.Form loginBox = new Form(); loginBox.setCaption("Login"); layout.addComponent(loginBox); // Create the first field which will be focused TextField username = new TextField("User name"); loginBox.addField("username", username); // Set focus to the user name username.focus(); TextField password = new TextField("Password"); loginBox.addField("password", password); Button login = new Button("Login"); loginBox.getFooter().addComponent(login); // An additional component which natural focus order would // be after the button. CheckBox remember = new CheckBox("Remember me"); loginBox.getFooter().addComponent(remember); username.setTabIndex(1); password.setTabIndex(2); remember.setTabIndex(3); // Different than natural place login.setTabIndex(4);
After all focusable user interface components are done, the browser can begin again from the component with the smallest tab index, or it can take the focus out of the page, for example, to the location bar.
If the tab index is not set (is set to zero), the default tab order is used. The order is somewhat browser-dependent, but generally follows the HTML structure of the page.
A negative value means that the component is completely removed from the tabulation order and can not be reached by pressing the Tab key at all.
Specified by:
setTabIndex
in interfaceComponent.Focusable
Overrides:
setTabIndex
in classAbstractField<T>
Parameters:
tabIndex
- the tab order of this component. Indexes usually start from 1. Zero means that default tab order should be used. A negative value means that the field should not be included in the tabbing sequence.See Also:
-
-