org.fife.ui.rsyntaxtextarea
Class RSyntaxTextAreaUI

java.lang.Object
  extended by javax.swing.plaf.ComponentUI
      extended by javax.swing.plaf.TextUI
          extended by javax.swing.plaf.basic.BasicTextUI
              extended by javax.swing.plaf.basic.BasicTextAreaUI
                  extended by org.fife.ui.rtextarea.RTextAreaUI
                      extended by org.fife.ui.rsyntaxtextarea.RSyntaxTextAreaUI
All Implemented Interfaces:
javax.swing.text.ViewFactory

public class RSyntaxTextAreaUI
extends RTextAreaUI

UI used by RSyntaxTextArea. This allows us to implement syntax highlighting.

Version:
0.1
Author:
Robert Futrell

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.plaf.basic.BasicTextUI
javax.swing.plaf.basic.BasicTextUI.BasicCaret, javax.swing.plaf.basic.BasicTextUI.BasicHighlighter
 
Field Summary
 
Fields inherited from class org.fife.ui.rtextarea.RTextAreaUI
textArea
 
Constructor Summary
RSyntaxTextAreaUI(javax.swing.JComponent rSyntaxTextArea)
          Constructor.
 
Method Summary
 javax.swing.text.View create(javax.swing.text.Element elem)
          Creates the view for an element.
protected  javax.swing.text.Highlighter createHighlighter()
          Creates the highlighter to use for syntax text areas.
static javax.swing.plaf.ComponentUI createUI(javax.swing.JComponent ta)
           
protected  java.lang.String getActionMapName()
          Returns the name to use to cache/fetch the shared action map.
 javax.swing.text.EditorKit getEditorKit(javax.swing.text.JTextComponent tc)
          Fetches the EditorKit for the UI.
protected  javax.swing.InputMap getRTextAreaInputMap()
          Get the InputMap to use for the UI.
protected  void paintBackground(java.awt.Graphics g)
          Paints the text area's background.
protected  void paintMatchedBracket(java.awt.Graphics g)
          Paints the "matched bracket", if any.
protected  void propertyChange(java.beans.PropertyChangeEvent e)
          Gets called whenever a bound property is changed on this UI's RSyntaxTextArea.
 void refreshSyntaxHighlighting()
          Updates the view.
 int yForLine(int line)
          Returns the y-coordinate of the specified line.
 int yForLineContaining(int offs)
          Returns the y-coordinate of the line containing a specified offset.
 
Methods inherited from class org.fife.ui.rtextarea.RTextAreaUI
createCaret, createKeymap, createRTextAreaActionMap, getRTextArea, getVisibleEditorRect, installDefaults, installKeyboardActions, installUI, paintCurrentLineHighlight, paintLineHighlights, paintMarginLine
 
Methods inherited from class javax.swing.plaf.basic.BasicTextAreaUI
getMinimumSize, getPreferredSize, getPropertyPrefix
 
Methods inherited from class javax.swing.plaf.basic.BasicTextUI
create, damageRange, damageRange, getComponent, getKeymapName, getMaximumSize, getNextVisualPositionFrom, getRootView, getToolTipText, installListeners, modelChanged, modelToView, modelToView, paint, paintSafely, setView, uninstallDefaults, uninstallKeyboardActions, uninstallListeners, uninstallUI, update, viewToModel, viewToModel
 
Methods inherited from class javax.swing.plaf.ComponentUI
contains, getAccessibleChild, getAccessibleChildrenCount
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RSyntaxTextAreaUI

public RSyntaxTextAreaUI(javax.swing.JComponent rSyntaxTextArea)
Constructor.

Method Detail

createUI

public static javax.swing.plaf.ComponentUI createUI(javax.swing.JComponent ta)

create

public javax.swing.text.View create(javax.swing.text.Element elem)
Creates the view for an element.

Specified by:
create in interface javax.swing.text.ViewFactory
Overrides:
create in class RTextAreaUI
Parameters:
elem - The element.
Returns:
The view.

createHighlighter

protected javax.swing.text.Highlighter createHighlighter()
Creates the highlighter to use for syntax text areas.

Overrides:
createHighlighter in class javax.swing.plaf.basic.BasicTextUI
Returns:
The highlighter.

getActionMapName

protected java.lang.String getActionMapName()
Returns the name to use to cache/fetch the shared action map. This should be overridden by subclasses if the subclass has its own custom editor kit to install, so its actions get picked up.

Overrides:
getActionMapName in class RTextAreaUI
Returns:
The name of the cached action map.

getEditorKit

public javax.swing.text.EditorKit getEditorKit(javax.swing.text.JTextComponent tc)
Fetches the EditorKit for the UI.

Overrides:
getEditorKit in class RTextAreaUI
Parameters:
tc - The text component for which this UI is installed.
Returns:
The editor capabilities.
See Also:
TextUI.getEditorKit(javax.swing.text.JTextComponent)

getRTextAreaInputMap

protected javax.swing.InputMap getRTextAreaInputMap()
Get the InputMap to use for the UI.

This method is not named getInputMap() because there is a package-private method in BasicTextAreaUI with that name. Thus, creating a new method with that name causes certain compilers to issue warnings that you are not actually overriding the original method (since it is package-private).

Overrides:
getRTextAreaInputMap in class RTextAreaUI

paintBackground

protected void paintBackground(java.awt.Graphics g)
Paints the text area's background.

Overrides:
paintBackground in class RTextAreaUI
Parameters:
g - The graphics component on which to paint.

paintMatchedBracket

protected void paintMatchedBracket(java.awt.Graphics g)
Paints the "matched bracket", if any.

Parameters:
g - The graphics context.

propertyChange

protected void propertyChange(java.beans.PropertyChangeEvent e)
Gets called whenever a bound property is changed on this UI's RSyntaxTextArea.

Overrides:
propertyChange in class javax.swing.plaf.basic.BasicTextAreaUI
Parameters:
e - The property change event.

refreshSyntaxHighlighting

public void refreshSyntaxHighlighting()
Updates the view. This should be called when the underlying RSyntaxTextArea changes its syntax editing style.


yForLine

public int yForLine(int line)
             throws javax.swing.text.BadLocationException
Returns the y-coordinate of the specified line.

This method is quicker than using traditional modelToView(int) calls, as the entire bounding box isn't computed.

Overrides:
yForLine in class RTextAreaUI
Parameters:
line - The line number.
Returns:
The y-coordinate of the top of the line, or -1 if this text area doesn't yet have a positive size or the line is hidden (i.e. from folding).
Throws:
javax.swing.text.BadLocationException - If line isn't a valid line number for this document.

yForLineContaining

public int yForLineContaining(int offs)
                       throws javax.swing.text.BadLocationException
Returns the y-coordinate of the line containing a specified offset.

This is faster than calling modelToView(offs).y, so it is preferred if you do not need the actual bounding box.

Overrides:
yForLineContaining in class RTextAreaUI
Parameters:
offs - The offset info the document.
Returns:
The y-coordinate of the top of the offset, or -1 if this text area doesn't yet have a positive size or the line is hidden (i.e. from folding).
Throws:
javax.swing.text.BadLocationException - If offs isn't a valid offset into the document.