syntaxhighlight
Class SyntaxHighlighterPane

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.text.JTextComponent
                  extended by javax.swing.JEditorPane
                      extended by javax.swing.JTextPane
                          extended by syntaxhighlight.SyntaxHighlighterPane
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.Scrollable

public class SyntaxHighlighterPane
extends javax.swing.JTextPane

The text pane for displaying the script text.

Author:
Chan Wai Shing
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JEditorPane
javax.swing.JEditorPane.AccessibleJEditorPane, javax.swing.JEditorPane.AccessibleJEditorPaneHTML, javax.swing.JEditorPane.JEditorPaneAccessibleHypertextSupport
 
Nested classes/interfaces inherited from class javax.swing.text.JTextComponent
javax.swing.text.JTextComponent.AccessibleJTextComponent, javax.swing.text.JTextComponent.DropLocation, javax.swing.text.JTextComponent.KeyBinding
 
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.util.List<java.lang.Integer> highlightedLineList
          The list of line numbers that indicate which lines are needed to be highlighted.
protected  javax.swing.text.Highlighter.HighlightPainter highlightPainter
          The highlighter painter used to do the highlight line effect.
protected  int mouseOnLine
          Record the mouse cursor is currently pointing at which line of the document.
protected  java.util.Map<java.lang.String,java.util.List<ParseResult>> styleList
          The style list.
protected  Theme theme
          The theme.
 
Fields inherited from class javax.swing.JEditorPane
HONOR_DISPLAY_PROPERTIES, W3C_LENGTH_UNITS
 
Fields inherited from class javax.swing.text.JTextComponent
DEFAULT_KEYMAP, FOCUS_ACCELERATOR_KEY
 
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
SyntaxHighlighterPane()
          Constructor.
 
Method Summary
 void addHighlightedLine(int lineNumber)
          Add highlighted line.
protected  void applyStyle()
          Apply the list of style to the script text pane.
 java.awt.Color getHighlightedBackground()
          Get the color of the highlighted background.
 java.util.List<java.lang.Integer> getHighlightedLineList()
          Get the list of highlighted lines.
 int getLineNumberOffset()
          Get the line number offset.
 Theme getTheme()
          Get current theme.
 boolean isHighlightOnMouseOver()
          Check the status of the mouse-over highlight effect.
 void setContent(java.lang.String content)
          Set the content of the syntax highlighter.
protected static java.awt.Font setFont(java.awt.Font font, boolean bold, boolean italic)
          Set the font according to bold and italic.
 void setHighlightedBackground(java.awt.Color highlightedBackground)
          Set the color of the highlighted background.
 void setHighlightedLineList(java.util.List<java.lang.Integer> highlightedLineList)
          Set highlighted lines.
 void setHighlighter(javax.swing.text.Highlighter highlighter)
           
 void setHighlightOnMouseOver(boolean highlightWhenMouseOver)
          Set turn on the mouse-over highlight effect or not.
 void setLineNumberOffset(int offset)
          Set the line number offset.
 void setStyle(java.util.List<ParseResult> styleList)
           
 void setTheme(Theme theme)
          Set the theme.
 
Methods inherited from class javax.swing.JTextPane
addStyle, createDefaultEditorKit, getCharacterAttributes, getInputAttributes, getLogicalStyle, getParagraphAttributes, getStyle, getStyledDocument, getStyledEditorKit, getUIClassID, insertComponent, insertIcon, paramString, removeStyle, replaceSelection, setCharacterAttributes, setDocument, setEditorKit, setLogicalStyle, setParagraphAttributes, setStyledDocument
 
Methods inherited from class javax.swing.JEditorPane
addHyperlinkListener, createEditorKitForContentType, fireHyperlinkUpdate, getAccessibleContext, getContentType, getEditorKit, getEditorKitClassNameForContentType, getEditorKitForContentType, getHyperlinkListeners, getPage, getPreferredSize, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getStream, getText, read, registerEditorKitForContentType, registerEditorKitForContentType, removeHyperlinkListener, scrollToReference, setContentType, setEditorKitForContentType, setPage, setPage, setText
 
Methods inherited from class javax.swing.text.JTextComponent
addCaretListener, addInputMethodListener, addKeymap, copy, cut, fireCaretUpdate, getActions, getCaret, getCaretColor, getCaretListeners, getCaretPosition, getDisabledTextColor, getDocument, getDragEnabled, getDropLocation, getDropMode, getFocusAccelerator, getHighlighter, getInputMethodRequests, getKeymap, getKeymap, getMargin, getNavigationFilter, getPreferredScrollableViewportSize, getPrintable, getScrollableBlockIncrement, getScrollableUnitIncrement, getSelectedText, getSelectedTextColor, getSelectionColor, getSelectionEnd, getSelectionStart, getText, getToolTipText, getUI, isEditable, loadKeymap, modelToView, moveCaretPosition, paste, print, print, print, processInputMethodEvent, read, removeCaretListener, removeKeymap, removeNotify, select, selectAll, setCaret, setCaretColor, setCaretPosition, setComponentOrientation, setDisabledTextColor, setDragEnabled, setDropMode, setEditable, setFocusAccelerator, setKeymap, setMargin, setNavigationFilter, setSelectedTextColor, setSelectionColor, setSelectionEnd, setSelectionStart, setUI, updateUI, viewToModel, write
 
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, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, 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, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, 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, 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, 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

highlightedLineList

protected final java.util.List<java.lang.Integer> highlightedLineList
The list of line numbers that indicate which lines are needed to be highlighted.


highlightPainter

protected javax.swing.text.Highlighter.HighlightPainter highlightPainter
The highlighter painter used to do the highlight line effect.


theme

protected Theme theme
The theme.


styleList

protected java.util.Map<java.lang.String,java.util.List<ParseResult>> styleList
The style list.


mouseOnLine

protected int mouseOnLine
Record the mouse cursor is currently pointing at which line of the document. -1 means not any line. It is used internally.

Constructor Detail

SyntaxHighlighterPane

public SyntaxHighlighterPane()
Constructor.

Method Detail

setHighlighter

public void setHighlighter(javax.swing.text.Highlighter highlighter)
Overrides:
setHighlighter in class javax.swing.text.JTextComponent

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

setStyle

public void setStyle(java.util.List<ParseResult> styleList)

applyStyle

protected void applyStyle()
Apply the list of style to the script text pane. See syntaxhighlighter.parser.Parser#parse(syntaxhighlighter.brush.Brush, boolean, char[], int, int).


getTheme

public Theme getTheme()
Get current theme.

Returns:
the current theme

setTheme

public void setTheme(Theme theme)
Set the theme.

Parameters:
theme - the theme

getLineNumberOffset

public int getLineNumberOffset()
Get the line number offset. E.g. set offset to 9 will make the first line number to appear at line 1 + 9 = 10

Returns:
the offset

setLineNumberOffset

public void setLineNumberOffset(int offset)
Set the line number offset. E.g. set offset to 9 will make the first line number to appear at line 1 + 9 = 10

Parameters:
offset - the offset

getHighlightedBackground

public java.awt.Color getHighlightedBackground()
Get the color of the highlighted background. Default is black.

Returns:
the color

setHighlightedBackground

public void setHighlightedBackground(java.awt.Color highlightedBackground)
Set the color of the highlighted background. Default is black.

Parameters:
highlightedBackground - the color

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. Default is on. 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

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

addHighlightedLine

public void addHighlightedLine(int lineNumber)
Add highlighted line.

Parameters:
lineNumber - the line number to highlight

setFont

protected static java.awt.Font setFont(java.awt.Font font,
                                       boolean bold,
                                       boolean italic)
Set the font according to bold and italic.

Parameters:
font - the font to set
bold - true to set bold, false not
italic - true to set italic, false not
Returns:
the font with bold and italic changed, or null if the input font is null