Class MenuItem

All Implemented Interfaces:
HasHandlers, HasClickHandlers
Direct Known Subclasses:
MenuItemSeparator

public class MenuItem extends ListGridRecord implements HasClickHandlers
Object specifying an item in a Menu. Each MenuItem can have a title, icon, shortcut\n keys, optional submenu and various other settings. Alternatively, a MenuItem can contain an arbitrary widget via embeddedComponent. To create a Menu, create a series of MenuItems and call Menu.setItems().

Alternatively, Menus support binding to a DataSource.

As another option, here's a sample of a Menu in Component XML:

  <Menu>
     <items>
         <MenuItem title="item1" click="alert(1)"/>
         <MenuItem title="item2"/>
     </items>
  </Menu>
  
  • Constructor Details

  • Method Details

    • getOrCreateRef

      public static MenuItem getOrCreateRef(JavaScriptObject jsObj)
    • setAutoDismiss

      public MenuItem setAutoDismiss(Boolean autoDismiss)
      Whether a click on this specific menuItem automatically dismisses the menu. See Menu.autoDismiss.
      Parameters:
      autoDismiss - New autoDismiss value. Default value is null
      Returns:
      MenuItem instance, for chaining setter calls
    • getAutoDismiss

      public Boolean getAutoDismiss()
      Whether a click on this specific menuItem automatically dismisses the menu. See Menu.autoDismiss.
      Returns:
      Current autoDismiss value. Default value is null
    • setCanSelectParent

      public MenuItem setCanSelectParent(Boolean canSelectParent)
      A MenuItem that has a submenu normally cannot be selected, instead clicking or hitting Enter while keyboard focus is on the item shows the submenu. Setting canSelectParent:true allows a menu item with a submenu to be selected directly.
      Parameters:
      canSelectParent - New canSelectParent value. Default value is null
      Returns:
      MenuItem instance, for chaining setter calls
    • getCanSelectParent

      public Boolean getCanSelectParent()
      A MenuItem that has a submenu normally cannot be selected, instead clicking or hitting Enter while keyboard focus is on the item shows the submenu. Setting canSelectParent:true allows a menu item with a submenu to be selected directly.
      Returns:
      Current canSelectParent value. Default value is null
    • setChecked

      public MenuItem setChecked(Boolean checked)
      If true, this item displays a standard checkmark image to the left of its title. You can set the checkmark image URL by setting Menu.checkmarkImage.

      If you need to set this state dynamically, use checkIf() instead.

      Parameters:
      checked - New checked value. Default value is null
      Returns:
      MenuItem instance, for chaining setter calls
      See Also:
    • getChecked

      public Boolean getChecked()
      If true, this item displays a standard checkmark image to the left of its title. You can set the checkmark image URL by setting Menu.checkmarkImage.

      If you need to set this state dynamically, use checkIf() instead.

      Returns:
      Current checked value. Default value is null
      See Also:
    • setDisabledIcon

      public MenuItem setDisabledIcon(String disabledIcon)
      The filename for this item's custom icon when the item is disabled. If both this property and checked are both specified, only the icon specified by this property will be displayed. The path to the loaded skin directory and the skinImgDir are prepended to this filename to form the full URL.

      If you need to set this state dynamically, use dynamicIcon() instead.

      Parameters:
      disabledIcon - New disabledIcon value. Default value is null
      Returns:
      MenuItem instance, for chaining setter calls
      See Also:
    • getDisabledIcon

      public String getDisabledIcon()
      The filename for this item's custom icon when the item is disabled. If both this property and checked are both specified, only the icon specified by this property will be displayed. The path to the loaded skin directory and the skinImgDir are prepended to this filename to form the full URL.

      If you need to set this state dynamically, use dynamicIcon() instead.

      Returns:
      Current disabledIcon value. Default value is null
      See Also:
    • setEmbeddedComponent

      public MenuItem setEmbeddedComponent(Canvas embeddedComponent)
      Arbitrary UI component that should appear in this MenuItem. See ListGridRecord.embeddedComponent for an overview and options for controlling placement.

      When embeddedComponent is used in a MenuItem certain default behaviors apply:

      • autoDismiss defaults to false and clicks on embeddedComponents are not bubbled to the menuItem - if an interaction with an embeddedComponent is expected to dismiss the menu, custom code should call menu.hide or hideAllMenus as appropriate, before proceeding
      • the default behavior for embeddedComponentPosition is "expand".
      • the component is placed over the title and key fields by default - use embeddedComponentFields to override
      • rollOver styling is disabled by default (as though ListGridRecord.showRollOver were set to false)
      Overrides:
      setEmbeddedComponent in class ListGridRecord
      Parameters:
      embeddedComponent - New embeddedComponent value. Default value is null
      Returns:
      MenuItem instance, for chaining setter calls
      See Also:
    • getEmbeddedComponent

      public Canvas getEmbeddedComponent()
      Arbitrary UI component that should appear in this MenuItem. See ListGridRecord.embeddedComponent for an overview and options for controlling placement.

      When embeddedComponent is used in a MenuItem certain default behaviors apply:

      • autoDismiss defaults to false and clicks on embeddedComponents are not bubbled to the menuItem - if an interaction with an embeddedComponent is expected to dismiss the menu, custom code should call menu.hide or hideAllMenus as appropriate, before proceeding
      • the default behavior for embeddedComponentPosition is "expand".
      • the component is placed over the title and key fields by default - use embeddedComponentFields to override
      • rollOver styling is disabled by default (as though ListGridRecord.showRollOver were set to false)
      Overrides:
      getEmbeddedComponent in class ListGridRecord
      Returns:
      Current embeddedComponent value. Default value is null
      See Also:
    • setEmbeddedComponentFields

      public MenuItem setEmbeddedComponentFields(String... embeddedComponentFields)
      See ListGridRecord.embeddedComponentFields. Default for a MenuItem is to cover the title and key fields, leaving the icon and submenu fields visible.
      Overrides:
      setEmbeddedComponentFields in class ListGridRecord
      Parameters:
      embeddedComponentFields - New embeddedComponentFields value. Default value is null
      Returns:
      MenuItem instance, for chaining setter calls
      See Also:
    • getEmbeddedComponentFields

      public String[] getEmbeddedComponentFields()
      See ListGridRecord.embeddedComponentFields. Default for a MenuItem is to cover the title and key fields, leaving the icon and submenu fields visible.
      Overrides:
      getEmbeddedComponentFields in class ListGridRecord
      Returns:
      Current embeddedComponentFields value. Default value is null
      See Also:
    • setEmbeddedComponentPosition

      public MenuItem setEmbeddedComponentPosition(EmbeddedPosition embeddedComponentPosition)
      See ListGridRecord.embeddedComponentPosition, except that when used in a menuItem, default behavior is EmbeddedPosition "expand".
      Overrides:
      setEmbeddedComponentPosition in class ListGridRecord
      Parameters:
      embeddedComponentPosition - New embeddedComponentPosition value. Default value is null
      Returns:
      MenuItem instance, for chaining setter calls
      See Also:
    • getEmbeddedComponentPosition

      public EmbeddedPosition getEmbeddedComponentPosition()
      See ListGridRecord.embeddedComponentPosition, except that when used in a menuItem, default behavior is EmbeddedPosition "expand".
      Overrides:
      getEmbeddedComponentPosition in class ListGridRecord
      Returns:
      Current embeddedComponentPosition value. Default value is null
      See Also:
    • setEnabled

      public MenuItem setEnabled(Boolean enabled)
      Affects the visual style and interactivity of the menu item. If set to false, the menu item will not respond to mouse rollovers or clicks.

      If you need to set this state dynamically, use enableIf() instead.

      Overrides:
      setEnabled in class ListGridRecord
      Parameters:
      enabled - New enabled value. Default value is true
      Returns:
      MenuItem instance, for chaining setter calls
      See Also:
    • getEnabled

      public Boolean getEnabled()
      Affects the visual style and interactivity of the menu item. If set to false, the menu item will not respond to mouse rollovers or clicks.

      If you need to set this state dynamically, use enableIf() instead.

      Overrides:
      getEnabled in class ListGridRecord
      Returns:
      Current enabled value. Default value is true
      See Also:
    • setEnableWhen

      public MenuItem setEnableWhen(AdvancedCriteria enableWhen)
      Criteria to be evaluated to determine whether this MenuItem should be disabled. Re-evaluated each time the menu is shown.

      A basic criteria uses textMatchStyle:"exact". When specified in Component XML this property allows shorthand formats for defining criteria.

      Parameters:
      enableWhen - New enableWhen value. Default value is null
      Returns:
      MenuItem instance, for chaining setter calls
      See Also:
    • getEnableWhen

      public AdvancedCriteria getEnableWhen()
      Criteria to be evaluated to determine whether this MenuItem should be disabled. Re-evaluated each time the menu is shown.

      A basic criteria uses textMatchStyle:"exact". When specified in Component XML this property allows shorthand formats for defining criteria.

      Returns:
      Current enableWhen value. Default value is null
      See Also:
    • setFetchSubmenus

      public MenuItem setFetchSubmenus(Boolean fetchSubmenus)
      If false, no submenus will be fetched for this MenuItem. This can be set globally via Menu.fetchSubmenus.
      Parameters:
      fetchSubmenus - New fetchSubmenus value. Default value is true
      Returns:
      MenuItem instance, for chaining setter calls
    • getFetchSubmenus

      public Boolean getFetchSubmenus()
      If false, no submenus will be fetched for this MenuItem. This can be set globally via Menu.fetchSubmenus.
      Returns:
      Current fetchSubmenus value. Default value is true
    • setHidden

      public MenuItem setHidden(Boolean hidden)
      Default Menu.itemHiddenProperty for menu items. If true, this item will be hidden wihin the menu by default.

      To update item visibility at runtime, call Menu.setItemHidden()

      Parameters:
      hidden - New hidden value. Default value is null
      Returns:
      MenuItem instance, for chaining setter calls
      See Also:
    • getHidden

      public Boolean getHidden()
      Default Menu.itemHiddenProperty for menu items. If true, this item will be hidden wihin the menu by default.

      To update item visibility at runtime, call Menu.setItemHidden()

      Returns:
      Current hidden value. Default value is null
      See Also:
    • setIcon

      public MenuItem setIcon(String icon)
      The filename for this item's custom icon. If both this property and checked are both specified, only the icon specified by this property will be displayed. The path to the loaded skin directory and the skinImgDir are prepended to this filename to form the full URL. If this item is disabled, and disabledIcon is set, then that icon will be used instead.

      If you need to set this state dynamically, use dynamicIcon() instead.

      Parameters:
      icon - New icon value. Default value is null
      Returns:
      MenuItem instance, for chaining setter calls
      See Also:
    • getIcon

      public String getIcon()
      The filename for this item's custom icon. If both this property and checked are both specified, only the icon specified by this property will be displayed. The path to the loaded skin directory and the skinImgDir are prepended to this filename to form the full URL. If this item is disabled, and disabledIcon is set, then that icon will be used instead.

      If you need to set this state dynamically, use dynamicIcon() instead.

      Returns:
      Current icon value. Default value is null
      See Also:
    • setIconHeight

      public MenuItem setIconHeight(int iconHeight)
      The height applied to this item's icon. The default of 16 can be changed for all MenuItems by overriding Menu.iconHeight.
      Parameters:
      iconHeight - New iconHeight value. Default value is 16
      Returns:
      MenuItem instance, for chaining setter calls
    • getIconHeight

      public int getIconHeight()
      The height applied to this item's icon. The default of 16 can be changed for all MenuItems by overriding Menu.iconHeight.
      Returns:
      Current iconHeight value. Default value is 16
    • setIconWidth

      public MenuItem setIconWidth(int iconWidth)
      The width applied to this item's icon. The default of 16 can be changed for all MenuItems by overriding Menu.iconWidth.
      Parameters:
      iconWidth - New iconWidth value. Default value is 16
      Returns:
      MenuItem instance, for chaining setter calls
    • getIconWidth

      public int getIconWidth()
      The width applied to this item's icon. The default of 16 can be changed for all MenuItems by overriding Menu.iconWidth.
      Returns:
      Current iconWidth value. Default value is 16
    • setIsSeparator

      public MenuItem setIsSeparator(Boolean isSeparator)
      When set to true, this menu item shows a horizontal separator instead of the title text. Typically specified as the only property of a menu item, since the separator will not respond to mouse events.
      Overrides:
      setIsSeparator in class ListGridRecord
      Parameters:
      isSeparator - New isSeparator value. Default value is false
      Returns:
      MenuItem instance, for chaining setter calls
      See Also:
    • getIsSeparator

      public Boolean getIsSeparator()
      When set to true, this menu item shows a horizontal separator instead of the title text. Typically specified as the only property of a menu item, since the separator will not respond to mouse events.
      Overrides:
      getIsSeparator in class ListGridRecord
      Returns:
      Current isSeparator value. Default value is false
      See Also:
    • setKeyTitle

      public MenuItem setKeyTitle(String keyTitle)
      A string to display in the shortcut-key column for this item. If not specified, the first KeyName value in keys will be used by default.
      Parameters:
      keyTitle - New keyTitle value. Default value is see below
      Returns:
      MenuItem instance, for chaining setter calls
      See Also:
    • getKeyTitle

      public String getKeyTitle()
      A string to display in the shortcut-key column for this item. If not specified, the first KeyName value in keys will be used by default.
      Returns:
      Current keyTitle value. Default value is see below
      See Also:
    • setShowIconOnlyInline

      public MenuItem setShowIconOnlyInline(Boolean showIconOnlyInline)
      When used in an AdaptiveMenu, should this MenuItem show only it's icon when displayed inline?
      Parameters:
      showIconOnlyInline - New showIconOnlyInline value. Default value is null
      Returns:
      MenuItem instance, for chaining setter calls
    • getShowIconOnlyInline

      public Boolean getShowIconOnlyInline()
      When used in an AdaptiveMenu, should this MenuItem show only it's icon when displayed inline?
      Returns:
      Current showIconOnlyInline value. Default value is null
    • setSubmenu

      public MenuItem setSubmenu(Menu submenu)
      A reference to another menu, to display as a submenu when the mouse cursor hovers over this menu item.
      Parameters:
      submenu - New submenu value. Default value is null
      Returns:
      MenuItem instance, for chaining setter calls
      See Also:
    • setTitle

      public MenuItem setTitle(String title)
      The text displayed for the menu item
      Parameters:
      title - New title value. Default value is null
      Returns:
      MenuItem instance, for chaining setter calls
      See Also:
    • getTitle

      public String getTitle()
      The text displayed for the menu item
      Returns:
      Current title value. Default value is null
      See Also:
    • setVisibleWhen

      public MenuItem setVisibleWhen(AdvancedCriteria visibleWhen)
      Criteria to be evaluated to determine whether this MenuItem should be visible. Re-evaluated each time the menu is shown.

      A basic criteria uses textMatchStyle:"exact". When specified in Component XML this property allows shorthand formats for defining criteria.

      Parameters:
      visibleWhen - New visibleWhen value. Default value is null
      Returns:
      MenuItem instance, for chaining setter calls
      See Also:
    • getVisibleWhen

      public AdvancedCriteria getVisibleWhen()
      Criteria to be evaluated to determine whether this MenuItem should be visible. Re-evaluated each time the menu is shown.

      A basic criteria uses textMatchStyle:"exact". When specified in Component XML this property allows shorthand formats for defining criteria.

      Returns:
      Current visibleWhen value. Default value is null
      See Also:
    • addClickHandler

      public HandlerRegistration addClickHandler(ClickHandler handler)
      Add a click handler.

      Executed when this menu item is clicked by the user. The click handler must be specified as a function or string of script. Call com.smartgwt.client.widgets.menu.events.MenuItemClickEvent#cancel() from within ClickHandler.onClick(com.smartgwt.client.widgets.menu.events.MenuItemClickEvent) to suppress the Menu.itemClick() handler if specified.

      Specified by:
      addClickHandler in interface HasClickHandlers
      Parameters:
      handler - the click handler
      Returns:
      HandlerRegistration used to remove this handler
    • setKeys

      public void setKeys(KeyIdentifier... keys)
      Shortcut key(s) to fire the menu item action. Each key can be defined as a KeyIdentifier. To apply multiple shortcut keys to this item, set this property to an array of such key identifiers.
      Parameters:
      keys - keys Default value is null
    • setEnableIfCondition

      public void setEnableIfCondition(MenuItemIfFunction enableIf)
      Contains the condition that will enable or disable the curent menuItem. The handler must be specified as a function or string of script. Return false to disable the menuItem or true to enable it

      If you don't need to set this state dynamically, use enabled instead.

    • setCheckIfCondition

      public void setCheckIfCondition(MenuItemIfFunction checkIf)
      Contains the condition that will check or uncheck the curent menuItem. The handler must be specified as a function or string of script. Return false to uncheck the menuItem or true to check it

      If you don't need to set this state dynamically, use checked instead.

    • setDynamicTitleFunction

      public void setDynamicTitleFunction(MenuItemStringFunction handler)
      Contains the condition that will change the curent items' title when met. The handler must be specified as a function or string of script.

      If you don't need to set this state dynamically, use title instead.

    • setDynamicIconFunction

      public void setDynamicIconFunction(MenuItemStringFunction handler)
      Contains the condition that will change the curent items' icon when met. The handler must be specified as a function or string of script.

      If you don't need to set this state dynamically, use icon instead.

    • getSubmenu

      @Deprecated public Menu getSubmenu()
      Deprecated.
      use com.smartgwt.client.widgets.Menu#getSubmenu instead
      A reference to another menu, to display as a submenu when the mouse cursor hovers over this menu item.
      Returns:
      Menu
      See Also: