Class Display

java.lang.Object
org.jline.utils.Display

public class Display extends Object
Manages terminal display and efficient screen updates with cursor positioning.

The Display class provides functionality for managing the display of content on the terminal screen. It handles the complexities of cursor positioning, line wrapping, and efficient screen updates to minimize the amount of data sent to the terminal.

This class supports two main modes of operation:

  • Full-screen mode - Takes over the entire terminal screen
  • Partial-screen mode - Updates only a portion of the screen, preserving content above

Key features include:

  • Efficient screen updates using cursor positioning
  • Support for multi-line content with proper wrapping
  • Handling of ANSI-styled text (colors, attributes)
  • Size-aware rendering that adapts to terminal dimensions
  • Cursor positioning relative to the display area

This class is used by various JLine components, such as LineReader, to provide efficient terminal display management for features like command-line editing, completion menus, and status messages.

  • Field Details

    • terminal

      protected final Terminal terminal
    • fullScreen

      protected final boolean fullScreen
    • oldLines

      protected List<AttributedString> oldLines
    • cursorPos

      protected int cursorPos
    • columns

      protected int columns
    • columns1

      protected int columns1
    • rows

      protected int rows
    • reset

      protected boolean reset
    • delayLineWrap

      protected boolean delayLineWrap
    • cost

      protected final Map<InfoCmp.Capability,Integer> cost
    • canScroll

      protected final boolean canScroll
    • wrapAtEol

      protected final boolean wrapAtEol
    • delayedWrapAtEol

      protected final boolean delayedWrapAtEol
    • cursorDownIsNewLine

      protected final boolean cursorDownIsNewLine
  • Constructor Details

    • Display

      public Display(Terminal terminal, boolean fullscreen)
  • Method Details

    • delayLineWrap

      public boolean delayLineWrap()
      If cursor is at right margin, don't wrap immediately. See org.jline.reader.LineReader.Option#DELAY_LINE_WRAP.
      Returns:
      true if line wrap is delayed, false otherwise
    • setDelayLineWrap

      public void setDelayLineWrap(boolean v)
    • resize

      public void resize(int rows, int columns)
    • reset

      public void reset()
    • clear

      public void clear()
      Clears the whole screen. Use this method only when using full-screen / application mode.
    • updateAnsi

      public void updateAnsi(List<String> newLines, int targetCursorPos)
    • update

      public void update(List<AttributedString> newLines, int targetCursorPos)
      Update the display according to the new lines and flushes the output.
      Parameters:
      newLines - the lines to display
      targetCursorPos - desired cursor position - see Size.cursorPos.
    • update

      public void update(List<AttributedString> newLines, int targetCursorPos, boolean flush)
      Update the display according to the new lines.
      Parameters:
      newLines - the lines to display
      targetCursorPos - desired cursor position - see Size.cursorPos.
      flush - whether the output should be flushed or not
    • deleteLines

      protected boolean deleteLines(int nb)
    • insertLines

      protected boolean insertLines(int nb)
    • insertChars

      protected boolean insertChars(int nb)
    • deleteChars

      protected boolean deleteChars(int nb)
    • can

      protected boolean can(InfoCmp.Capability single, InfoCmp.Capability multi)
    • perform

      protected boolean perform(InfoCmp.Capability single, InfoCmp.Capability multi, int nb)
    • moveVisualCursorTo

      protected void moveVisualCursorTo(int targetPos, List<AttributedString> newLines)
    • moveVisualCursorTo

      protected int moveVisualCursorTo(int i1)
    • wcwidth

      public int wcwidth(String str)