Terminal
Date: 2015-12-09

jline

## Class Terminal

- java.lang.Object
- - jline.Terminal

- All Implemented Interfaces:
    ConsoleOperations
  Direct Known Subclasses:
    UnixTerminal, UnsupportedTerminal, WindowsTerminal

      public abstract class Terminal
      extends java.lang.Object
      implements ConsoleOperations

  Representation of the input terminal for a platform. Handles any initialization that the platform may need to perform in order to allow the `ConsoleReader` to correctly handle input.
  Author:
    Marc Prud'hommeaux

- - ### Field Summary

    - ### Fields inherited from interface jline.ConsoleOperations

      `ABORT, ADD, BACKSPACE, CHANGE_CASE, CHANGE_META, CLEAR_LINE, CLEAR_SCREEN, COMPLETE, CR, CTRL_A, CTRL_B, CTRL_C, CTRL_D, CTRL_E, CTRL_F, CTRL_G, CTRL_K, CTRL_L, CTRL_N, CTRL_OB, CTRL_P, CTRL_QM, DELETE, DELETE_META, DELETE_NEXT_CHAR, DELETE_PREV_CHAR, DELETE_PREV_WORD, END_OF_HISTORY, END_WORD, EXIT, INSERT, KEYBOARD_BELL, KILL_LINE, KILL_LINE_PREV, MOVE_TO_BEG, MOVE_TO_END, NEWLINE, NEXT_CHAR, NEXT_HISTORY, NEXT_SPACE_WORD, NEXT_WORD, PASTE, PASTE_NEXT, PASTE_PREV, PREV_CHAR, PREV_HISTORY, PREV_SPACE_WORD, PREV_WORD, REDISPLAY, REPEAT_NEXT_CHAR, REPEAT_PREV_CHAR, REPEAT_SEARCH_NEXT, REPEAT_SEARCH_PREV, REPLACE_CHAR, REPLACE_MODE, RESET_LINE, SEARCH_NEXT, SEARCH_PREV, START_OF_HISTORY, SUBSTITUTE_CHAR, SUBSTITUTE_LINE, TO_END_WORD, TO_NEXT_CHAR, TO_PREV_CHAR, UNDO, UNKNOWN`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Terminal()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterReadLine(ConsoleReader reader, java.lang.String prompt, java.lang.Character mask)` Invokes after the console reads a line with the prompt and mask.
    `void` | `beforeReadLine(ConsoleReader reader, java.lang.String prompt, java.lang.Character mask)` Invokes before the console reads a line with the prompt and mask.
    `abstract void` | `disableEcho()` Disable character echoing.
    `abstract void` | `enableEcho()` Enable character echoing.
    `java.io.InputStream` | `getDefaultBindings()`
    `abstract boolean` | `getEcho()` Returns true if the terminal will echo all characters type.
    `static Terminal` | `getTerminal()`
    `abstract int` | `getTerminalHeight()` Returns the current height of the terminal (in lines)
    `abstract int` | `getTerminalWidth()` Returns the current width of the terminal (in characters)
    `abstract void` | `initializeTerminal()` Initialize any system settings that are required for the console to be able to handle input correctly, such as setting tabtop, buffered input, and character echo.
    `boolean` | `isANSISupported()` Returns true if the current console supports ANSI codes.
    `abstract boolean` | `isEchoEnabled()` Returns false if character echoing is disabled.
    `abstract boolean` | `isSupported()` Returns true if this terminal is capable of initializing the terminal to use jline.
    `int` | `readCharacter(java.io.InputStream in)` Read a single character from the input stream.
    `int` | `readVirtualKey(java.io.InputStream in)` Reads a virtual key from the console.
    `static void` | `resetTerminal()` Reset the current terminal to null.
    `static Terminal` | `setupTerminal()` Configure and return the `Terminal` instance for the current platform.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### Terminal

          public Terminal()

  - ### Method Detail

    - #### getTerminal

          public static Terminal getTerminal()

      See Also:
        `setupTerminal()`

    - #### resetTerminal

          public static void resetTerminal()

      Reset the current terminal to null.

    - #### setupTerminal

          public static Terminal setupTerminal()

      Configure and return the `Terminal` instance for the current platform. This will initialize any system settings that are required for the console to be able to handle input correctly, such as setting tabtop, buffered input, and character echo.

      This class will use the Terminal implementation specified in the jline.terminal system property, or, if it is unset, by detecting the operating system from the os.name system property and instantiating either the `WindowsTerminalTest` or `UnixTerminal`.

      See Also:
        `initializeTerminal()`

    - #### isANSISupported

          public boolean isANSISupported()

      Returns true if the current console supports ANSI codes.

    - #### readCharacter

          public int readCharacter(java.io.InputStream in)
                            throws java.io.IOException

      Read a single character from the input stream. This might enable a terminal implementation to better handle nuances of the console.
      Throws:
        `java.io.IOException`

    - #### readVirtualKey

          public int readVirtualKey(java.io.InputStream in)
                             throws java.io.IOException

      Reads a virtual key from the console. Typically, this will just be the raw character that was entered, but in some cases, multiple input keys will need to be translated into a single virtual key.
      Parameters:
        `in` - the InputStream to read from
      Returns:
        the virtual key (e.g., `ConsoleOperations#VK_UP`)
      Throws:
        `java.io.IOException`

    - #### initializeTerminal

          public abstract void initializeTerminal()
                                           throws java.lang.Exception

      Initialize any system settings that are required for the console to be able to handle input correctly, such as setting tabtop, buffered input, and character echo.
      Throws:
        `java.lang.Exception`

    - #### getTerminalWidth

          public abstract int getTerminalWidth()

      Returns the current width of the terminal (in characters)

    - #### getTerminalHeight

          public abstract int getTerminalHeight()

      Returns the current height of the terminal (in lines)

    - #### isSupported

          public abstract boolean isSupported()

      Returns true if this terminal is capable of initializing the terminal to use jline.

    - #### getEcho

          public abstract boolean getEcho()

      Returns true if the terminal will echo all characters type.

    - #### beforeReadLine

          public void beforeReadLine(ConsoleReader reader,
                            java.lang.String prompt,
                            java.lang.Character mask)

      Invokes before the console reads a line with the prompt and mask.

    - #### afterReadLine

          public void afterReadLine(ConsoleReader reader,
                           java.lang.String prompt,
                           java.lang.Character mask)

      Invokes after the console reads a line with the prompt and mask.

    - #### isEchoEnabled

          public abstract boolean isEchoEnabled()

      Returns false if character echoing is disabled.

    - #### enableEcho

          public abstract void enableEcho()

      Enable character echoing. This can be used to re-enable character if the ConsoleReader is no longer being used.

    - #### disableEcho

          public abstract void disableEcho()

      Disable character echoing. This can be used to manually re-enable character if the ConsoleReader has been disabled.

    - #### getDefaultBindings

          public java.io.InputStream getDefaultBindings()