java.lang.Object
com.googlecode.lanterna.gui2.AbstractComponent<MenuBar>
com.googlecode.lanterna.gui2.menu.MenuBar
All Implemented Interfaces:
Component, Container, TextGUIElement
Direct Known Subclasses:
AbstractBasePane.EmptyMenuBar

public class MenuBar extends AbstractComponent<MenuBar> implements Container
A menu bar offering drop-down menus. You can attach a menu bar to a Window by using the Window.setMenuBar(MenuBar) method, then use add(Menu) to add sub-menus to the menu bar.
  • Field Details

  • Constructor Details

    • MenuBar

      public MenuBar()
      Creates a new menu bar
  • Method Details

    • add

      public MenuBar add(Menu menu)
      Adds a new drop-down menu to the menu bar, at the end
      Parameters:
      menu - Menu to add to the menu bar
      Returns:
      Itself
    • getChildCount

      public int getChildCount()
      Description copied from interface: Container
      Returns the number of children this container currently has
      Specified by:
      getChildCount in interface Container
      Returns:
      Number of children currently in this container
    • getChildrenList

      public List<Component> getChildrenList()
      Description copied from interface: Container
      Returns list that is to be considered a copy of the list of children inside of this container. Modifying this list will not affect any internal state. This method is essentially the same as getChildren but the returned collection is a list.
      Specified by:
      getChildrenList in interface Container
      Returns:
      Child-components inside of this Container
      See Also:
    • getChildren

      public Collection<Component> getChildren()
      Description copied from interface: Container
      Returns collection that is to be considered a copy of the list of children contained inside of this object. Modifying this collection will not affect any internal state.

      This method isn't deprecated but it should have originally been defined as returning a List instead of a Collection. See getChildrenList for a method with this signature.

      Specified by:
      getChildren in interface Container
      Returns:
      Child-components inside of this Container
      See Also:
    • containsComponent

      public boolean containsComponent(Component component)
      Description copied from interface: Container
      Returns true if this container contains the supplied component either directly or indirectly through intermediate containers.
      Specified by:
      containsComponent in interface Container
      Parameters:
      component - Component to check if it's part of this container
      Returns:
      true if the component is inside this Container, otherwise false
    • removeComponent

      public boolean removeComponent(Component component)
      Description copied from interface: Container
      Removes the component from the container. This should remove the component from the Container's internal data structure as well as call the onRemoved(..) method on the component itself if it was found inside the container.
      Specified by:
      removeComponent in interface Container
      Parameters:
      component - Component to remove from the Container
      Returns:
      true if the component existed inside the container and was removed, false otherwise
    • nextFocus

      public Interactable nextFocus(Interactable fromThis)
      Description copied from interface: Container
      Given an interactable, find the next one in line to receive focus. If the interactable isn't inside this container, this method should return null.
      Specified by:
      nextFocus in interface Container
      Parameters:
      fromThis - Component from which to get the next interactable, or if null, pick the first available interactable
      Returns:
      The next interactable component, or null if there are no more interactables in the list
    • previousFocus

      public Interactable previousFocus(Interactable fromThis)
      Description copied from interface: Container
      Given an interactable, find the previous one in line to receive focus. If the interactable isn't inside this container, this method should return null.
      Specified by:
      previousFocus in interface Container
      Parameters:
      fromThis - Component from which to get the previous interactable, or if null, pick the last interactable in the list
      Returns:
      The previous interactable component, or null if there are no more interactables in the list
    • handleInput

      public boolean handleInput(KeyStroke key)
      Description copied from interface: Container
      If an interactable component inside this container received a keyboard event that wasn't handled, the GUI system will recursively send the event to each parent container to give each of them a chance to consume the event. Return false if the implementer doesn't care about this particular keystroke and it will be automatically sent up the hierarchy the to next container. If you return true, the event will stop here and won't be reported as unhandled.
      Specified by:
      handleInput in interface Container
      Parameters:
      key - Keystroke that was ignored by the interactable inside this container
      Returns:
      true if this event was handled by this container and shouldn't be processed anymore, false if the container didn't take any action on the event and want to pass it on
    • getMenu

      public Menu getMenu(int index)
      Returns the drop-down menu at the specified index. This method will throw an Array
      Parameters:
      index - Index of the menu to return
      Returns:
      The drop-down menu at the specified index
      Throws:
      IndexOutOfBoundsException - if the index is out of range
    • getMenuCount

      public int getMenuCount()
      Returns the number of menus this menu bar currently has
      Returns:
      The number of menus this menu bar currently has
    • createDefaultRenderer

      protected ComponentRenderer<MenuBar> createDefaultRenderer()
      Description copied from class: AbstractComponent
      When you create a custom component, you need to implement this method and return a Renderer which is responsible for taking care of sizing the component, rendering it and choosing where to place the cursor (if Interactable). This value is intended to be overridden by custom themes.
      Specified by:
      createDefaultRenderer in class AbstractComponent<MenuBar>
      Returns:
      Renderer to use when sizing and drawing this component
    • updateLookupMap

      public void updateLookupMap(InteractableLookupMap interactableLookupMap)
      Description copied from interface: Container
      Takes a lookup map and updates it with information about where all the interactables inside of this container are located.
      Specified by:
      updateLookupMap in interface Container
      Parameters:
      interactableLookupMap - Interactable map to update
    • toBasePane

      public TerminalPosition toBasePane(TerminalPosition position)
      Description copied from interface: Component
      Translates a position local to the container to the base pane's coordinate space. For a window-based GUI, this be a coordinate in the window's coordinate space. If the component belongs to no base pane, it will return null.
      Specified by:
      toBasePane in interface Component
      Overrides:
      toBasePane in class AbstractComponent<MenuBar>
      Parameters:
      position - Position to translate (relative to the container's top-left corner)
      Returns:
      Position in base pane space, or null if the component is an orphan
    • isEmptyMenuBar

      public boolean isEmptyMenuBar()