edu.rice.cs.drjava.model.definitions
Class ColoringView

java.lang.Object
  extended by javax.swing.text.View
      extended by javax.swing.text.PlainView
          extended by edu.rice.cs.drjava.model.definitions.ColoringView
All Implemented Interfaces:
OptionConstants, javax.swing.SwingConstants, javax.swing.text.TabExpander

public class ColoringView
extends javax.swing.text.PlainView
implements OptionConstants

This view class renders text on the screen using the reduced model info. By extending WrappedPlainView, we only have to override the parts we want to. Here we only override drawUnselectedText. We may want to override drawSelectedText at some point. As of 2002/06/17, we now extend PlainView because WrappedPlainView was causing bugs related to resizing the viewport of the definitions scroll pane.

Version:
$Id: ColoringView.java 5175 2010-01-20 08:46:32Z mgricken $

Nested Class Summary
private  class ColoringView.ColorOptionListener
          The OptionListeners for DEFINITIONS COLORs
private static class ColoringView.FontOptionListener
           
 
Nested classes/interfaces inherited from interface edu.rice.cs.drjava.config.OptionConstants
OptionConstants.AccessLevelChoices, OptionConstants.COMPILER_PREFERENCE_CONTROL, OptionConstants.ConcJUnitCheckChoices, OptionConstants.DefaultFont, OptionConstants.DeleteLLClassFileChoices, OptionConstants.DynamicJavaAccessControlChoices, OptionConstants.FileExtRegistrationChoices, OptionConstants.HeapSizeChoices, OptionConstants.LookAndFeels, OptionConstants.PlasticThemes, OptionConstants.to, OptionConstants.VersionNotificationChoices
 
Field Summary
static java.awt.Color COMMENTED_COLOR
           
static java.awt.Color DEBUGGER_COLOR
           
static java.awt.Color DOUBLE_QUOTED_COLOR
           
static java.awt.Color ERROR_COLOR
           
static java.awt.Color INTERACTIONS_SYSTEM_ERR_COLOR
           
static java.awt.Color INTERACTIONS_SYSTEM_IN_COLOR
           
static java.awt.Color INTERACTIONS_SYSTEM_OUT_COLOR
           
static java.awt.Color KEYWORD_COLOR
           
static java.awt.Font MAIN_FONT
           
static java.awt.Color NORMAL_COLOR
           
static java.awt.Color NUMBER_COLOR
           
static java.awt.Color SINGLE_QUOTED_COLOR
           
static java.awt.Color TYPE_COLOR
           
 
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 edu.rice.cs.drjava.config.OptionConstants
accessLevelChoices, ADVANCED_LEVEL, ALLOW_PRIVATE_ACCESS, ALWAYS_COMPILE_BEFORE_JAVADOC, ALWAYS_COMPILE_BEFORE_JUNIT, ALWAYS_SAVE_BEFORE_COMPILE, ALWAYS_SAVE_BEFORE_DEBUG, ALWAYS_SAVE_BEFORE_JAVADOC, ALWAYS_SAVE_BEFORE_RUN, apiJavadocChoices, apiJavadocDeprecated, apiJavadocVersionChoices, apiJavadocVersionDeprecated, AUTO_CLOSE_COMMENTS, AUTO_STEP_RATE, BACKUP_FILES, BOOKMARK_COLOR, BROWSER_FILE, BROWSER_HISTORY_MAX_SIZE, BROWSER_STRING, CLIPBOARD_HISTORY_SIZE, COMPILER_ERROR_COLOR, CONCJUNIT_CHECKS_ENABLED, concJUnitCheckChoices, CUSTOM_DRJAVA_JAR_VERSION_SUFFIX, DEBUG_AUTO_IMPORT, DEBUG_BREAKPOINT_COLOR, DEBUG_BREAKPOINT_DISABLED_COLOR, DEBUG_EXPRESSIONS_AND_METHODS_IN_WATCHES, DEBUG_MESSAGE_COLOR, DEBUG_PANEL_HEIGHT, DEBUG_SOURCEPATH, DEBUG_STEP_DRJAVA, DEBUG_STEP_EXCLUDE, DEBUG_STEP_INTERPRETER, DEBUG_STEP_JAVA, DEBUG_THREAD_COLOR, DEFAULT_COMPILER_PREFERENCE, DEFINITIONS_BACKGROUND_COLOR, DEFINITIONS_COMMENT_COLOR, DEFINITIONS_DOUBLE_QUOTED_COLOR, DEFINITIONS_KEYWORD_COLOR, DEFINITIONS_LINE_NUMBER_BACKGROUND_COLOR, DEFINITIONS_LINE_NUMBER_COLOR, DEFINITIONS_MATCH_COLOR, DEFINITIONS_NORMAL_COLOR, DEFINITIONS_NUMBER_COLOR, DEFINITIONS_SINGLE_QUOTED_COLOR, DEFINITIONS_TYPE_COLOR, DELETE_LL_CLASS_FILES, DELETE_LL_CLASS_FILES_CHOICES, DETACH_DEBUGGER, DETACH_TABBEDPANES, DIALOG_AUTOIMPORT_ENABLED, DIALOG_AUTOIMPORT_STATE, DIALOG_AUTOIMPORT_STORE_POSITION, DIALOG_CLIPBOARD_HISTORY_STATE, DIALOG_CLIPBOARD_HISTORY_STORE_POSITION, DIALOG_COMPLETE_JAVAAPI, DIALOG_COMPLETE_SCAN_CLASS_FILES, DIALOG_COMPLETE_WORD_STATE, DIALOG_COMPLETE_WORD_STORE_POSITION, DIALOG_DEBUGFRAME_STATE, DIALOG_DEBUGFRAME_STORE_POSITION, DIALOG_DRJAVA_ERROR_POPUP_ENABLED, DIALOG_DRJAVA_SURVEY_ENABLED, DIALOG_EDITEXTERNALPROCESS_STATE, DIALOG_EDITEXTERNALPROCESS_STORE_POSITION, DIALOG_EXTERNALPROCESS_STATE, DIALOG_EXTERNALPROCESS_STORE_POSITION, DIALOG_GOTOFILE_FULLY_QUALIFIED, DIALOG_GOTOFILE_STATE, DIALOG_GOTOFILE_STORE_POSITION, DIALOG_JAROPTIONS_STATE, DIALOG_JAROPTIONS_STORE_POSITION, DIALOG_LIGHTWEIGHT_PARSING_DELAY, DIALOG_OPENJAVADOC_STATE, DIALOG_OPENJAVADOC_STORE_POSITION, DIALOG_TABBEDPANES_STATE, DIALOG_TABBEDPANES_STORE_POSITION, DISPLAY_ALL_COMPILER_VERSIONS, DISPLAY_RIGHT_MARGIN, DJ_FILE_EXTENSION, DOC_LIST_WIDTH, DRJAVA_ERRORS_BUTTON_COLOR, DRJAVA_SURVEY_DAYS, DRJAVA_USE_FORCE_QUIT, DYNAMICJAVA_ACCESS_CONTROL, DYNAMICJAVA_ACCESS_CONTROL_CHOICES, DYNAMICJAVA_REQUIRE_SEMICOLON, DYNAMICJAVA_REQUIRE_VARIABLE_TYPE, ELEMENTARY_LEVEL, EXTERNAL_SAVED_CMDLINES, EXTERNAL_SAVED_COUNT, EXTERNAL_SAVED_ENCLOSING_DJAPP_FILES, EXTERNAL_SAVED_NAMES, EXTERNAL_SAVED_PREFIX, EXTERNAL_SAVED_WORKDIRS, EXTPROCESS_FILE_EXTENSION, EXTPROCESS_FILE_NAME_INSIDE_JAR, EXTRA_CLASSPATH, EXTRA_COMPILERS, FILE_EXT_REGISTRATION, FILE_EXT_REGISTRATION_CHOICES, FIND_ALL_DOCUMENTS, FIND_MATCH_CASE, FIND_NO_COMMENTS_STRINGS, FIND_NO_TEST_CASES, FIND_ONLY_SELECTION, FIND_REPLACE_FOCUS_IN_DEFPANE, FIND_RESULTS_COLOR1, FIND_RESULTS_COLOR2, FIND_RESULTS_COLOR3, FIND_RESULTS_COLOR4, FIND_RESULTS_COLOR5, FIND_RESULTS_COLOR6, FIND_RESULTS_COLOR7, FIND_RESULTS_COLOR8, FIND_RESULTS_COLORS, FIND_SEARCH_BACKWARDS, FIND_WHOLE_WORD, FIXED_INTERACTIONS_DIRECTORY, FOLLOW_FILE_DELAY, FOLLOW_FILE_LINES, FONT_DOCLIST, FONT_LINE_NUMBERS, FONT_MAIN, FONT_TOOLBAR, FORCE_TEST_SUFFIX, FULL_JAVA, FUNCTIONAL_JAVA_LEVEL, heapSizeChoices, HISTORY_MAX_SIZE, INDENT_LEVEL, INTERACTIONS_AUTO_IMPORT_CLASSES, INTERACTIONS_ERROR_COLOR, INTERACTIONS_EXIT_PROMPT, INTERACTIONS_RESET_PROMPT, INTERMEDIATE_LEVEL, JAVA_FILE_EXTENSION, JAVAC_LOCATION, JAVADOC_1_3_LINK, JAVADOC_1_3_TEXT, JAVADOC_1_4_LINK, JAVADOC_1_4_TEXT, JAVADOC_1_5_LINK, JAVADOC_1_5_TEXT, JAVADOC_1_6_LINK, JAVADOC_1_6_TEXT, JAVADOC_1_7_LINK, JAVADOC_1_7_TEXT, JAVADOC_ACCESS_LEVEL, JAVADOC_ADDITIONAL_LINKS, JAVADOC_API_REF_VERSION, JAVADOC_AUTO_TEXT, JAVADOC_CUSTOM_PARAMS, JAVADOC_DESTINATION, JAVADOC_FROM_ROOTS, JAVADOC_LINK_VERSION, JAVADOC_NONE_TEXT, JAVADOC_PROMPT_FOR_DESTINATION, JUNIT_LINK, JUNIT_LOCATION, JUNIT_LOCATION_ENABLED, KEY_ABOUT, KEY_AUTO_REFRESH_PROJECT, KEY_BACKWARD, KEY_BACKWARD_SELECT, KEY_BEGIN_DOCUMENT, KEY_BEGIN_DOCUMENT_SELECT, KEY_BEGIN_LINE, KEY_BEGIN_LINE_SELECT, KEY_BOOKMARKS_PANEL, KEY_BOOKMARKS_TOGGLE, KEY_BROWSE_BACK, KEY_BROWSE_FORWARD, KEY_CHECK_NEW_VERSION, KEY_CLEAN_PROJECT, KEY_CLEAR_CONSOLE, KEY_CLEAR_HISTORY, KEY_CLEAR_LINE, KEY_CLOSE_ALL_FILES, KEY_CLOSE_FILE, KEY_CLOSE_PROJECT, KEY_CLOSE_SYSTEM_IN, KEY_CLOSING_BRACE, KEY_COMMENT_LINES, KEY_COMPILE, KEY_COMPILE_ALL, KEY_COMPILE_PROJECT, KEY_COMPLETE_FILE, KEY_COPY, KEY_CUT, KEY_CUT_LINE, KEY_DEBUG_AUTOMATIC_TRACE, KEY_DEBUG_BREAKPOINT_PANEL, KEY_DEBUG_BREAKPOINT_TOGGLE, KEY_DEBUG_CLEAR_ALL_BREAKPOINTS, KEY_DEBUG_MODE_TOGGLE, KEY_DEBUG_RESUME, KEY_DEBUG_STEP_INTO, KEY_DEBUG_STEP_OUT, KEY_DEBUG_STEP_OVER, KEY_DELETE_NEXT, KEY_DELETE_PREVIOUS, KEY_DETACH_DEBUGGER, KEY_DETACH_TABBEDPANES, KEY_DOWN, KEY_DOWN_SELECT, KEY_DRJAVA_ERRORS, KEY_DRJAVA_SURVEY, KEY_END_DOCUMENT, KEY_END_DOCUMENT_SELECT, KEY_END_LINE, KEY_END_LINE_SELECT, KEY_EXEC_PROCESS, KEY_EXECUTE_HISTORY, KEY_EXPORT_OLD, KEY_FIND_NEXT, KEY_FIND_PREV, KEY_FIND_REPLACE, KEY_FOLLOW_FILE, KEY_FOR_UNIT_TESTS_ONLY, KEY_FORCE_QUIT, KEY_FORWARD, KEY_FORWARD_SELECT, KEY_GENERATE_CUSTOM_DRJAVA, KEY_GOTO_FILE, KEY_GOTO_FILE_UNDER_CURSOR, KEY_GOTO_LINE, KEY_HELP, KEY_JAR_PROJECT, KEY_JAVADOC_ALL, KEY_JAVADOC_CURRENT, KEY_JUNIT_PROJECT, KEY_LIFT_CURRENT_INTERACTION, KEY_LOAD_HISTORY_SCRIPT, KEY_NEW_CLASS_FILE, KEY_NEW_DRJAVA_INSTANCE, KEY_NEW_FILE, KEY_NEW_PROJECT, KEY_NEW_TEST, KEY_NEXT_DOCUMENT, KEY_NEXT_PANE, KEY_NEXT_WORD, KEY_NEXT_WORD_SELECT, KEY_OPEN_FILE, KEY_OPEN_FOLDER, KEY_OPEN_JAVADOC, KEY_OPEN_JAVADOC_UNDER_CURSOR, KEY_OPEN_PROJECT, KEY_OPENING_BRACE, KEY_PAGE_DOWN, KEY_PAGE_SETUP, KEY_PAGE_UP, KEY_PASTE, KEY_PASTE_FROM_HISTORY, KEY_PREFERENCES, KEY_PREVIOUS_DOCUMENT, KEY_PREVIOUS_PANE, KEY_PREVIOUS_WORD, KEY_PREVIOUS_WORD_SELECT, KEY_PRINT, KEY_PRINT_CONSOLE, KEY_PRINT_INTERACTIONS, KEY_PRINT_PREVIEW, KEY_PROJECT_PROPERTIES, KEY_QUICKSTART, KEY_QUIT, KEY_REDO, KEY_RENAME_FILE, KEY_RESET_INTERACTIONS, KEY_REVERT_FILE, KEY_RUN, KEY_RUN_APPLET, KEY_RUN_PROJECT, KEY_SAVE_ALL_FILES, KEY_SAVE_AS_PROJECT, KEY_SAVE_CONSOLE_COPY, KEY_SAVE_FILE, KEY_SAVE_FILE_AS, KEY_SAVE_FILE_COPY, KEY_SAVE_HISTORY, KEY_SAVE_INTERACTIONS_COPY, KEY_SAVE_PROJECT, KEY_SELECT_ALL, KEY_SHIFT_DELETE_NEXT, KEY_SHIFT_DELETE_PREVIOUS, KEY_TABBED_NEXT_REGION, KEY_TABBED_PREV_REGION, KEY_TEST, KEY_TEST_ALL, KEY_UNCOMMENT_LINES, KEY_UNDO, KEY_UP, KEY_UP_SELECT, KEY_VIEW_INTERACTIONS_CLASSPATH, LANGUAGE_LEVEL, LANGUAGE_LEVEL_EXTENSIONS, LAST_DIRECTORY, LAST_DRJAVA_SURVEY, LAST_DRJAVA_SURVEY_RESULT, LAST_INTERACTIONS_DIRECTORY, LAST_NEW_VERSION_NOTIFICATION, LIGHTWEIGHT_PARSING_ENABLED, LINEENUM_ENABLED, linkChoices, linkDeprecated, linkVersionChoices, linkVersionDeprecated, LOOK_AND_FEEL, MASK, MASTER_JVM_ARGS, MASTER_JVM_XMX, NEW_VERSION_ALLOWED, NEW_VERSION_NOTIFICATION, NEW_VERSION_NOTIFICATION_CHOICES, NEW_VERSION_NOTIFICATION_DAYS, OLD_DJ0_FILE_EXTENSION, OLD_DJ1_FILE_EXTENSION, OLD_DJ2_FILE_EXTENSION, OLD_PROJECT_FILE_EXTENSION, OPEN_FOLDER_RECURSIVE, PLASTIC_THEMES, PROJECT_FILE_EXTENSION, PROJECT_FILE_EXTENSION2, PROMPT_BEFORE_CLEAN, PROMPT_RENAME_LL_FILES, QUIT_PROMPT, RECENT_FILES, RECENT_FILES_MAX_SIZE, RECENT_PROJECTS, REMOTE_CONTROL_ENABLED, REMOTE_CONTROL_PORT, RESET_CLEAR_CONSOLE, RIGHT_MARGIN_COLOR, RIGHT_MARGIN_COLUMNS, RT_CONCJUNIT_LOCATION, RUN_WITH_ASSERT, SHOW_CODE_PREVIEW_POPUPS, SHOW_DEBUG_CONSOLE, SHOW_DEPRECATION_WARNINGS, SHOW_FALLTHROUGH_WARNINGS, SHOW_FINALLY_WARNINGS, SHOW_PATH_WARNINGS, SHOW_SERIAL_WARNINGS, SHOW_SOURCE_WHEN_SWITCHING, SHOW_UNCHECKED_WARNINGS, SLAVE_JVM_ARGS, SLAVE_JVM_XMX, SMART_RUN_FOR_APPLETS_AND_PROGRAMS, STICKY_INTERACTIONS_DIRECTORY, SYSTEM_ERR_COLOR, SYSTEM_IN_COLOR, SYSTEM_OUT_COLOR, TABS_HEIGHT, TEXT_ANTIALIAS, TEXT_FILE_EXTENSION, TOOLBAR_ENABLED, TOOLBAR_ICONS_ENABLED, TOOLBAR_TEXT_ENABLED, WARN_BREAKPOINT_OUT_OF_SYNC, WARN_CHANGE_DCP, WARN_CHANGE_INTERACTIONS, WARN_CHANGE_LAF, WARN_CHANGE_MISC, WARN_CHANGE_THEME, WARN_DEBUG_MODIFIED_FILE, WARN_IF_COMPIZ, WARN_PATH_CONTAINS_POUND, WINDOW_HEIGHT, WINDOW_STATE, WINDOW_STORE_POSITION, WINDOW_WIDTH, WINDOW_X, WINDOW_Y
 
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
ColoringView(javax.swing.text.Element elem)
          Constructs a new coloring view.
 
Method Summary
 void changedUpdate(javax.swing.event.DocumentEvent changes, java.awt.Shape a, javax.swing.text.ViewFactory f)
          Called when a change occurs.
protected  int drawSelectedText(java.awt.Graphics g, int x, int y, int start, int end)
          Draws the selected text image at the specified location.
protected  int drawUnselectedText(java.awt.Graphics g, int x, int y, int start, int end)
          Renders the given range in the model as normal unselected text.
private  void repaintContainer()
          Repaints the container associated with this view, if such container exists.
private  void setFormattingForState(java.awt.Graphics g, int state)
          Given a particular state, assign it a color.
 void updateColors()
          Called when an OptionListener perceives a change in any of the colors
 
Methods inherited from class javax.swing.text.PlainView
damageLineRange, drawLine, getLineBuffer, getPreferredSpan, getTabSize, insertUpdate, lineToRect, modelToView, nextTabStop, paint, 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

COMMENTED_COLOR

public static java.awt.Color COMMENTED_COLOR

DOUBLE_QUOTED_COLOR

public static java.awt.Color DOUBLE_QUOTED_COLOR

SINGLE_QUOTED_COLOR

public static java.awt.Color SINGLE_QUOTED_COLOR

NORMAL_COLOR

public static java.awt.Color NORMAL_COLOR

KEYWORD_COLOR

public static java.awt.Color KEYWORD_COLOR

NUMBER_COLOR

public static java.awt.Color NUMBER_COLOR

TYPE_COLOR

public static java.awt.Color TYPE_COLOR

MAIN_FONT

public static java.awt.Font MAIN_FONT

INTERACTIONS_SYSTEM_ERR_COLOR

public static java.awt.Color INTERACTIONS_SYSTEM_ERR_COLOR

INTERACTIONS_SYSTEM_IN_COLOR

public static java.awt.Color INTERACTIONS_SYSTEM_IN_COLOR

INTERACTIONS_SYSTEM_OUT_COLOR

public static java.awt.Color INTERACTIONS_SYSTEM_OUT_COLOR

ERROR_COLOR

public static java.awt.Color ERROR_COLOR

DEBUGGER_COLOR

public static java.awt.Color DEBUGGER_COLOR
Constructor Detail

ColoringView

public ColoringView(javax.swing.text.Element elem)
Constructs a new coloring view.

Parameters:
elem - the element
Method Detail

drawUnselectedText

protected int drawUnselectedText(java.awt.Graphics g,
                                 int x,
                                 int y,
                                 int start,
                                 int end)
                          throws javax.swing.text.BadLocationException
Renders the given range in the model as normal unselected text. Note that this text is all on one line. The superclass deals with breaking lines and such. So all we have to do here is draw the text on [p0,p1) in the model. We have to start drawing at (x,y), and the function returns the x coordinate when we're done.

Overrides:
drawUnselectedText in class javax.swing.text.PlainView
Parameters:
g - The graphics context
x - The starting X coordinate
y - The starting Y coordinate
start - The beginning position in the model
end - The ending position in the model
Returns:
The x coordinate at the end of the range
Throws:
javax.swing.text.BadLocationException - If the range is invalid

drawSelectedText

protected int drawSelectedText(java.awt.Graphics g,
                               int x,
                               int y,
                               int start,
                               int end)
                        throws javax.swing.text.BadLocationException
Draws the selected text image at the specified location.

Overrides:
drawSelectedText in class javax.swing.text.PlainView
Parameters:
g - The text image
x - The x coordinate for the drawn text
y - The y coordinate for the drawn text
start - The beginning position in the model
end - The end position in the model
Returns:
The location of the end of the image (range)
Throws:
javax.swing.text.BadLocationException

setFormattingForState

private void setFormattingForState(java.awt.Graphics g,
                                   int state)
Given a particular state, assign it a color.

Parameters:
g - Graphics object
state - a given state

repaintContainer

private void repaintContainer()
Repaints the container associated with this view, if such container exists.


changedUpdate

public void changedUpdate(javax.swing.event.DocumentEvent changes,
                          java.awt.Shape a,
                          javax.swing.text.ViewFactory f)
Called when a change occurs.

Overrides:
changedUpdate in class javax.swing.text.PlainView
Parameters:
changes - document changes
a - a Shape
f - a ViewFactory

updateColors

public void updateColors()
Called when an OptionListener perceives a change in any of the colors