Commit abaea23
rcartwright
This revision is yet another chapter in the continued refactoring of
the synchronization protocol for the interactions pane. Some
intermittent unit testing failures on Windows promppted me to rexamine
the code for upating the caret. I realized that the documentation
mutation forcing the caret update needs to be performed in the event
thread (not jut the caret update portion of the operation), to make
the document revision + caret updating into a single atomic operation.
After I made this change, I discovered that the caret was being
advanced double the distance that my code explicitly directed. When
I tracked down the reason, I was humbled because the AbstractDocument
framework already includes code that moves the cursor when text is
inserted in front fo it. The cursor is bound to a Position, not an
offset. This caret update was invisible/garbled in earlier editions of the code
because the corresponding document update was not properly synchronized
(it must execute in the event thread because the caret position determines
the meaning of other asynchronous events (e.g. keyboard input) being handled
by the event thread.
This commit also attempts to address some other problems that showed up
during extensive Windows testing. Since the tests perform many operations
outside the event thread that are performed in the event thread in normal
DrJav execution, additional synchronization is required between these
operations and subsequent operations that inspect their effects. In particular,
Utilities.clearEventQueue() has to be inserted after such operations to make
sure that event thread tasks spawned by the externally executed operations
complete before other operation query their effects. In some cases, mutliple
consecutive calls to Utilities.clearEventQueue may be required because a
spawned event thread task can spawn its own even thread tasks (using
SwingUtilities.invokeLater).
In Windows testing, here is still an intermittent problem with what I believe
is JVM bug 6612928. The bug spews repeated instances of
java.util.concurrent.RejectedExecutionException during JVM shutdown. Since
the problem occurs during shutdown after testing has finished JUnit does not
classify the exceptions as test failures but prints the tracebacks, which are
nearly useless because they do not reach back to DrJava code.
The following files were modified:
M testFiles/drjava.basic.config
M src/edu/rice/cs/drjava/DrJavaTestCase.java
M src/edu/rice/cs/drjava/DrJava.java
M src/edu/rice/cs/drjava/model/GlobalModelIOTest.java
M src/edu/rice/cs/drjava/model/GlobalModelTestCase.java
M src/edu/rice/cs/drjava/model/DefaultGlobalModel.java
M src/edu/rice/cs/drjava/model/definitions/indent/Indenter.java
M src/edu/rice/cs/drjava/model/definitions/indent/IndentRulesTestCase.java
M src/edu/rice/cs/drjava/model/definitions/ColoringGlyphPainter.java
M src/edu/rice/cs/drjava/model/definitions/IndentHelperTest.java
M src/edu/rice/cs/drjava/model/repl/InteractionsScriptModel.java
M src/edu/rice/cs/drjava/model/repl/InteractionsDJDocumentTest.java
M src/edu/rice/cs/drjava/model/repl/InteractionsModelTest.java
M src/edu/rice/cs/drjava/model/repl/InteractionsModel.java
M src/edu/rice/cs/drjava/model/repl/newjvm/MainJVM.java
M src/edu/rice/cs/drjava/model/repl/RMIInteractionsModel.java
M src/edu/rice/cs/drjava/model/repl/SimpleInteractionsModel.java
M src/edu/rice/cs/drjava/model/AbstractGlobalModel.java
M src/edu/rice/cs/drjava/config/Configuration.java
M src/edu/rice/cs/drjava/config/FileConfiguration.java
M src/edu/rice/cs/drjava/config/ConfigOptionListeners.java
M src/edu/rice/cs/drjava/config/OptionMapLoader.java
M src/edu/rice/cs/drjava/ui/InteractionsPane.java
M src/edu/rice/cs/drjava/ui/KeyBindingManager.java
M src/edu/rice/cs/drjava/ui/NewVersionPopup.java
M src/edu/rice/cs/drjava/ui/config/LabelComponent.java
M src/edu/rice/cs/drjava/ui/config/IntegerOptionComponent.java
M src/edu/rice/cs/drjava/ui/config/IntegerOptionComponentTest.java
M src/edu/rice/cs/drjava/ui/config/VectorOptionComponent.java
M src/edu/rice/cs/drjava/ui/config/VectorFileOptionComponentTest.java
M src/edu/rice/cs/drjava/ui/config/ToolbarOptionComponent.java
M src/edu/rice/cs/drjava/ui/config/ConfigFrame.java
M src/edu/rice/cs/drjava/ui/config/DirectoryOptionComponent.java
M src/edu/rice/cs/drjava/ui/config/StringOptionComponent.java
M src/edu/rice/cs/drjava/ui/config/FontOptionComponent.java
M src/edu/rice/cs/drjava/ui/config/FontOptionComponentTest.java
M src/edu/rice/cs/drjava/ui/config/ConfigPanel.java
M src/edu/rice/cs/drjava/ui/config/ForcedChoiceOptionComponentTest.java
M src/edu/rice/cs/drjava/ui/config/ForcedChoiceOptionComponent.java
M src/edu/rice/cs/drjava/ui/config/ColorOptionComponentTest.java
M src/edu/rice/cs/drjava/ui/config/ColorOptionComponent.java
M src/edu/rice/cs/drjava/ui/config/FileOptionComponentTest.java
M src/edu/rice/cs/drjava/ui/config/FileOptionComponent.java
M src/edu/rice/cs/drjava/ui/config/BooleanOptionComponentTest.java
M src/edu/rice/cs/drjava/ui/config/BooleanOptionComponent.java
M src/edu/rice/cs/drjava/ui/config/OptionComponent.java
M src/edu/rice/cs/drjava/ui/config/KeyStrokeOptionComponent.java
M src/edu/rice/cs/drjava/ui/config/KeyStrokeOptionComponentTest.java
M src/edu/rice/cs/drjava/ui/config/ButtonComponent.java
M src/edu/rice/cs/drjava/ui/AbstractDJPane.java
M src/edu/rice/cs/drjava/ui/ProjectMenuTest.java
M src/edu/rice/cs/drjava/ui/InteractionsPaneTest.java
M src/edu/rice/cs/drjava/ui/InteractionsScriptController.java
M src/edu/rice/cs/drjava/ui/InteractionsController.java
M src/edu/rice/cs/util/text/ConsoleDocument.java
M src/edu/rice/cs/util/swing/FileSelectorComponent.java
git-svn-id: file:///tmp/test-svn/trunk@4498 fe72c1cf-3628-48e9-8b72-1c46755d3cff1 parent e753017 commit abaea23
File tree
56 files changed
+1667
-1734
lines changed- drjava
- src/edu/rice/cs
- drjava
- config
- model
- definitions
- indent
- repl
- newjvm
- ui
- config
- util
- swing
- text
- testFiles
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
56 files changed
+1667
-1734
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
378 | 378 | | |
379 | 379 | | |
380 | 380 | | |
381 | | - | |
| 381 | + | |
382 | 382 | | |
383 | 383 | | |
384 | 384 | | |
| |||
457 | 457 | | |
458 | 458 | | |
459 | 459 | | |
460 | | - | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
461 | 470 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
62 | | - | |
| 62 | + | |
63 | 63 | | |
64 | 64 | | |
| 65 | + | |
65 | 66 | | |
| 67 | + | |
66 | 68 | | |
| 69 | + | |
67 | 70 | | |
| 71 | + | |
68 | 72 | | |
69 | 73 | | |
70 | 74 | | |
71 | | - | |
| 75 | + | |
| 76 | + | |
72 | 77 | | |
73 | 78 | | |
74 | | - | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
75 | 83 | | |
0 commit comments