com.vaadin.ui.

Class AbstractComponent

    • Constructor Detail

      • AbstractComponent

        public AbstractComponent()

        Constructs a new Component.

    • Method Detail

      • setId

        public void setId​(String id)

        Description copied from interface: Component

        Adds an unique id for component that is used in the client-side for testing purposes. Keeping identifiers unique is the responsibility of the programmer.

        Specified by:

        setId in interface Component

        Parameters:

        id - An alphanumeric id

      • getId

        public String getId()

        Description copied from interface: Component

        Gets currently set debug identifier.

        Specified by:

        getId in interface Component

        Returns:

        current id, null if not set

      • getStyleName

        public String getStyleName()

        Description copied from interface: Component

        Gets all user-defined CSS style names of a component. If the component has multiple style names defined, the return string is a space-separated list of style names. Built-in style names defined in Vaadin or GWT are not returned.

        The style names are returned only in the basic form in which they were added; each user-defined style name shows as two CSS style class names in the rendered HTML: one as it was given and one prefixed with the component-specific style name. Only the former is returned.

        Specified by:

        getStyleName in interface Component

        Returns:

        the style name or a space-separated list of user-defined style names of the component

        See Also:

        Component.setStyleName(String), Component.addStyleName(String), Component.removeStyleName(String)

      • setStyleName

        public void setStyleName​(String style)

        Description copied from interface: Component

        Sets one or more user-defined style names of the component, replacing any previous user-defined styles. Multiple styles can be specified as a space-separated list of style names. The style names must be valid CSS class names and should not conflict with any built-in style names in Vaadin or GWT.

         Label label = new Label("This text has a lot of style");
         label.setStyleName("myonestyle myotherstyle");
         

        Each style name will occur in two versions: one as specified and one that is prefixed with the style name of the component. For example, if you have a Button component and give it "mystyle" style, the component will have both "mystyle" and "v-button-mystyle" styles. You could then style the component either with:

         .myonestyle {background: blue;}
         

        or

         .v-button-myonestyle {background: blue;}
         

        It is normally a good practice to use addStyleName() rather than this setter, as different software abstraction layers can then add their own styles without accidentally removing those defined in other layers.

        Specified by:

        setStyleName in interface Component

        Parameters:

        style - the new style or styles of the component as a space-separated list

        See Also:

        Component.getStyleName(), Component.addStyleName(String), Component.removeStyleName(String)

      • setPrimaryStyleName

        public void setPrimaryStyleName​(String style)

        Description copied from interface: Component

        Changes the primary style name of the component.

        The primary style name identifies the component when applying the CSS theme to the Component. By changing the style name all CSS rules targeted for that style name will no longer apply, and might result in the component not working as intended.

        To preserve the original style of the component when changing to a new primary style you should make your new primary style inherit the old primary style using the SASS @include directive. See more in the SASS tutorials.

        Specified by:

        setPrimaryStyleName in interface Component

        Parameters:

        style - The new primary style name

      • addStyleName

        public void addStyleName​(String style)

        Description copied from interface: Component

        Adds one or more style names to this component. Multiple styles can be specified as a space-separated list of style names. The style name will be rendered as a HTML class name, which can be used in a CSS definition.

         Label label = new Label("This text has style");
         label.addStyleName("mystyle");
         

        Each style name will occur in two versions: one as specified and one that is prefixed with the style name of the component. For example, if you have a Button component and give it "mystyle" style, the component will have both "mystyle" and "v-button-mystyle" styles. You could then style the component either with:

         .mystyle {font-style: italic;}
         

        or

         .v-button-mystyle {font-style: italic;}
         

        Specified by:

        addStyleName in interface Component

        Parameters:

        style - the new style to be added to the component

        See Also:

        Component.getStyleName(), Component.setStyleName(String), Component.removeStyleName(String)

      • setCaption

        public void setCaption​(String caption)

        Description copied from interface: Component

        Sets the caption of the component.

        A caption is an explanatory textual label accompanying a user interface component, usually shown above, left of, or inside the component. Icon (see setIcon() is closely related to caption and is usually displayed horizontally before or after it, depending on the component and the containing layout.

        The caption can usually also be given as the first parameter to a constructor, though some components do not support it.

         RichTextArea area = new RichTextArea();
         area.setCaption("You can edit stuff here");
         area.setValue("<h1>Helpful Heading</h1>"
                 + "<p>All this is for you to edit.</p>");
         

        The contents of a caption are automatically quoted, so no raw HTML can be rendered in a caption. The validity of the used character encoding, usually UTF-8, is not checked.

        The caption of a component is, by default, managed and displayed by the layout component or component container in which the component is placed. For example, the VerticalLayout component shows the captions left-aligned above the contained components, while the FormLayout component shows the captions on the left side of the vertically laid components, with the captions and their associated components left-aligned in their own columns. The CustomComponent does not manage the caption of its composition root, so if the root component has a caption, it will not be rendered. Some components, such as Button and Panel, manage the caption themselves and display it inside the component.

        Specified by:

        setCaption in interface Component

        Parameters:

        caption - the new caption for the component. If the caption is null, no caption is shown and it does not normally take any space

      • setCaptionAsHtml

        public void setCaptionAsHtml​(boolean captionAsHtml)

        Sets whether the caption is rendered as HTML.

        If set to true, the captions are rendered in the browser as HTML and the developer is responsible for ensuring no harmful HTML is used. If set to false, the caption is rendered in the browser as plain text.

        The default is false, i.e. to render that caption as plain text.

        Parameters:

        captionAsHtml - true if the captions are rendered as HTML, false if rendered as plain text

      • isCaptionAsHtml

        public boolean isCaptionAsHtml()

        Checks whether captions are rendered as HTML

        The default is false, i.e. to render that caption as plain text.

        Returns:

        true if the captions are rendered as HTML, false if rendered as plain text

      • getLocale

        public Locale getLocale()

        Description copied from interface: Component

        Gets the locale of the component.

        If a component does not have a locale set, the locale of its parent is returned, and so on. Eventually, if no parent has locale set, the locale of the application is returned. If the application does not have a locale set, it is determined by Locale.getDefault().

        As the component must be attached before its locale can be acquired, using this method in the internationalization of component captions, etc. is generally not feasible. For such use case, we recommend using an otherwise acquired reference to the application locale.

        Specified by:

        getLocale in interface Component

        Returns:

        Locale of this component or null if the component and none of its parents has a locale set and the component is not yet attached to an application.

      • setLocale

        public void setLocale​(Locale locale)

        Sets the locale of this component.

         // Component for which the locale is meaningful
         InlineDateField date = new InlineDateField("Datum");
        
         // German language specified with ISO 639-1 language
         // code and ISO 3166-1 alpha-2 country code.
         date.setLocale(new Locale("de", "DE"));
        
         date.setResolution(DateField.RESOLUTION_DAY);
         layout.addComponent(date);
         

        Parameters:

        locale - the locale to become this component's locale.

      • isEnabled

        public boolean isEnabled()

        Description copied from interface: Component

        Tests whether the component is enabled or not. A user can not interact with disabled components. Disabled components are rendered in a style that indicates the status, usually in gray color. Children of a disabled component are also disabled. Components are enabled by default.

        As a security feature, all updates for disabled components are blocked on the server-side.

        Note that this method only returns the status of the component and does not take parents into account. Even though this method returns true the component can be disabled to the user if a parent is disabled.

        Specified by:

        isEnabled in interface Component

        Returns:

        true if the component and its parent are enabled, false otherwise.

        See Also:

        VariableOwner.isEnabled()

      • setEnabled

        public void setEnabled​(boolean enabled)

        Description copied from interface: Component

        Enables or disables the component. The user can not interact with disabled components, which are shown with a style that indicates the status, usually shaded in light gray color. Components are enabled by default.

         Button enabled = new Button("Enabled");
         enabled.setEnabled(true); // The default
         layout.addComponent(enabled);
        
         Button disabled = new Button("Disabled");
         disabled.setEnabled(false);
         layout.addComponent(disabled);
         

        Specified by:

        setEnabled in interface Component

        Parameters:

        enabled - a boolean value specifying if the component should be enabled or not

      • isVisible

        public boolean isVisible()

        Description copied from interface: Component

        Tests the visibility property of the component.

        Visible components are drawn in the user interface, while invisible ones are not. The effect is not merely a cosmetic CSS change - no information about an invisible component will be sent to the client. The effect is thus the same as removing the component from its parent. Making a component invisible through this property can alter the positioning of other components.

        A component is visible only if all its parents are also visible. This is not checked by this method though, so even if this method returns true, the component can be hidden from the user because a parent is set to invisible.

        Specified by:

        isVisible in interface Component

        Returns:

        true if the component has been set to be visible in the user interface, false if not

        See Also:

        Component.setVisible(boolean), Component.attach()

      • setVisible

        public void setVisible​(boolean visible)

        Description copied from interface: Component

        Sets the visibility of the component.

        Visible components are drawn in the user interface, while invisible ones are not. The effect is not merely a cosmetic CSS change - no information about an invisible component will be sent to the client. The effect is thus the same as removing the component from its parent.

         TextField readonly = new TextField("Read-Only");
         readonly.setValue("You can't see this!");
         readonly.setVisible(false);
         layout.addComponent(readonly);
         

        A component is visible only if all of its parents are also visible. If a component is explicitly set to be invisible, changes in the visibility of its parents will not change the visibility of the component.

        Specified by:

        setVisible in interface Component

        Parameters:

        visible - the boolean value specifying if the component should be visible after the call or not.

        See Also:

        Component.isVisible()

      • getDescription

        public String getDescription()

        Description copied from interface: Component

        Gets the components description, used in tooltips and can be displayed directly in certain other components such as forms. The description can be used to briefly describe the state of the component to the user. The description string may contain certain XML tags:

        Tag Description Example
        <b> bold bold text
        <i> italic italic text
        <u> underlined underlined text
        <br> linebreak N/A
        <ul>
        <li>item1
        <li>item1
        </ul>
        item list
        • item1
        • item2

        These tags may be nested.

        Specified by:

        getDescription in interface Component

        Returns:

        component's description String

      • setDescription

        public void setDescription​(String description)

        Sets the component's description. See getDescription() for more information on what the description is.

        Parameters:

        description - the new description string for the component.

        See Also:

        setDescription(String, ContentMode)

      • setDescription

        public void setDescription​(String description,
                                   ContentMode mode)

        Sets the component's description using given content mode. See getDescription() for more information on what the description is.

        If the content mode is ContentMode.HTML the description is displayed as HTML in tooltips or directly in certain components so care should be taken to avoid creating the possibility for HTML injection and possibly XSS vulnerabilities.

        Parameters:

        description - the new description string for the component.

        mode - the content mode for the description

        Since:

        8.0

      • getParent

        public HasComponents getParent()

        Description copied from interface: Component

        Gets the parent component of the component.

        Components can be nested but a component can have only one parent. A component that contains other components, that is, can be a parent, should usually inherit the ComponentContainer interface.

        Specified by:

        getParent in interface ClientConnector

        Specified by:

        getParent in interface Component

        Specified by:

        getParent in interface Connector

        Returns:

        the parent component

      • setParent

        public void setParent​(HasComponents parent)

        Description copied from interface: Component

        Sets the parent connector of the component.

        This method automatically calls Component.attach() if the component becomes attached to the session, regardless of whether it was attached previously. Conversely, if the component currently is attached to the session, ClientConnector.detach() is called for the connector before attaching it to a new parent.

        This method is rarely called directly. ComponentContainer.addComponent(Component) or a HasComponents specific method is normally used for adding components to a parent and the used method will call this method implicitly.

        Specified by:

        setParent in interface Component

        Parameters:

        parent - the parent connector

      • findAncestor

        public <T extends HasComponents> T findAncestor​(Class<T> parentType)

        Returns the closest ancestor with the given type.

        To find the Window that contains the component, use Window w = getParent(Window.class);

        Type Parameters:

        T - The type of the ancestor

        Parameters:

        parentType - The ancestor class we are looking for

        Returns:

        The first ancestor that can be assigned to the given class. Null if no ancestor with the correct type could be found.

      • getErrorMessage

        public ErrorMessage getErrorMessage()

        Gets the error message for this component.

        Returns:

        ErrorMessage containing the description of the error state of the component or null, if the component contains no errors. Extending classes should override this method if they support other error message types such as validation errors or buffering errors. The returned error message contains information about all the errors.

      • getComponentError

        public ErrorMessage getComponentError()

        Gets the component's error message.

        Returns:

        the component's error message.

      • setComponentError

        public void setComponentError​(ErrorMessage componentError)

        Sets the component's error message. The message may contain certain XML tags, for more information see ErrorMessage.

        Parameters:

        componentError - the new ErrorMessage of the component.

      • focus

        protected void focus()

        Sets the focus for this component if the component is Component.Focusable.

      • getState

        protected AbstractComponentState getState()

        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 class AbstractClientConnector

        Returns:

        updated component shared state

        Since:

        7.0

      • beforeClientResponse

        public void beforeClientResponse​(boolean initial)

        Description copied from interface: ClientConnector

        Called before the shared state and RPC invocations are sent to the client. Gives the connector an opportunity to set computed/dynamic state values or to invoke last minute RPC methods depending on other component features.

        Specified by:

        beforeClientResponse in interface ClientConnector

        Overrides:

        beforeClientResponse in class AbstractClientConnector

        Parameters:

        initial - true if the client-side connector will be created and initialized after this method has been invoked. false if there is already an initialized client-side connector.

      • addListener

        public Registration addListener​(Component.Listener listener)

        Description copied from interface: Component

        Registers a new (generic) component event listener for the component.

         class Listening extends CustomComponent implements Listener {
             // Stored for determining the source of an event
             Button ok;
        
             Label status; // For displaying info about the event
        
             public Listening() {
                 VerticalLayout layout = new VerticalLayout();
        
                 // Some miscellaneous component
                 TextField name = new TextField("Say it all here");
                 name.addListener(this);
                 layout.addComponent(name);
        
                 // Handle button clicks as generic events instead
                 // of Button.ClickEvent events
                 ok = new Button("OK");
                 ok.addListener(this);
                 layout.addComponent(ok);
        
                 // For displaying information about an event
                 status = new Label("");
                 layout.addComponent(status);
        
                 setCompositionRoot(layout);
             }
        
             public void componentEvent(Event event) {
                 // Act according to the source of the event
                 if (event.getSource() == ok)
                     getWindow().showNotification("Click!");
        
                 status.setValue(
                         "Event from " + event.getSource().getClass().getName()
                                 + ": " + event.getClass().getName());
             }
         }
        
         Listening listening = new Listening();
         layout.addComponent(listening);
         

        Specified by:

        addListener in interface Component

        Parameters:

        listener - the new Listener to be registered.

        Returns:

        a registration object for removing this listener

        See Also:

        Component.Event, Registration

      • fireComponentEvent

        protected void fireComponentEvent()

        Emits the component event. It is transmitted to all registered listeners interested in such events.

      • fireComponentErrorEvent

        protected void fireComponentErrorEvent()

        Emits the component error event. It is transmitted to all registered listeners interested in such events.

      • setData

        public void setData​(Object data)

        Sets the data object, that can be used for any application specific data. The component does not use or modify this data.

        Parameters:

        data - the Application specific data.

        Since:

        3.1

      • getData

        public Object getData()

        Gets the application specific data. See setData(Object).

        Returns:

        the Application specific data set with setData function.

        Since:

        3.1

      • getHeight

        public float getHeight()

        Description copied from interface: Sizeable

        Gets the height of the object. Negative number implies unspecified size (terminal is free to set the size).

        Specified by:

        getHeight in interface Sizeable

        Returns:

        height of the object in units specified by heightUnits property.

      • getHeightUnits

        public Sizeable.Unit getHeightUnits()

        Description copied from interface: Sizeable

        Gets the height property units.

        Specified by:

        getHeightUnits in interface Sizeable

        Returns:

        units used in height property.

      • getWidth

        public float getWidth()

        Description copied from interface: Sizeable

        Gets the width of the object. Negative number implies unspecified size (terminal is free to set the size).

        Specified by:

        getWidth in interface Sizeable

        Returns:

        width of the object in units specified by widthUnits property.

      • getWidthUnits

        public Sizeable.Unit getWidthUnits()

        Description copied from interface: Sizeable

        Gets the width property units.

        Specified by:

        getWidthUnits in interface Sizeable

        Returns:

        units used in width property.

      • 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 interface Sizeable

        Parameters:

        height - the height of the object.

        unit - the unit used for the width.

      • setSizeFull

        public void setSizeFull()

        Description copied from interface: Sizeable

        Sets the size to 100% x 100%.

        Specified by:

        setSizeFull in interface Sizeable

      • setWidthFull

        public void setWidthFull()

        Description copied from interface: Sizeable

        Sets the width to 100%.

        Specified by:

        setWidthFull in interface Sizeable

      • setHeightFull

        public void setHeightFull()

        Description copied from interface: Sizeable

        Sets the height to 100%.

        Specified by:

        setHeightFull in interface Sizeable

      • setSizeUndefined

        public void setSizeUndefined()

        Description copied from interface: Sizeable

        Clears any size settings.

        Specified by:

        setSizeUndefined in interface Sizeable

      • setWidthUndefined

        public void setWidthUndefined()

        Description copied from interface: Sizeable

        Clears any defined width.

        Specified by:

        setWidthUndefined in interface Sizeable

      • setHeightUndefined

        public void setHeightUndefined()

        Description copied from interface: Sizeable

        Clears any defined height.

        Specified by:

        setHeightUndefined in interface Sizeable

      • 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 interface Sizeable

        Parameters:

        width - the width of the object.

        unit - the unit used for the width.

      • setWidth

        public void setWidth​(String width)

        Description copied from interface: Sizeable

        Sets the width of the component using String presentation. String presentation is similar to what is used in Cascading Style Sheets. Size can be length or percentage of available size. The empty string ("") or null will unset the width and set the units to pixels. See CSS specification for more details.

        Specified by:

        setWidth in interface Sizeable

        Parameters:

        width - in CSS style string representation, null or empty string to reset

      • setHeight

        public void setHeight​(String height)

        Description copied from interface: Sizeable

        Sets the height of the component using String presentation. String presentation is similar to what is used in Cascading Style Sheets. Size can be length or percentage of available size. The empty string ("") or null will unset the height and set the units to pixels. See CSS specification for more details.

        Specified by:

        setHeight in interface Sizeable

        Parameters:

        height - in CSS style string representation

      • readDesign

        public void readDesign​(org.jsoup.nodes.Element design,
                               DesignContext designContext)

        Description copied from interface: Component

        Reads the component state from the given design.

        The component is responsible not only for updating its own state but also for ensuring that its children update their state based on the design.

        It is assumed that the component is in its default state when this method is called. Reading should only take into consideration attributes specified in the design and not reset any unspecified attributes to their defaults.

        This method must not modify the design.

        Specified by:

        readDesign in interface Component

        Parameters:

        design - The element to obtain the state from

        designContext - The DesignContext instance used for parsing the design

      • setResponsive

        public void setResponsive​(boolean responsive)

        Toggles responsiveness of this component.

        Parameters:

        responsive - boolean enables responsiveness, false disables

        Since:

        7.5.0

      • isResponsive

        public boolean isResponsive()

        Returns true if the component is responsive.

        Returns:

        true if the component is responsive

        Since:

        7.5.0

      • setReadOnly

        protected void setReadOnly​(boolean readOnly)

        Sets the read-only status in the state of this AbstractComponent. This method should be made public in Components that implement HasValue.

        Parameters:

        readOnly - a boolean value specifying whether the component is put read-only mode or not

      • isReadOnly

        protected boolean isReadOnly()

        Returns the read-only status from the state of this AbstractComponent. This method should be made public in Components that implement HasValue.

        Returns:

        true if state has read-only on; false if not

        See Also:

        setReadOnly(boolean)

      • getCustomAttributes

        protected Collection<String> getCustomAttributes()

        Returns a collection of attributes that should not be handled by the basic implementation of the readDesign(Element, DesignContext) and writeDesign(Element, DesignContext) methods. Typically these are handled in a custom way in the overridden versions of the above methods

        Returns:

        the collection of attributes that are not handled by the basic implementation

        Since:

        7.4

      • writeDesign

        public void writeDesign​(org.jsoup.nodes.Element design,
                                DesignContext designContext)

        Description copied from interface: Component

        Writes the component state to the given design.

        The component is responsible not only for writing its own state but also for ensuring that its children write their state to the design.

        This method must not modify the component state.

        Specified by:

        writeDesign in interface Component

        Parameters:

        design - The element to write the component state to. Any previous attributes or child nodes are not cleared.

        designContext - The DesignContext instance used for writing the design

      • isOrHasAncestor

        protected boolean isOrHasAncestor​(Component content)

        Determine whether a content component is equal to, or the ancestor of this component.

        Parameters:

        content - the potential ancestor element

        Returns:

        true if the relationship holds

      • setRequiredIndicatorVisible

        protected void setRequiredIndicatorVisible​(boolean visible)

        Sets the visibility of the required indicator. NOTE: Does not apply for all components!.

        If the component supports the required indicator (state extends AbstractFieldState), then expose this method and isRequiredIndicatorVisible() as public in the component and call this method.

        This method will throw a IllegalStateException if the component state (returned by getState()) does not inherit AbstractFieldState.

        Parameters:

        visible - true to make the required indicator visible, false if not

        Since:

        8.0