Class MenuItem

java.lang.Object
com.vaadin.flow.component.Component
com.vaadin.flow.component.contextmenu.MenuItemBase<ContextMenu,MenuItem,SubMenu>
com.vaadin.flow.component.contextmenu.MenuItem
All Implemented Interfaces:
com.vaadin.flow.component.AttachNotifier, com.vaadin.flow.component.ClickNotifier<MenuItem>, com.vaadin.flow.component.DetachNotifier, com.vaadin.flow.component.HasAriaLabel, com.vaadin.flow.component.HasComponents, com.vaadin.flow.component.HasComponentsOfType<com.vaadin.flow.component.Component>, com.vaadin.flow.component.HasElement, com.vaadin.flow.component.HasEnabled, com.vaadin.flow.component.HasStyle, com.vaadin.flow.component.HasText, Serializable

public class MenuItem extends MenuItemBase<ContextMenu,MenuItem,SubMenu> implements com.vaadin.flow.component.ClickNotifier<MenuItem>
Item component used inside ContextMenu and SubMenu. This component can be created and added to a menu overlay with HasMenuItems.addItem(String, ComponentEventListener) and similar methods.
Since:
1.0
Author:
Vaadin Ltd.
See Also:
  • Nested Class Summary

    Nested classes/interfaces inherited from interface com.vaadin.flow.component.HasText

    com.vaadin.flow.component.HasText.WhiteSpace
  • Constructor Summary

    Constructors
    Constructor
    Description
    MenuItem(ContextMenu contextMenu, com.vaadin.flow.function.SerializableRunnable contentReset)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected SubMenu
     
    com.vaadin.flow.server.streams.DownloadHandler
    Gets the handler that produces the file downloaded when the item is clicked.
    void
    setDownloadHandler(com.vaadin.flow.server.streams.DownloadHandler downloadHandler)
    Sets a handler that produces a file to download when the item is clicked.
    void
    setEnabled(boolean enabled)
    Sets the menu item explicitly disabled or enabled.

    Methods inherited from class com.vaadin.flow.component.Component

    addListener, bindVisible, findAncestor, findAncestor, fireEvent, from, get, getChildren, getElement, getEventBus, getId, getListeners, getLocale, getParent, getTestId, getTranslation, getTranslation, getTranslation, getTranslation, getTranslation, getTranslation, getUI, getUIOrThrow, hasListener, isAttached, isTemplateMapped, isVisible, onAttach, onDetach, onEnabledStateChanged, removeFromParent, scrollIntoView, scrollIntoView, set, setElement, setId, setTestId, setVisible, whenAttached

    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.AttachNotifier

    addAttachListener

    Methods inherited from interface com.vaadin.flow.component.ClickNotifier

    addClickListener, addClickShortcut, addDoubleClickListener, addSingleClickListener

    Methods inherited from interface com.vaadin.flow.component.DetachNotifier

    addDetachListener

    Methods inherited from interface com.vaadin.flow.component.HasAriaLabel

    getAriaLabel, getAriaLabelledBy, setAriaLabel, setAriaLabelledBy, setAriaLabelledBy

    Methods inherited from interface com.vaadin.flow.component.HasComponents

    add

    Methods inherited from interface com.vaadin.flow.component.HasComponentsOfType

    add, add, addComponentAsFirst, addComponentAtIndex, bindChildren, getChildren, getComponentAt, getComponentCount, indexOf, remove, remove, removeAll, replace

    Methods inherited from interface com.vaadin.flow.component.HasElement

    getElement

    Methods inherited from interface com.vaadin.flow.component.HasEnabled

    isEnabled

    Methods inherited from interface com.vaadin.flow.component.HasStyle

    addClassName, addClassNames, bindClassName, bindClassNames, getClassName, getClassNames, getStyle, hasClassName, removeClassName, removeClassNames, setClassName, setClassName

    Methods inherited from interface com.vaadin.flow.component.HasText

    bindText, getText, getWhiteSpace, setText, setWhiteSpace
  • Constructor Details

    • MenuItem

      public MenuItem(ContextMenu contextMenu, com.vaadin.flow.function.SerializableRunnable contentReset)
  • Method Details

    • createSubMenu

      protected SubMenu createSubMenu()
      Specified by:
      createSubMenu in class MenuItemBase<ContextMenu,MenuItem,SubMenu>
    • getDownloadHandler

      public com.vaadin.flow.server.streams.DownloadHandler getDownloadHandler()
      Gets the handler that produces the file downloaded when the item is clicked.
      Returns:
      the download handler, or null if clicking the item does not start a download
      Since:
      25.4
      See Also:
    • setDownloadHandler

      public void setDownloadHandler(com.vaadin.flow.server.streams.DownloadHandler downloadHandler)
      Sets a handler that produces a file to download when the item is clicked. The download starts in the browser as part of the click, and click listeners still run as usual. Setting a new handler replaces the previous one, and null stops the item from starting a download.

      The handler runs only when the browser requests the file, once per click, so you can create the content, file name and response headers at that point. If the handler fails, the browser reports a failed download instead of saving an empty file. Use the transfer callbacks of the handler, for example whenComplete, to react on the server when the transfer has finished or failed.

      The file is only served while the item is part of its menu, visible and enabled, so hiding or removing the item in a click listener makes the download fail. Closing the menu does not affect the download. The exception is an item with disable on click: it disables itself before the browser requests the file, so the file is also served while the item is disabled by the click. Once the enabled state is set explicitly, for example with setEnabled(false), or a parent is disabled, the file is no longer served while the item is disabled. To serve the file regardless of the enabled state, pass handler.allowDisabled().

      For an item in a ContextMenu that has a target, the owning component of the download is the target of the menu.

      
       MenuItem export = menu.addItem("Export");
       export.setDownloadHandler(
               DownloadHandler.fromInputStream(event -> createReport()));
       
      Parameters:
      downloadHandler - the handler that produces the file, or null to not start a download on click
      Since:
      25.4
    • setEnabled

      public void setEnabled(boolean enabled)
      Sets the menu item explicitly disabled or enabled. When disabled, menu items are rendered as "dimmed".

      By default, disabled items are not focusable and don't react to hover. As a result, they are hidden from assistive technologies, and it's not possible to show a tooltip to explain why they are disabled. This can be addressed by enabling the feature flag accessibleDisabledMenuItems, which makes disabled items focusable and hoverable, while still preventing them from being activated. To enable this feature flag, add the following line to src/main/resources/vaadin-featureflags.properties:

       com.vaadin.experimental.accessibleDisabledMenuItems = true
       
      Specified by:
      setEnabled in interface com.vaadin.flow.component.HasEnabled
      Overrides:
      setEnabled in class MenuItemBase<ContextMenu,MenuItem,SubMenu>
      Since:
      25.2