Package com.vaadin.ui

Class MenuBar

    • Constructor Detail

      • MenuBar

        public MenuBar()
        Constructs an empty, horizontal menu
    • Method Detail

      • getState

        protected MenuBarState 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 class AbstractComponent
        Returns:
        updated component shared state
      • paintContent

        public void paintContent​(PaintTarget target)
                          throws PaintException
        Paint (serialise) the component for the client.
        Specified by:
        paintContent in interface LegacyComponent
        Parameters:
        target - the target UIDL stream where the component should paint itself to.
        Throws:
        PaintException - if the paint operation failed.
      • changeVariables

        public void changeVariables​(Object source,
                                    Map<String,​Object> variables)
        Deserialize changes received from client.
        Specified by:
        changeVariables in interface VariableOwner
        Parameters:
        source - the Source of the variable change. This is the origin of the event. For example in Web Adapter this is the request.
        variables - the Mapping from variable names to new variable values.
      • addItem

        public MenuBar.MenuItem addItem​(String caption,
                                        Resource icon,
                                        MenuBar.Command command)
        Add a new item to the menu bar. Icon and command can be null, but a caption must be given.
        Parameters:
        caption - the text for the menu item
        icon - the icon for the menu item
        command - the command for the menu item
        Throws:
        IllegalArgumentException
      • addItemBefore

        public MenuBar.MenuItem addItemBefore​(String caption,
                                              Resource icon,
                                              MenuBar.Command command,
                                              MenuBar.MenuItem itemToAddBefore)
        Add an item before some item. If the given item does not exist the item is added at the end of the menu. Icon and command can be null, but a caption must be given.
        Parameters:
        caption - the text for the menu item
        icon - the icon for the menu item
        command - the command for the menu item
        itemToAddBefore - the item that will be after the new item
        Throws:
        IllegalArgumentException
      • getItems

        public List<MenuBar.MenuItem> getItems()
        Returns a list with all the MenuItem objects in the menu bar
        Returns:
        a list containing the MenuItem objects in the menu bar
      • removeItem

        public void removeItem​(MenuBar.MenuItem item)
        Remove first occurrence the specified item from the main menu
        Parameters:
        item - The item to be removed
      • removeItems

        public void removeItems()
        Empty the menu bar
      • getSize

        public int getSize()
        Returns the size of the menu.
        Returns:
        The size of the menu
      • setMoreMenuItem

        public void setMoreMenuItem​(MenuBar.MenuItem item)
        Set the item that is used when collapsing the top level menu. All "overflowing" items will be added below this. The item command will be ignored. If set to null, the default item with a downwards arrow is used. The item command (if specified) is ignored.
        Parameters:
        item -
      • getMoreMenuItem

        public MenuBar.MenuItem getMoreMenuItem()
        Get the MenuItem used as the collapse menu item.
        Returns:
      • setAutoOpen

        public void setAutoOpen​(boolean autoOpenTopLevelMenu)
        Using this method menubar can be put into a special mode where top level menus opens without clicking on the menu, but automatically when mouse cursor is moved over the menu. In this mode the menu also closes itself if the mouse is moved out of the opened menu.

        Note, that on touch devices the menu still opens on a click event.

        Parameters:
        autoOpenTopLevelMenu - true if menus should be opened without click, the default is false
      • isAutoOpen

        public boolean isAutoOpen()
        Detects whether the menubar is in a mode where top level menus are automatically opened when the mouse cursor is moved over the menu. Normally root menu opens only by clicking on the menu. Submenus always open automatically.
        Returns:
        true if the root menus open without click, the default is false
      • setHtmlContentAllowed

        public void setHtmlContentAllowed​(boolean htmlContentAllowed)
        Sets whether html is allowed in the item captions. If set to true, the captions are passed to the browser as html and the developer is responsible for ensuring no harmful html is used. If set to false, the content is passed to the browser as plain text.
        Parameters:
        htmlContentAllowed - true if the captions are used as html, false if used as plain text
      • isHtmlContentAllowed

        public boolean isHtmlContentAllowed()
        Checks whether item captions are interpreted as html or plain text.
        Returns:
        true if the captions are used as html, false if used as plain text
        See Also:
        setHtmlContentAllowed(boolean)
      • 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 interface Component.Focusable
        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:
        Component.Focusable.getTabIndex()
      • 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
        Overrides:
        writeDesign in class AbstractComponent
        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
      • createMenuElement

        protected org.jsoup.nodes.Element createMenuElement​(MenuBar.MenuItem item)
      • readMenuElement

        protected MenuBar.MenuItem readMenuElement​(org.jsoup.nodes.Element menuElement)
      • 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
        Overrides:
        readDesign in class AbstractComponent
        Parameters:
        design - The element to obtain the state from
        designContext - The DesignContext instance used for parsing the design