## mars.venus.editors.jeditsyntax
Class TextAreaPainter

    java.lang.Object
      java.awt.Component
          java.awt.Container
              javax.swing.JComponent
                  mars.venus.editors.jeditsyntax.TextAreaPainter

All Implemented Interfaces:
  ImageObserver, MenuContainer, Serializable, TabExpander

    public class TextAreaPainter

extends JComponent
implements TabExpander

The text area repaint manager. It performs double buffering and paints lines of text.

Author:
  Slava Pestov
See Also:
  Serialized Form

Nested Class Summary
`static interface` `TextAreaPainter.Highlight` Highlight interface.

Nested classes/interfaces inherited from class javax.swing.JComponent
`JComponent.AccessibleJComponent`

Nested classes/interfaces inherited from class java.awt.Container
`Container.AccessibleAWTContainer`

Nested classes/interfaces inherited from class java.awt.Component
`Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy`

Field Summary
`protected boolean` `blockCaret`
`protected boolean` `bracketHighlight`
`protected Color` `bracketHighlightColor`
`protected Color` `caretColor`
`protected int` `cols`
`protected Color` `eolMarkerColor`
`protected boolean` `eolMarkers`
`protected FontMetrics` `fm`
`protected TextAreaPainter.Highlight` `highlights`
`protected boolean` `lineHighlight`
`protected Color` `lineHighlightColor`
`protected boolean` `paintInvalid`
`protected int` `rows`
`protected Color` `selectionColor`
`protected SyntaxStyle[]` `styles`
`protected int` `tabSize`
`protected int` `tabSizeChars`
`protected JEditTextArea` `textArea`

Fields inherited from class javax.swing.JComponent
`accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

Fields inherited from class java.awt.Component
`BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

Fields inherited from interface java.awt.image.ImageObserver
`ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

Constructor Summary
`TextAreaPainter(JEditTextArea textArea, TextAreaDefaults defaults)` Creates a new repaint manager.

Method Summary
`void` `addCustomHighlight(TextAreaPainter.Highlight highlight)` Adds a custom highlight painter.
`Color` `getBracketHighlightColor()` Returns the bracket highlight color.
`Color` `getCaretColor()` Returns the caret color.
`Color` `getEOLMarkerColor()` Returns the EOL marker color.
`boolean` `getEOLMarkersPainted()` Returns true if EOL markers are drawn, false otherwise.
`FontMetrics` `getFontMetrics()` Returns the font metrics used by this component.
`boolean` `getInvalidLinesPainted()` Returns true if invalid lines are painted as red tildes (~), false otherwise.
`Color` `getLineHighlightColor()` Returns the line highlight color.
`Dimension` `getMinimumSize()` Returns the painter's minimum size.
`Dimension` `getPreferredSize()` Returns the painter's preferred size.
`Color` `getSelectionColor()` Returns the selection color.
`SyntaxStyle[]` `getStyles()` Returns the syntax styles used to paint colorized text.
`int` `getTabSize()` Fetch the tab size in characters.
`String` `getToolTipText(MouseEvent evt)` Returns the tool tip to display at the specified location.
`void` `invalidateLine(int line)` Marks a line as needing a repaint.
`void` `invalidateLineRange(int firstLine, int lastLine)` Marks a range of lines as needing a repaint.
`void` `invalidateSelectedLines()` Repaints the lines containing the selection.
`boolean` `isBlockCaretEnabled()` Returns true if the caret should be drawn as a block, false otherwise.
`boolean` `isBracketHighlightEnabled()` Returns true if bracket highlighting is enabled, false otherwise.
`boolean` `isLineHighlightEnabled()` Returns true if line highlight is enabled, false otherwise.
`boolean` `isManagingFocus()` Returns if this component can be traversed by pressing the Tab key.
`float` `nextTabStop(float x, int tabOffset)` Implementation of TabExpander interface.
`void` `paint(Graphics gfx)` Repaints the text.
`protected void` `paintBracketHighlight(Graphics gfx, int line, int y)`
`protected void` `paintCaret(Graphics gfx, int line, int y)`
`protected void` `paintHighlight(Graphics gfx, int line, int y)`
`protected void` `paintLine(Graphics gfx, TokenMarker tokenMarker, int line, int x)`
`protected void` `paintLineHighlight(Graphics gfx, int line, int y)`
`protected void` `paintPlainLine(Graphics gfx, int line, Font defaultFont, Color defaultColor, int x, int y)`
`protected void` `paintSyntaxLine(Graphics gfx, TokenMarker tokenMarker, int line, Font defaultFont, Color defaultColor, int x, int y)`
`void` `setBlockCaretEnabled(boolean blockCaret)` Sets if the caret should be drawn as a block, false otherwise.
`void` `setBracketHighlightColor(Color bracketHighlightColor)` Sets the bracket highlight color.
`void` `setBracketHighlightEnabled(boolean bracketHighlight)` Enables or disables bracket highlighting.
`void` `setCaretColor(Color caretColor)` Sets the caret color.
`void` `setEOLMarkerColor(Color eolMarkerColor)` Sets the EOL marker color.
`void` `setEOLMarkersPainted(boolean eolMarkers)` Sets if EOL markers are to be drawn.
`void` `setFont(Font font)` Sets the font for this component.
`void` `setInvalidLinesPainted(boolean paintInvalid)` Sets if invalid lines are to be painted as red tildes.
`void` `setLineHighlightColor(Color lineHighlightColor)` Sets the line highlight color.
`void` `setLineHighlightEnabled(boolean lineHighlight)` Enables or disables current line highlighting.
`void` `setSelectionColor(Color selectionColor)` Sets the selection color.
`void` `setStyles(SyntaxStyle[] styles)` Sets the syntax styles used to paint colorized text.
`void` `setTabSize(int size)` Set the tab size in characters.

Methods inherited from class javax.swing.JComponent

`addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, 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, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, 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, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI`

Methods 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, transferFocusBackward, transferFocusDownCycle, validate, validateTree`

Methods 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, 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, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, 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, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### textArea

    protected JEditTextArea textArea

### styles

    protected SyntaxStyle[] styles

### caretColor

    protected Color caretColor

### selectionColor

    protected Color selectionColor

### lineHighlightColor

    protected Color lineHighlightColor

### bracketHighlightColor

    protected Color bracketHighlightColor

### eolMarkerColor

    protected Color eolMarkerColor

### blockCaret

    protected boolean blockCaret

### lineHighlight

    protected boolean lineHighlight

### bracketHighlight

    protected boolean bracketHighlight

### paintInvalid

    protected boolean paintInvalid

### eolMarkers

    protected boolean eolMarkers

### cols

    protected int cols

### rows

    protected int rows

### tabSize

    protected int tabSize

### tabSizeChars

    protected int tabSizeChars

### fm

    protected FontMetrics fm

### highlights

    protected TextAreaPainter.Highlight highlights

Constructor Detail

### TextAreaPainter

    public TextAreaPainter(JEditTextArea textArea,
                           TextAreaDefaults defaults)

  Creates a new repaint manager. This should be not be called directly.

Method Detail

### isManagingFocus

    public final boolean isManagingFocus()

  Returns if this component can be traversed by pressing the Tab key. This returns false. NOTE: as of Java 1.4 this method is deprecated and no longer has the desired effect because the focus subsystem does not call it. I've implemented a KeyEventDispatcher in JEditTextArea to handle Tabs. DPS 12-May-2010

  Overrides:
    `isManagingFocus` in class `JComponent`

### getTabSize

    public int getTabSize()

  Fetch the tab size in characters. DPS 12-May-2010.

  Returns:
    int tab size in characters

### setTabSize

    public void setTabSize(int size)

  Set the tab size in characters. DPS 12-May-2010. Originally it was fixed at PlainDocument property value (8).

  Parameters:
    `size` - tab size in characters

### getStyles

    public final SyntaxStyle[] getStyles()

  Returns the syntax styles used to paint colorized text. Entry n will be used to paint tokens with id = n.

  See Also:
    `org.syntax.jedit.Token`

### setStyles

    public final void setStyles(SyntaxStyle[] styles)

  Sets the syntax styles used to paint colorized text. Entry n will be used to paint tokens with id = n.

  Parameters:
    `styles` - The syntax styles
  See Also:
    `org.syntax.jedit.Token`

### getCaretColor

    public final Color getCaretColor()

  Returns the caret color.

### setCaretColor

    public final void setCaretColor(Color caretColor)

  Sets the caret color.

  Parameters:
    `caretColor` - The caret color

### getSelectionColor

    public final Color getSelectionColor()

  Returns the selection color.

### setSelectionColor

    public final void setSelectionColor(Color selectionColor)

  Sets the selection color.

  Parameters:
    `selectionColor` - The selection color

### getLineHighlightColor

    public final Color getLineHighlightColor()

  Returns the line highlight color.

### setLineHighlightColor

    public final void setLineHighlightColor(Color lineHighlightColor)

  Sets the line highlight color.

  Parameters:
    `lineHighlightColor` - The line highlight color

### isLineHighlightEnabled

    public final boolean isLineHighlightEnabled()

  Returns true if line highlight is enabled, false otherwise.

### setLineHighlightEnabled

    public final void setLineHighlightEnabled(boolean lineHighlight)

  Enables or disables current line highlighting.

  Parameters:
    `lineHighlight` - True if current line highlight should be enabled, false otherwise

### getBracketHighlightColor

    public final Color getBracketHighlightColor()

  Returns the bracket highlight color.

### setBracketHighlightColor

    public final void setBracketHighlightColor(Color bracketHighlightColor)

  Sets the bracket highlight color.

  Parameters:
    `bracketHighlightColor` - The bracket highlight color

### isBracketHighlightEnabled

    public final boolean isBracketHighlightEnabled()

  Returns true if bracket highlighting is enabled, false otherwise. When bracket highlighting is enabled, the bracket matching the one before the caret (if any) is highlighted.

### setBracketHighlightEnabled

    public final void setBracketHighlightEnabled(boolean bracketHighlight)

  Enables or disables bracket highlighting. When bracket highlighting is enabled, the bracket matching the one before the caret (if any) is highlighted.

  Parameters:
    `bracketHighlight` - True if bracket highlighting should be enabled, false otherwise

### isBlockCaretEnabled

    public final boolean isBlockCaretEnabled()

  Returns true if the caret should be drawn as a block, false otherwise.

### setBlockCaretEnabled

    public final void setBlockCaretEnabled(boolean blockCaret)

  Sets if the caret should be drawn as a block, false otherwise.

  Parameters:
    `blockCaret` - True if the caret should be drawn as a block, false otherwise.

### getEOLMarkerColor

    public final Color getEOLMarkerColor()

  Returns the EOL marker color.

### setEOLMarkerColor

    public final void setEOLMarkerColor(Color eolMarkerColor)

  Sets the EOL marker color.

  Parameters:
    `eolMarkerColor` - The EOL marker color

### getEOLMarkersPainted

    public final boolean getEOLMarkersPainted()

  Returns true if EOL markers are drawn, false otherwise.

### setEOLMarkersPainted

    public final void setEOLMarkersPainted(boolean eolMarkers)

  Sets if EOL markers are to be drawn.

  Parameters:
    `eolMarkers` - True if EOL markers should be drawn, false otherwise

### getInvalidLinesPainted

    public boolean getInvalidLinesPainted()

  Returns true if invalid lines are painted as red tildes (~), false otherwise.

### setInvalidLinesPainted

    public void setInvalidLinesPainted(boolean paintInvalid)

  Sets if invalid lines are to be painted as red tildes.

  Parameters:
    `paintInvalid` - True if invalid lines should be drawn, false otherwise

### addCustomHighlight

    public void addCustomHighlight(TextAreaPainter.Highlight highlight)

  Adds a custom highlight painter.

  Parameters:
    `highlight` - The highlight

### getToolTipText

    public String getToolTipText(MouseEvent evt)

  Returns the tool tip to display at the specified location.

  Overrides:
    `getToolTipText` in class `JComponent`
  Parameters:
    `evt` - The mouse event

### getFontMetrics

    public FontMetrics getFontMetrics()

  Returns the font metrics used by this component.

### setFont

    public void setFont(Font font)

  Sets the font for this component. This is overridden to update the cached font metrics and to recalculate which lines are visible.

  Overrides:
    `setFont` in class `JComponent`
  Parameters:
    `font` - The font

### paint

    public void paint(Graphics gfx)

  Repaints the text.

  Overrides:
    `paint` in class `JComponent`
  Parameters:
    `gfx` - The graphics context

### invalidateLine

    public final void invalidateLine(int line)

  Marks a line as needing a repaint.

  Parameters:
    `line` - The line to invalidate

### invalidateLineRange

    public final void invalidateLineRange(int firstLine,
                                          int lastLine)

  Marks a range of lines as needing a repaint.

  Parameters:
    `firstLine` - The first line to invalidate
    `lastLine` - The last line to invalidate

### invalidateSelectedLines

    public final void invalidateSelectedLines()

  Repaints the lines containing the selection.

### nextTabStop

    public float nextTabStop(float x,
                             int tabOffset)

  Implementation of TabExpander interface. Returns next tab stop after a specified point.

  Specified by:
    `nextTabStop` in interface `TabExpander`
  Parameters:
    `x` - The x co-ordinate
    `tabOffset` - Ignored
  Returns:
    The next tab stop after x

### getPreferredSize

    public Dimension getPreferredSize()

  Returns the painter's preferred size.

  Overrides:
    `getPreferredSize` in class `JComponent`

### getMinimumSize

    public Dimension getMinimumSize()

  Returns the painter's minimum size.

  Overrides:
    `getMinimumSize` in class `JComponent`

### paintLine

    protected void paintLine(Graphics gfx,
                             TokenMarker tokenMarker,
                             int line,
                             int x)

### paintPlainLine

    protected void paintPlainLine(Graphics gfx,
                                  int line,
                                  Font defaultFont,
                                  Color defaultColor,
                                  int x,
                                  int y)

### paintSyntaxLine

    protected void paintSyntaxLine(Graphics gfx,
                                   TokenMarker tokenMarker,
                                   int line,
                                   Font defaultFont,
                                   Color defaultColor,
                                   int x,
                                   int y)

### paintHighlight

    protected void paintHighlight(Graphics gfx,
                                  int line,
                                  int y)

### paintLineHighlight

    protected void paintLineHighlight(Graphics gfx,
                                      int line,
                                      int y)

### paintBracketHighlight

    protected void paintBracketHighlight(Graphics gfx,
                                         int line,
                                         int y)

### paintCaret

    protected void paintCaret(Graphics gfx,
                              int line,
                              int y)