Package org.jline.builtins
Class SwingTerminal.TerminalComponent
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
org.jline.builtins.SwingTerminal.TerminalComponent
- All Implemented Interfaces:
KeyListener,ImageObserver,MenuContainer,Serializable,EventListener,Sized
- Enclosing class:
SwingTerminal
public static class SwingTerminal.TerminalComponent
extends JComponent
implements KeyListener, Sized
JComponent that renders the terminal display.
This is the inner class that contains the original ScreenTerminal-based implementation.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
ConstructorsConstructorDescriptionTerminalComponent(int columns, int rows) Create a TerminalComponent for rendering and capturing input for a terminal with the specified character grid size. -
Method Summary
Modifier and TypeMethodDescriptionvoiddispose()Stops the cursor timer and cleans up resources.voiddump(long[] screen, int x, int y, int height, int width, int[] cursor) Dumps the terminal screen data.dump(long timeout, boolean forceUpdate) Dumps the terminal screen data with scrollback.intReturns the number of columns (width) in this object.intgetRows()Returns the number of rows (height) in this object.Gets the current terminal font.booleanisDirty()Checks if the terminal is dirty (needs repainting).voidvoidvoidprotected voidPaints this Swing component and its terminal contents.Gets the next input from the input queue.booleanResize the terminal to the specified columns and rows.voidsetTerminal(SwingTerminal terminal) Sets the terminal reference after construction to avoid this-escape issues.voidsetTerminalFont(Font font) Sets the font used for terminal display.Gets the next input from the input queue, blocking if necessary.voidWrites text to the terminal component.Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUIMethods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTreeMethods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Constructor Details
-
TerminalComponent
public TerminalComponent(int columns, int rows) Create a TerminalComponent for rendering and capturing input for a terminal with the specified character grid size.- Parameters:
columns- the number of character columns in the terminalrows- the number of character rows in the terminal
-
-
Method Details
-
setTerminal
Sets the terminal reference after construction to avoid this-escape issues.- Parameters:
terminal- the SwingTerminal instance
-
setTerminalFont
Sets the font used for terminal display.- Parameters:
font- the font to use (should be monospace)
-
getTerminalFont
-
setSize
Resize the terminal to the specified columns and rows.- Parameters:
size- the new Size whose columns and rows will be applied- Returns:
- true if the size was set successfully, false otherwise
-
getColumns
public int getColumns()Description copied from interface:SizedReturns the number of columns (width) in this object.The number of columns represents the width in character cells.
- Specified by:
getColumnsin interfaceSized- Returns:
- The number of columns (width) in this object.
-
getRows
-
paintComponent
Paints this Swing component and its terminal contents.Prepares a Graphics2D context with high-quality text rendering and the component's terminal font, then delegates actual terminal rendering to the paintTerminalContent method.
- Overrides:
paintComponentin classJComponent
-
pollInput
Gets the next input from the input queue.- Returns:
- the next input string, or null if none available
-
takeInput
Gets the next input from the input queue, blocking if necessary.- Returns:
- the next input string
- Throws:
InterruptedException- if interrupted while waiting
-
write
Writes text to the terminal component.- Parameters:
text- the text to write
-
dump
public void dump(long[] screen, int x, int y, int height, int width, int[] cursor) Dumps the terminal screen data.- Parameters:
screen- the screen data array to fillx- the starting x coordinatey- the starting y coordinateheight- the height to dumpwidth- the width to dumpcursor- the cursor position array to fill
-
dump
Dumps the terminal screen data with scrollback.- Parameters:
timeout-forceUpdate-- Returns:
- the screen data
- Throws:
InterruptedException- if interrupted while waiting
-
isDirty
public boolean isDirty()Checks if the terminal is dirty (needs repainting).- Returns:
- true if dirty
-
getScreenTerminal
-
keyTyped
- Specified by:
keyTypedin interfaceKeyListener
-
keyPressed
- Specified by:
keyPressedin interfaceKeyListener
-
keyReleased
- Specified by:
keyReleasedin interfaceKeyListener
-
dispose
public void dispose()Stops the cursor timer and cleans up resources.
-