syntaxhighlight
Class SyntaxHighlighter

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JScrollPane
                  extended by syntaxhighlight.SyntaxHighlighter
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.ScrollPaneConstants

public class SyntaxHighlighter
extends javax.swing.JScrollPane

The syntax highlighter.

Author:
Chan Wai Shing
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JScrollPane
javax.swing.JScrollPane.AccessibleJScrollPane, javax.swing.JScrollPane.ScrollBar
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  java.lang.String content
          The content of the syntax highlighter, null if there is no content so far.
protected  SyntaxHighlighterPane highlighter
          The script text area.
protected  JTextComponentRowHeader highlighterRowHeader
          The gutter panel (line number).
protected  Parser parser
          The parser.
protected  Theme theme
          The theme.
 
Fields inherited from class javax.swing.JScrollPane
columnHeader, horizontalScrollBar, horizontalScrollBarPolicy, lowerLeft, lowerRight, rowHeader, upperLeft, upperRight, verticalScrollBar, verticalScrollBarPolicy, viewport
 
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 javax.swing.ScrollPaneConstants
COLUMN_HEADER, HORIZONTAL_SCROLLBAR, HORIZONTAL_SCROLLBAR_ALWAYS, HORIZONTAL_SCROLLBAR_AS_NEEDED, HORIZONTAL_SCROLLBAR_NEVER, HORIZONTAL_SCROLLBAR_POLICY, LOWER_LEADING_CORNER, LOWER_LEFT_CORNER, LOWER_RIGHT_CORNER, LOWER_TRAILING_CORNER, ROW_HEADER, UPPER_LEADING_CORNER, UPPER_LEFT_CORNER, UPPER_RIGHT_CORNER, UPPER_TRAILING_CORNER, VERTICAL_SCROLLBAR, VERTICAL_SCROLLBAR_ALWAYS, VERTICAL_SCROLLBAR_AS_NEEDED, VERTICAL_SCROLLBAR_NEVER, VERTICAL_SCROLLBAR_POLICY, VIEWPORT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
SyntaxHighlighter(Parser parser, Theme theme)
          Constructor.
SyntaxHighlighter(Parser parser, Theme theme, SyntaxHighlighterPane highlighterPane)
          Constructor.
 
Method Summary
 void addHighlightedLine(int lineNumber)
          Add highlighted line.
 java.util.List<java.lang.Integer> getHighlightedLineList()
          Get the list of highlighted lines.
 SyntaxHighlighterPane getHighlighter()
          Get the SyntaxHighlighterPane (the script text area).
 JTextComponentRowHeader getHighlighterRowHeader()
          Get the JTextComponentRowHeader, the line number panel.
 Theme getTheme()
          Get current theme.
 boolean isGutterVisible()
          Check the visibility of the gutter.
 boolean isHighlightOnMouseOver()
          Check the status of the mouse-over highlight effect.
protected static java.lang.String readFile(java.io.File file)
          Get the string content of a file.
protected  void render()
          Re-render the script text pane.
 void setContent(java.io.File file)
          Set the content of the syntax highlighter.
 void setContent(java.lang.String content)
          Set the content of the syntax highlighter.
 void setFirstLine(int firstLine)
          Set the line number of the first line.
 void setGutterVisible(boolean visible)
          Set the visibility of the gutter.
 void setHighlightedLineList(java.util.List<java.lang.Integer> highlightedLineList)
          Set highlighted lines.
 void setHighlightOnMouseOver(boolean highlightWhenMouseOver)
          Set turn on the mouse-over highlight effect or not.
 void setTheme(Theme theme)
          Set the theme.
 
Methods inherited from class javax.swing.JScrollPane
createHorizontalScrollBar, createVerticalScrollBar, createViewport, getAccessibleContext, getColumnHeader, getCorner, getHorizontalScrollBar, getHorizontalScrollBarPolicy, getRowHeader, getUI, getUIClassID, getVerticalScrollBar, getVerticalScrollBarPolicy, getViewport, getViewportBorder, getViewportBorderBounds, isValidateRoot, isWheelScrollingEnabled, paramString, setColumnHeader, setColumnHeaderView, setComponentOrientation, setCorner, setHorizontalScrollBar, setHorizontalScrollBarPolicy, setLayout, setRowHeader, setRowHeaderView, setUI, setVerticalScrollBar, setVerticalScrollBarPolicy, setViewport, setViewportBorder, setViewportView, setWheelScrollingEnabled, updateUI
 
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, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, 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
 
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, 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, 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

highlighter

protected SyntaxHighlighterPane highlighter
The script text area.


highlighterRowHeader

protected JTextComponentRowHeader highlighterRowHeader
The gutter panel (line number).


theme

protected Theme theme
The theme.


parser

protected Parser parser
The parser.


content

protected java.lang.String content
The content of the syntax highlighter, null if there is no content so far.

Constructor Detail

SyntaxHighlighter

public SyntaxHighlighter(Parser parser,
                         Theme theme)
Constructor.

Parameters:
parser - the parser to use
theme - the theme for the syntax highlighter

SyntaxHighlighter

public SyntaxHighlighter(Parser parser,
                         Theme theme,
                         SyntaxHighlighterPane highlighterPane)
Constructor.

Parameters:
parser - the parser to use
theme - the theme for the syntax highlighter
highlighterPane - the script text pane of the syntax highlighter
Method Detail

render

protected void render()
Re-render the script text pane. Invoke this when any change of setting that affect the rendering was made. This will re-parse the content and set the style.


getHighlighter

public SyntaxHighlighterPane getHighlighter()
Get the SyntaxHighlighterPane (the script text area). Note: Normally should not operate on the SyntaxHighlighterPane directly.

Returns:
the SyntaxHighlighterPane

getHighlighterRowHeader

public JTextComponentRowHeader getHighlighterRowHeader()
Get the JTextComponentRowHeader, the line number panel. Note: Normally should not operate on the JTextComponentRowHeader directly.

Returns:
the JTextComponentRowHeader

getTheme

public Theme getTheme()
Get current theme.

Returns:
the current theme

setTheme

public void setTheme(Theme theme)
Set the theme. Setting the theme will not re-parse the content, but will clear and apply the new theme on the script text pane.

Parameters:
theme - the theme

setFirstLine

public void setFirstLine(int firstLine)
Set the line number of the first line. E.g. if set 10, the line number will start count from 10 instead of 1.

Parameters:
firstLine - the line number of the first line

getHighlightedLineList

public java.util.List<java.lang.Integer> getHighlightedLineList()
Get the list of highlighted lines.

Returns:
a copy of the list

setHighlightedLineList

public void setHighlightedLineList(java.util.List<java.lang.Integer> highlightedLineList)
Set highlighted lines. Note that this will clear all previous recorded highlighted lines.

Parameters:
highlightedLineList - the list that contain the highlighted lines, null means highlight no lines

addHighlightedLine

public void addHighlightedLine(int lineNumber)
Add highlighted line.

Parameters:
lineNumber - the line number to highlight

isGutterVisible

public boolean isGutterVisible()
Check the visibility of the gutter.

Returns:
true if the gutter is visible, false if not

setGutterVisible

public void setGutterVisible(boolean visible)
Set the visibility of the gutter.

Parameters:
visible - true to make visible, false to hide it

isHighlightOnMouseOver

public boolean isHighlightOnMouseOver()
Check the status of the mouse-over highlight effect. Default is on.

Returns:
true if turned on, false if turned off

setHighlightOnMouseOver

public void setHighlightOnMouseOver(boolean highlightWhenMouseOver)
Set turn on the mouse-over highlight effect or not. If set true, there will be a highlight effect on the line that the mouse cursor currently is pointing on (on the script text area only, not on the line number panel).

Parameters:
highlightWhenMouseOver - true to turn on, false to turn off

setContent

public void setContent(java.io.File file)
                throws java.io.IOException
Set the content of the syntax highlighter. Better set it last after setting all other settings.

Parameters:
file - the file to read
Throws:
java.io.IOException - error occurred when reading the file

setContent

public void setContent(java.lang.String content)
Set the content of the syntax highlighter. It is better to set other settings first and set this the last.

Parameters:
content - the content to set, null means no content

readFile

protected static java.lang.String readFile(java.io.File file)
                                    throws java.io.IOException
Get the string content of a file.

Parameters:
file - the file to retrieve the content from
Returns:
the string content
Throws:
java.io.IOException - error occured when reading the file