edu.rice.cs.drjava.model
Class DefaultGlobalModel

java.lang.Object
  extended by edu.rice.cs.drjava.model.AbstractGlobalModel
      extended by edu.rice.cs.drjava.model.DefaultGlobalModel
All Implemented Interfaces:
OptionConstants, GlobalModel, ILoadDocuments, SingleDisplayModel, DocumentIterator
Direct Known Subclasses:
DocumentCacheTest.TestGlobalModel, GlobalModelTestCase.TestGlobalModel

public class DefaultGlobalModel
extends AbstractGlobalModel

Handles the bulk of DrJava's program logic. The UI components interface with the GlobalModel through its public methods, and the GlobalModel responds via the GlobalModelListener interface. This removes the dependency on the UI for the logical flow of the program's features. With the current implementation, we can finally test the compile functionality of DrJava, along with many other things.

Version:
$Id: DefaultGlobalModel.java 5436 2011-08-02 06:58:19Z mgricken $

Nested Class Summary
(package private)  class DefaultGlobalModel.ConcreteOpenDefDoc
          Inner class to handle operations on each of the open DefinitionsDocuments by the GlobalModel.
private static class DefaultGlobalModel.LibraryKey
           
 
Nested classes/interfaces inherited from class edu.rice.cs.drjava.model.AbstractGlobalModel
AbstractGlobalModel.FlatFileGroupingState, AbstractGlobalModel.ProjectFileGroupingState
 
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
private  CompilerListener _clearInteractionsListener
           
private  CompilerModel _compilerModel
          CompilerModel manages all compiler functionality.
private  Debugger _debugger
          Interface to the integrated debugger.
protected  InteractionsDJDocument _interactionsDocument
          The document used in the Interactions model.
protected  InteractionsListener _interactionsListener
          Core listener attached to interactions model
protected  DefaultInteractionsModel _interactionsModel
          Interface between the InteractionsDocument and the JavaInterpreter, which runs in a separate JVM.
protected  JavadocModel _javadocModel
          Manages all Javadoc functionality.
private  DefaultJUnitModel _junitModel
          JUnitModel manages all JUnit functionality.
(package private)  MainJVM _jvm
          RMI interface to the Interactions JVM.
private  java.lang.Thread _jvmStarter
           
private  int _numCompErrors
          Number of errors in last compilation.
private  boolean _resetAfterCompile
          Whether or not to reset the interactions JVM after compiling.
 
Fields inherited from class edu.rice.cs.drjava.model.AbstractGlobalModel
_bookmarkManager, _breakpointManager, _browserHistoryManager, _cache, _consoleDoc, _consoleDocAdapter, _documentNavigator, _editorKit, _findResultsManagers, _log, _notifier, _pageFormat, _state, CLASSPATH_OUT_OF_SYNC_MSG, DOCUMENT_OUT_OF_SYNC_MSG, LISTENERS_TO_REMOVE, STORED_PREFERENCES_LISTENER
 
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
 
Constructor Summary
DefaultGlobalModel()
          Constructs a new GlobalModel.
 
Method Summary
protected  DefaultGlobalModel.ConcreteOpenDefDoc _createOpenDefinitionsDocument(java.io.File f)
          Creates a ConcreteOpenDefDoc for a given file f
protected  DefaultGlobalModel.ConcreteOpenDefDoc _createOpenDefinitionsDocument(NullFile f)
          Creates a ConcreteOpenDefDoc for a new DefinitionsDocument.
private  void _setupDebugger()
           
protected  void addDocToClassPath(OpenDefinitionsDocument doc)
          Adds the source root for doc to the interactions classpath; this function is a helper to _openFiles.
 void clearHistory()
          Clears the interactions history
private static JavaVersion.FullVersion coarsenVersion(JavaVersion.FullVersion tVersion)
           
 void dispose()
          Prepares this model to be thrown away.
 void disposeExternalResources()
          Disposes of external resources.
 void ensureJVMStarterFinished()
          Ensures that the _jvmStarter thread has executed.
private  java.lang.Iterable<JDKToolsLibrary> findLibraries()
           
 java.lang.Iterable<java.io.File> getClassPath()
          Get the class path to be used in all class-related operations.
 CompilerModel getCompilerModel()
          Gets the CompilerModel, which provides all methods relating to compilers.
 Debugger getDebugger()
          Gets the Debugger used by DrJava.
 int getDebugPort()
          Returns an available port number to use for debugging the interactions JVM.
 java.lang.String getHistoryAsString()
          Returns the entire history as a String.
 java.lang.String getHistoryAsStringWithSemicolons()
          Returns the entire history as a String with semicolons as needed.
 java.lang.Iterable<java.io.File> getInteractionsClassPath()
          Returns the current class path in use by the Interpreter JVM.
 InteractionsDocument getInteractionsDocument()
          throws UnsupportedOperationException
 DefaultInteractionsModel getInteractionsModel()
          throws UnsupportedOperationException
 JavadocModel getJavadocModel()
          Gets the JavadocModel, which provides all methods relating to Javadoc.
 JUnitModel getJUnitModel()
          Gets the JUnitModel, which provides all methods relating to JUnit testing.
private  DefaultGlobalModel.LibraryKey getLibraryKey(int priority, JDKToolsLibrary lib)
           
 int getNumCompErrors()
          throws UnsupportedOperationException
 InteractionsDJDocument getSwingInteractionsDocument()
          throws UnsupportedOperationException
 void interpretCurrentInteraction()
          Interprets the current given text at the prompt in the interactions pane.
 void loadHistory(FileOpenSelector selector)
          Interprets file selected in the FileOpenSelector.
 InteractionsScriptModel loadHistoryAsScript(FileOpenSelector selector)
          Loads the history/histories from the given selector.
 void printDebugMessage(java.lang.String s)
          Called when the debugger wants to print a message.
 void resetInteractions(java.io.File wd)
          A degenerate operation since this has no slave JVM and no interactions model.
 void resetInteractions(java.io.File wd, boolean forceReset)
          Clears and resets the slave JVM with working directory wd.
 void resetInteractionsClassPath()
          Adds the project root (if a project is open), the source roots for other open documents, the paths in the "extra classpath" config option, as well as any project-specific classpaths to the interpreter's classpath.
 void saveConsoleCopy(ConsoleDocument doc, FileSaveSelector selector)
          Saves the unedited version of the current history to a file
 void saveHistory(FileSaveSelector selector)
          Saves the unedited version of the current history to a file
 void saveHistory(FileSaveSelector selector, java.lang.String editedVersion)
          Saves the edited version of the current history to a file
 void setBuildDirectory(java.io.File f)
          Sets the build directory for a project.
 void setNumCompErrors(int num)
          throws UnsupportedOperationException
(package private)  void setResetAfterCompile(boolean shouldReset)
          Sets whether or not the Interactions JVM will be reset after a compilation succeeds.
 
Methods inherited from class edu.rice.cs.drjava.model.AbstractGlobalModel
_docAppend, _getOpenDocument, _makeProjectProfile, _openFile, _toggleBookmark, aboutToSaveFromSaveAll, addAuxiliaryFile, addDocToNavigator, addListener, addNewListeners, addToBrowserHistory, addToBrowserHistory, autoRefreshProject, cleanBuildDirectory, closeAllFiles, closeAllFilesOnQuit, closeFile, closeFileHelper, closeFiles, closeFileWithoutPrompt, closeProject, configNewProject, createFindResultsManager, createNewProject, exportOldProject, findFileInPaths, fixPathForNavigator, forceQuit, getActiveDocument, getAutoRefreshStatus, getAuxiliaryBinTitle, getAuxiliaryDocuments, getBookmarkManager, getBreakpointManager, getBrowserHistoryManager, getBuildDirectory, getClassFiles, getConsoleDocument, getCreateJarFile, getCreateJarFlags, getCustomManifest, getDocCollectionWidget, getDocumentCache, getDocumentCount, getDocumentForFile, getDocumentIterator, getDocumentNavigator, getEditorKit, getExclFiles, getExternalBinTitle, getExtraClassPath, getFilesInFolder, getFindResultsManagers, getLLOpenDefinitionsDocuments, getMainClass, getMainClassContainingFile, getMasterWorkingDirectory, getNewFilesInProject, getNextDocument, getNextDocument, getNonProjectDocuments, getNotifier, getODDForDocument, getOpenAllFilesInFolderExtension, getOpenDefinitionsDocuments, getOutOfSyncDocuments, getOutOfSyncDocuments, getPackageName, getPageFormat, getPreferencesStoredInProject, getPrevDocument, getProjectDocuments, getProjectFile, getProjectFiles, getProjectRoot, getSortedOpenDefinitionsDocuments, getSourceBinTitle, getSourceFile, getSourceRootSet, getSwingConsoleDocument, getWorkingDirectory, hasModifiedDocuments, hasModifiedDocuments, hasOutOfSyncDocuments, hasOutOfSyncDocuments, hasUntitledDocuments, inProject, inProjectPath, installActiveDocument, isAlreadyOpen, isClassPathChanged, isProjectActive, isProjectChanged, isUntitled, makeFlatFileGroupingState, makeProjectFileGroupingState, newFile, newFile, newFile, newFile, newTestCase, openFile, openFileHelper, openFiles, openFilesHelper, openFolder, openNewFilesInProject, openProject, pop, quit, refreshActiveDocument, reloadProject, removeAuxiliaryFile, removeFindResultsManager, removeListener, removePreviousListeners, resetConsole, saveAllFiles, saveAllFilesHelper, saveProject, setActiveDocument, setActiveFirstDocument, setActiveNextDocument, setActivePreviousDocument, setAutoRefreshStatus, setClassPathChanged, setCreateJarFile, setCreateJarFlags, setCustomManifest, setDefinitionsIndent, setDocumentNavigator, setExcludedFiles, setExtraClassPath, setFileGroupingState, setMainClass, setPageFormat, setPreferencesStoredInProject, setProjectChanged, setProjectFile, setProjectRoot, setWorkingDirectory, systemErrPrint, systemInEcho, systemOutPrint, toggleBookmark, updateSyntaxHighlighting
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_interactionsDocument

protected final InteractionsDJDocument _interactionsDocument
The document used in the Interactions model.


_jvm

final MainJVM _jvm
RMI interface to the Interactions JVM.


_jvmStarter

private final java.lang.Thread _jvmStarter

_interactionsModel

protected final DefaultInteractionsModel _interactionsModel
Interface between the InteractionsDocument and the JavaInterpreter, which runs in a separate JVM.


_interactionsListener

protected InteractionsListener _interactionsListener
Core listener attached to interactions model


_clearInteractionsListener

private CompilerListener _clearInteractionsListener

_compilerModel

private final CompilerModel _compilerModel
CompilerModel manages all compiler functionality.


_resetAfterCompile

private volatile boolean _resetAfterCompile
Whether or not to reset the interactions JVM after compiling. Should only be false in test cases.


_numCompErrors

private volatile int _numCompErrors
Number of errors in last compilation. compilerModel._numErrors is trashed when the compile model is reset.


_junitModel

private final DefaultJUnitModel _junitModel
JUnitModel manages all JUnit functionality.


_javadocModel

protected volatile JavadocModel _javadocModel
Manages all Javadoc functionality.


_debugger

private volatile Debugger _debugger
Interface to the integrated debugger. If unavailable, set NoDebuggerAvailable.ONLY.

Constructor Detail

DefaultGlobalModel

public DefaultGlobalModel()
Constructs a new GlobalModel. Creates a new MainJVM and starts its Interpreter JVM.

Method Detail

coarsenVersion

private static JavaVersion.FullVersion coarsenVersion(JavaVersion.FullVersion tVersion)

getLibraryKey

private DefaultGlobalModel.LibraryKey getLibraryKey(int priority,
                                                    JDKToolsLibrary lib)

findLibraries

private java.lang.Iterable<JDKToolsLibrary> findLibraries()

setBuildDirectory

public void setBuildDirectory(java.io.File f)
Sets the build directory for a project.

Specified by:
setBuildDirectory in interface GlobalModel
Overrides:
setBuildDirectory in class AbstractGlobalModel

getInteractionsModel

public DefaultInteractionsModel getInteractionsModel()
Description copied from class: AbstractGlobalModel
throws UnsupportedOperationException

Specified by:
getInteractionsModel in interface GlobalModel
Overrides:
getInteractionsModel in class AbstractGlobalModel
Returns:
the interactions model.

getSwingInteractionsDocument

public InteractionsDJDocument getSwingInteractionsDocument()
Description copied from class: AbstractGlobalModel
throws UnsupportedOperationException

Specified by:
getSwingInteractionsDocument in interface GlobalModel
Overrides:
getSwingInteractionsDocument in class AbstractGlobalModel
Returns:
InteractionsDJDocument in use by the InteractionsDocument.

getInteractionsDocument

public InteractionsDocument getInteractionsDocument()
Description copied from class: AbstractGlobalModel
throws UnsupportedOperationException

Specified by:
getInteractionsDocument in interface GlobalModel
Overrides:
getInteractionsDocument in class AbstractGlobalModel

getCompilerModel

public CompilerModel getCompilerModel()
Gets the CompilerModel, which provides all methods relating to compilers.

Specified by:
getCompilerModel in interface GlobalModel
Overrides:
getCompilerModel in class AbstractGlobalModel

getJUnitModel

public JUnitModel getJUnitModel()
Gets the JUnitModel, which provides all methods relating to JUnit testing.

Specified by:
getJUnitModel in interface GlobalModel
Overrides:
getJUnitModel in class AbstractGlobalModel

getJavadocModel

public JavadocModel getJavadocModel()
Gets the JavadocModel, which provides all methods relating to Javadoc.

Specified by:
getJavadocModel in interface GlobalModel
Overrides:
getJavadocModel in class AbstractGlobalModel

getNumCompErrors

public int getNumCompErrors()
Description copied from class: AbstractGlobalModel
throws UnsupportedOperationException

Specified by:
getNumCompErrors in interface GlobalModel
Overrides:
getNumCompErrors in class AbstractGlobalModel

setNumCompErrors

public void setNumCompErrors(int num)
Description copied from class: AbstractGlobalModel
throws UnsupportedOperationException

Specified by:
setNumCompErrors in interface GlobalModel
Overrides:
setNumCompErrors in class AbstractGlobalModel

dispose

public void dispose()
Prepares this model to be thrown away. Never called in practice outside of quit(), except in tests.

Specified by:
dispose in interface SingleDisplayModel
Overrides:
dispose in class AbstractGlobalModel

ensureJVMStarterFinished

public void ensureJVMStarterFinished()
Ensures that the _jvmStarter thread has executed. Never called in practice outside of GlobalModelTestCase.setUp().

Specified by:
ensureJVMStarterFinished in interface SingleDisplayModel
Overrides:
ensureJVMStarterFinished in class AbstractGlobalModel

disposeExternalResources

public void disposeExternalResources()
Disposes of external resources. Kills the slave JVM.

Specified by:
disposeExternalResources in interface SingleDisplayModel
Overrides:
disposeExternalResources in class AbstractGlobalModel

resetInteractions

public void resetInteractions(java.io.File wd)
Description copied from class: AbstractGlobalModel
A degenerate operation since this has no slave JVM and no interactions model.

Specified by:
resetInteractions in interface GlobalModel
Overrides:
resetInteractions in class AbstractGlobalModel

resetInteractions

public void resetInteractions(java.io.File wd,
                              boolean forceReset)
Clears and resets the slave JVM with working directory wd. Also clears the console if the option is indicated (on by default). The reset operation is suppressed if the existing slave JVM has not been used, wd matches its working directory, and forceReset is false. wd may be null if a valid directory cannot be determined. In that case, the former working directory is used. This method may run outside the event thread.

Specified by:
resetInteractions in interface GlobalModel
Overrides:
resetInteractions in class AbstractGlobalModel

interpretCurrentInteraction

public void interpretCurrentInteraction()
Interprets the current given text at the prompt in the interactions pane.

Specified by:
interpretCurrentInteraction in interface GlobalModel
Overrides:
interpretCurrentInteraction in class AbstractGlobalModel

loadHistory

public void loadHistory(FileOpenSelector selector)
Interprets file selected in the FileOpenSelector. Assumes strings have no trailing whitespace. Interpretation is aborted after the first error.

Specified by:
loadHistory in interface GlobalModel
Overrides:
loadHistory in class AbstractGlobalModel

loadHistoryAsScript

public InteractionsScriptModel loadHistoryAsScript(FileOpenSelector selector)
                                            throws java.io.IOException,
                                                   OperationCanceledException
Loads the history/histories from the given selector.

Specified by:
loadHistoryAsScript in interface GlobalModel
Overrides:
loadHistoryAsScript in class AbstractGlobalModel
Throws:
java.io.IOException
OperationCanceledException

clearHistory

public void clearHistory()
Clears the interactions history

Specified by:
clearHistory in interface GlobalModel
Overrides:
clearHistory in class AbstractGlobalModel

saveHistory

public void saveHistory(FileSaveSelector selector)
                 throws java.io.IOException
Saves the unedited version of the current history to a file

Specified by:
saveHistory in interface GlobalModel
Overrides:
saveHistory in class AbstractGlobalModel
Parameters:
selector - File to save to
Throws:
java.io.IOException

saveConsoleCopy

public void saveConsoleCopy(ConsoleDocument doc,
                            FileSaveSelector selector)
                     throws java.io.IOException
Saves the unedited version of the current history to a file

Specified by:
saveConsoleCopy in interface GlobalModel
Overrides:
saveConsoleCopy in class AbstractGlobalModel
Parameters:
doc - Document to save
selector - File to save to
Throws:
java.io.IOException

saveHistory

public void saveHistory(FileSaveSelector selector,
                        java.lang.String editedVersion)
                 throws java.io.IOException
Saves the edited version of the current history to a file

Specified by:
saveHistory in interface GlobalModel
Overrides:
saveHistory in class AbstractGlobalModel
Parameters:
selector - File to save to
editedVersion - Edited verison of the history which will be saved to file instead of the lines saved in the history. The saved file will still include any tags needed to recognize it as a history file.
Throws:
java.io.IOException

getHistoryAsStringWithSemicolons

public java.lang.String getHistoryAsStringWithSemicolons()
Returns the entire history as a String with semicolons as needed.

Specified by:
getHistoryAsStringWithSemicolons in interface GlobalModel
Overrides:
getHistoryAsStringWithSemicolons in class AbstractGlobalModel

getHistoryAsString

public java.lang.String getHistoryAsString()
Returns the entire history as a String.

Specified by:
getHistoryAsString in interface GlobalModel
Overrides:
getHistoryAsString in class AbstractGlobalModel

printDebugMessage

public void printDebugMessage(java.lang.String s)
Called when the debugger wants to print a message. Inserts a newline.

Specified by:
printDebugMessage in interface GlobalModel
Overrides:
printDebugMessage in class AbstractGlobalModel

getInteractionsClassPath

public java.lang.Iterable<java.io.File> getInteractionsClassPath()
Returns the current class path in use by the Interpreter JVM.

Specified by:
getInteractionsClassPath in interface GlobalModel
Overrides:
getInteractionsClassPath in class AbstractGlobalModel

setResetAfterCompile

void setResetAfterCompile(boolean shouldReset)
Sets whether or not the Interactions JVM will be reset after a compilation succeeds. This should ONLY be used in tests! This method is not supported by AbstractGlobalModel.

Parameters:
shouldReset - Whether to reset after compiling

getDebugger

public Debugger getDebugger()
Gets the Debugger used by DrJava.

Specified by:
getDebugger in interface GlobalModel
Overrides:
getDebugger in class AbstractGlobalModel

getDebugPort

public int getDebugPort()
                 throws java.io.IOException
Returns an available port number to use for debugging the interactions JVM.

Specified by:
getDebugPort in interface GlobalModel
Overrides:
getDebugPort in class AbstractGlobalModel
Throws:
java.io.IOException - if unable to get a valid port number.

_createOpenDefinitionsDocument

protected DefaultGlobalModel.ConcreteOpenDefDoc _createOpenDefinitionsDocument(NullFile f)
Creates a ConcreteOpenDefDoc for a new DefinitionsDocument.

Overrides:
_createOpenDefinitionsDocument in class AbstractGlobalModel
Returns:
OpenDefinitionsDocument object for a new document

_createOpenDefinitionsDocument

protected DefaultGlobalModel.ConcreteOpenDefDoc _createOpenDefinitionsDocument(java.io.File f)
                                                                        throws java.io.IOException
Creates a ConcreteOpenDefDoc for a given file f

Overrides:
_createOpenDefinitionsDocument in class AbstractGlobalModel
Returns:
OpenDefinitionsDocument object for f
Throws:
java.io.FileNotFoundException - if file f does not exist
java.io.IOException

addDocToClassPath

protected void addDocToClassPath(OpenDefinitionsDocument doc)
Adds the source root for doc to the interactions classpath; this function is a helper to _openFiles.

Overrides:
addDocToClassPath in class AbstractGlobalModel
Parameters:
doc - the document to add to the classpath

_setupDebugger

private void _setupDebugger()

getClassPath

public java.lang.Iterable<java.io.File> getClassPath()
Get the class path to be used in all class-related operations. TODO: Ensure that this is used wherever appropriate.

Specified by:
getClassPath in interface GlobalModel
Overrides:
getClassPath in class AbstractGlobalModel

resetInteractionsClassPath

public void resetInteractionsClassPath()
Adds the project root (if a project is open), the source roots for other open documents, the paths in the "extra classpath" config option, as well as any project-specific classpaths to the interpreter's classpath. This method is called in DefaultInteractionsModel when the interpreter becomes ready. Runs outside the event thread.