kawigi.editor
Class CPPView

java.lang.Object
  |
  +--javax.swing.text.View
        |
        +--javax.swing.text.PlainView
              |
              +--kawigi.editor.GenericView
                    |
                    +--kawigi.editor.CPPView
All Implemented Interfaces:
javax.swing.SwingConstants, javax.swing.text.TabExpander

public class CPPView
extends GenericView

C++ Implementation of a View that takes care of syntax hilighting when rendering text.


Field Summary
protected static java.awt.Color classColor
           
protected static java.util.Hashtable colorHash
           
protected static java.awt.Color commentColor
           
protected static java.awt.Color directiveColor
           
protected static java.awt.Color keywordColor
           
protected static java.awt.Color operatorColor
           
protected static java.awt.Color stringColor
           
protected static java.awt.Color typeColor
           
 
Fields inherited from class javax.swing.text.PlainView
metrics
 
Fields inherited from class javax.swing.text.View
BadBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, GoodBreakWeight, X_AXIS, Y_AXIS
 
Fields inherited from interface javax.swing.SwingConstants
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
 
Constructor Summary
CPPView(javax.swing.text.Element e)
          Creates a new C++ View to render this Element.
 
Method Summary
protected  int drawSelectedText(java.awt.Graphics g, int x, int y, int p0, int p1)
          Overridden from PlainView - this method gets called to render every element of selected text, so that I could change how it's displayed if I want.
protected  int drawTabbedText(java.lang.String s, int x, int y, java.awt.Graphics g, int startOffset, boolean selected, boolean inComment)
          Renders the text segment onto the given Grapnics context.
protected  int drawUnselectedText(java.awt.Graphics g, int x, int y, int p0, int p1)
          Overridden from PlainView - this method gets called to render every element of unselected text.
protected  java.awt.Color getColor(java.lang.String word)
          Returns the color to use on the given token.
static void initColors()
          Initializes/resets the syntax coloring settings and special token table.
 
Methods inherited from class kawigi.editor.GenericView
getTabSize, paint, resetTabStop
 
Methods inherited from class javax.swing.text.PlainView
changedUpdate, damageLineRange, drawLine, getLineBuffer, getPreferredSpan, insertUpdate, lineToRect, modelToView, nextTabStop, removeUpdate, setSize, updateDamage, updateMetrics, viewToModel
 
Methods inherited from class javax.swing.text.View
append, breakView, createFragment, forwardUpdate, forwardUpdateToView, getAlignment, getAttributes, getBreakWeight, getChildAllocation, getContainer, getDocument, getElement, getEndOffset, getGraphics, getMaximumSpan, getMinimumSpan, getNextVisualPositionFrom, getParent, getResizeWeight, getStartOffset, getToolTipText, getView, getViewCount, getViewFactory, getViewIndex, getViewIndex, insert, isVisible, modelToView, modelToView, preferenceChanged, remove, removeAll, replace, setParent, updateChildren, updateLayout, viewToModel
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

colorHash

protected static java.util.Hashtable colorHash

keywordColor

protected static java.awt.Color keywordColor

typeColor

protected static java.awt.Color typeColor

operatorColor

protected static java.awt.Color operatorColor

classColor

protected static java.awt.Color classColor

stringColor

protected static java.awt.Color stringColor

commentColor

protected static java.awt.Color commentColor

directiveColor

protected static java.awt.Color directiveColor
Constructor Detail

CPPView

public CPPView(javax.swing.text.Element e)
Creates a new C++ View to render this Element.

Method Detail

initColors

public static void initColors()
Initializes/resets the syntax coloring settings and special token table. Someone who really uses C++ in competition should make some more intelligent decisions about what should go in the list of "classes".


drawUnselectedText

protected int drawUnselectedText(java.awt.Graphics g,
                                 int x,
                                 int y,
                                 int p0,
                                 int p1)
                          throws javax.swing.text.BadLocationException
Overridden from PlainView - this method gets called to render every element of unselected text.

Overrides:
drawUnselectedText in class javax.swing.text.PlainView
javax.swing.text.BadLocationException

drawSelectedText

protected int drawSelectedText(java.awt.Graphics g,
                               int x,
                               int y,
                               int p0,
                               int p1)
                        throws javax.swing.text.BadLocationException
Overridden from PlainView - this method gets called to render every element of selected text, so that I could change how it's displayed if I want.

Overrides:
drawSelectedText in class javax.swing.text.PlainView
javax.swing.text.BadLocationException

drawTabbedText

protected int drawTabbedText(java.lang.String s,
                             int x,
                             int y,
                             java.awt.Graphics g,
                             int startOffset,
                             boolean selected,
                             boolean inComment)
Renders the text segment onto the given Grapnics context. Originally, this looked a lot like javax.swing.text.Utilities.drawTabbedText with a little bit of tokenizing, but now it's pretty much modified to my own style. Unfortunately, at some point in time, my indentation got all weird (probably as a result of me using tabs and the original implementation mixing spaces and tabs), so there may be some weird-looking parts left in the code. It's possible that I'll eventually change this to work differently with compiler directives. This is the magic of my syntax hilighting.


getColor

protected java.awt.Color getColor(java.lang.String word)
Returns the color to use on the given token. This will return the default foreground color, if no special color is assigned to that token.