Class AbstractBasePane<T extends BasePane>

  • All Implemented Interfaces:
    BasePane, Composite
    Direct Known Subclasses:
    AbstractWindow

    public abstract class AbstractBasePane<T extends BasePane>
    extends java.lang.Object
    implements BasePane
    This abstract implementation of BasePane has the common code shared by all different concrete implementations.
    • Field Detail

      • focusedInteractable

        private Interactable focusedInteractable
      • invalid

        private boolean invalid
      • strictFocusChange

        private boolean strictFocusChange
      • enableDirectionBasedMovements

        private boolean enableDirectionBasedMovements
      • theme

        private Theme theme
    • Constructor Detail

      • AbstractBasePane

        protected AbstractBasePane()
    • Method Detail

      • isInvalid

        public boolean isInvalid()
        Description copied from interface: BasePane
        Checks if this root container (i.e. any of its child components) has signaled that what it's currently displaying is out of date and needs re-drawing.
        Specified by:
        isInvalid in interface BasePane
        Returns:
        true if the container's content is invalid and needs redrawing, false otherwise
      • invalidate

        public void invalidate()
        Description copied from interface: BasePane
        Invalidates the whole root container (including all of its child components) which will cause them all to be recalculated (for containers) and redrawn.
        Specified by:
        invalidate in interface BasePane
      • draw

        public void draw​(TextGUIGraphics graphics)
        Description copied from interface: BasePane
        Called by the GUI system (or something imitating the GUI system) to draw the root container. The TextGUIGraphics object should be used to perform the drawing operations.
        Specified by:
        draw in interface BasePane
        Parameters:
        graphics - TextGraphics object to draw with
      • handleInput

        public boolean handleInput​(KeyStroke key)
        Description copied from interface: BasePane
        Called by the GUI system to delegate a keyboard input event. The root container will decide what to do with this input, usually sending it to one of its sub-components, but if it isn't able to find any handler for this input it should return false so that the GUI system can take further decisions on what to do with it.
        Specified by:
        handleInput in interface BasePane
        Parameters:
        key - Keyboard input
        Returns:
        true If the root container could handle the input, false otherwise
      • self

        abstract T self()
      • doHandleInput

        private boolean doHandleInput​(KeyStroke key)
      • handleMouseInput

        private boolean handleMouseInput​(MouseAction mouseAction)
      • getComponent

        public Component getComponent()
        Description copied from interface: BasePane
        Returns the component that is the content of the BasePane. This is probably the root of a hierarchy of nested Panels but it could also be a single component.
        Specified by:
        getComponent in interface BasePane
        Specified by:
        getComponent in interface Composite
        Returns:
        Component which is the content of this BasePane
      • setComponent

        public void setComponent​(Component component)
        Description copied from interface: BasePane
        Sets the top-level component inside this BasePane. If you want it to contain only one component, you can set it directly, but for more complicated GUIs you probably want to create a hierarchy of panels and set the first one here.
        Specified by:
        setComponent in interface BasePane
        Specified by:
        setComponent in interface Composite
        Parameters:
        component - Component which this BasePane is using as it's content
      • getFocusedInteractable

        public Interactable getFocusedInteractable()
        Description copied from interface: BasePane
        Returns the component in the root container that currently has input focus. There can only be one component at a time being in focus.
        Specified by:
        getFocusedInteractable in interface BasePane
        Returns:
        Interactable component that is currently in receiving input focus
      • getCursorPosition

        public TerminalPosition getCursorPosition()
        Description copied from interface: BasePane
        Returns the position of where to put the terminal cursor according to this root container. This is typically derived from which component has focus, or null if no component has focus or if the root container doesn't want the cursor to be visible. Note that the coordinates are in local coordinate space, relative to the top-left corner of the root container. You can use your TextGUI implementation to translate these to global coordinates.
        Specified by:
        getCursorPosition in interface BasePane
        Returns:
        Local position of where to place the cursor, or null if the cursor shouldn't be visible
      • setFocusedInteractable

        public void setFocusedInteractable​(Interactable toFocus)
        Description copied from interface: BasePane
        Sets the component currently in focus within this root container, or sets no component in focus if null is passed in.
        Specified by:
        setFocusedInteractable in interface BasePane
        Parameters:
        toFocus - Interactable to focus, or null to clear focus
      • setStrictFocusChange

        public void setStrictFocusChange​(boolean strictFocusChange)
        Description copied from interface: BasePane
        If set to true, up/down array keys will not translate to next/previous if there are no more components above/below.
        Specified by:
        setStrictFocusChange in interface BasePane
        Parameters:
        strictFocusChange - Will not allow relaxed navigation if set to true
      • setEnableDirectionBasedMovements

        public void setEnableDirectionBasedMovements​(boolean enableDirectionBasedMovements)
        Description copied from interface: BasePane
        If set to false, using the keyboard arrows keys will have the same effect as using the tab and reverse tab. Lanterna will map arrow down and arrow right to tab, going to the next component, and array up and array left to reverse tab, going to the previous component. If set to true, Lanterna will search for the next component starting at the cursor position in the general direction of the arrow. By default this is enabled.

        In Lanterna 2, direction based movements were not available.

        Specified by:
        setEnableDirectionBasedMovements in interface BasePane
        Parameters:
        enableDirectionBasedMovements - Should direction based focus movements be enabled?
      • getTheme

        public Theme getTheme()
        Description copied from interface: BasePane
        Returns the text GUI Theme associated with this base pane/window. This is either coming from the TextGUI this object is associated with, the theme set as the override through BasePane.setTheme(Theme) or null if this base pane/window isn't added to any TextGUI and doesn't have any override.
        Specified by:
        getTheme in interface BasePane
        Returns:
        The Theme this base pane/window is expected to use when drawing the contents
      • setTheme

        public void setTheme​(Theme theme)
        Description copied from interface: BasePane
        Sets the override Theme to use for this base pane/window, rather than the default Theme associated with the TextGUI it is attached to. If called with null, it will clear the override and use the default value instead.
        Specified by:
        setTheme in interface BasePane
        Parameters:
        theme - Theme to assign to this base pane/window, or null to reset
      • getMenuBar

        public MenuBar getMenuBar()
        Description copied from interface: BasePane
        Returns the MenuBar assigned to this base pane/window, if any, otherwise returns {code null}.
        Specified by:
        getMenuBar in interface BasePane
        Returns:
        The active menu bar or null
      • setMenuBar

        public void setMenuBar​(MenuBar menuBar)
        Description copied from interface: BasePane
        Sets the active MenuBar for this base pane/window. The menu will be rendered at the top (inside the window decorations if set on a window), if set. If called with null, any previously set menu bar is removed.
        Specified by:
        setMenuBar in interface BasePane
        Parameters:
        menuBar - The MenuBar to assign to this pane/window
      • addBasePaneListener

        protected void addBasePaneListener​(BasePaneListener<T> basePaneListener)
      • removeBasePaneListener

        protected void removeBasePaneListener​(BasePaneListener<T> basePaneListener)
      • getBasePaneListeners

        protected java.util.List<BasePaneListener<T>> getBasePaneListeners()