Skip to content

Commit 4e9024f

Browse files
author
rcartwright
committed
Revised project file format to include a project root.
Converted DirectorySelector to an extension of JFileChooser, fixing bugs in "NewFolder" functionality. Fixed find/replace centering bug (selection was not centered when searching all documents if found on a different document). Revised the locking structure of IntegratedMasterSlaveTest. git-svn-id: file:///tmp/test-svn/trunk@3592 fe72c1cf-3628-48e9-8b72-1c46755d3cff
1 parent 25b42c6 commit 4e9024f

74 files changed

Lines changed: 1031 additions & 2608 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

drjava/src/edu/rice/cs/drjava/DrJavaRoot.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import javax.swing.UIManager;
4444
import javax.swing.*;
4545

46+
import edu.rice.cs.util.FileOpenSelector;
4647
import edu.rice.cs.util.UnexpectedException;
4748
import edu.rice.cs.util.OutputStreamRedirector;
4849
import edu.rice.cs.util.newjvm.ExecJVM;
@@ -97,7 +98,7 @@ public class DrJavaRoot {
9798

9899
public static void main(String[] _filesToOpen) {
99100

100-
// Utilities.showDebug("DrJavaRoot started with _filesToOpen = " + Arrays.toString(_filesToOpen));
101+
// Utilities.show("DrJavaRoot started with _filesToOpen = " + Arrays.toString(_filesToOpen));
101102

102103
boolean _showDebugConsole = false;
103104
int len = _filesToOpen.length;

drjava/src/edu/rice/cs/drjava/model/AbstractDJDocument.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import edu.rice.cs.drjava.config.OptionEvent;
3939
import edu.rice.cs.drjava.config.OptionListener;
4040
import edu.rice.cs.util.text.SwingDocument;
41+
import edu.rice.cs.util.OperationCanceledException;
4142
import edu.rice.cs.util.UnexpectedException;
4243
import edu.rice.cs.drjava.model.definitions.DefinitionsDocument;
4344
import edu.rice.cs.drjava.model.definitions.indent.Indenter;

drjava/src/edu/rice/cs/drjava/model/AbstractGlobalModel.java

Lines changed: 101 additions & 63 deletions
Large diffs are not rendered by default.

drjava/src/edu/rice/cs/drjava/model/DJDocument.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535

3636
import edu.rice.cs.drjava.model.definitions.reducedmodel.*;
3737
import edu.rice.cs.util.text.AbstractDocumentInterface;
38+
import edu.rice.cs.util.OperationCanceledException;
3839

3940

4041
import java.util.Vector;

drjava/src/edu/rice/cs/drjava/model/DefaultGlobalModel.java

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,10 @@
5050
import javax.swing.SwingUtilities;
5151

5252
import edu.rice.cs.util.ClassPathVector;
53+
import edu.rice.cs.util.FileOpenSelector;
54+
import edu.rice.cs.drjava.model.FileSaveSelector;
5355
import edu.rice.cs.util.FileOps;
56+
import edu.rice.cs.util.OperationCanceledException;
5457
import edu.rice.cs.util.UnexpectedException;
5558
import edu.rice.cs.util.text.EditDocumentException;
5659
import edu.rice.cs.util.swing.Utilities;
@@ -124,13 +127,15 @@ public void interpreterReady(File wd) {
124127
}
125128
}
126129

127-
public void interpreterResetFailed(Throwable t) { }
130+
public void interpreterResetFailed(Throwable t) { }
128131

129-
public void interpreterExited(int status) { }
132+
public void interpreterExited(int status) { }
130133

131-
public void interpreterChanged(boolean inProgress) { }
134+
public void interpreterChanged(boolean inProgress) { }
132135

133-
public void interactionIncomplete() { }
136+
public void interactionIncomplete() { }
137+
138+
public void slaveJVMUsed() { }
134139
};
135140

136141
private CompilerListener _clearInteractionsListener =
@@ -176,7 +181,9 @@ public void saveUntitled() { }
176181
/** Constructs a new GlobalModel. Creates a new MainJVM and starts its Interpreter JVM. */
177182
public DefaultGlobalModel() {
178183
super();
184+
// Utilities.show("DefaultGlobalModel super call performed");
179185
_interactionsDocument = new InteractionsDJDocument();
186+
180187
_interactionsModel = new DefaultInteractionsModel(this, _jvm, _interactionsDocument, getWorkingDirectory());
181188
_interactionsModel.addListener(_interactionsListener);
182189
_jvm.setInteractionsModel(_interactionsModel);
@@ -188,14 +195,16 @@ public void optionChanged(OptionEvent<String> oe) {
188195
_jvm.setOptionArgs(oe.value);
189196
}
190197
});
191-
198+
192199
_createDebugger();
193200

194201
// Chain notifiers so that all events also go to GlobalModelListeners.
195202
_interactionsModel.addListener(_notifier);
196203
_compilerModel.addListener(_notifier);
197204
_junitModel.addListener(_notifier);
198205
_javadocModel.addListener(_notifier);
206+
207+
// Utilities.show("Notifier chaining done");
199208

200209
// Listen to compiler to clear interactions appropriately.
201210
// XXX: The tests need this to be registered after _notifier, sadly.
@@ -236,21 +245,21 @@ public void setBuildDirectory(File f) {
236245
}
237246

238247
protected FileGroupingState
239-
makeProjectFileGroupingState(File main, File bd, File wd, File project, File[] files, ClassPathVector cp, File cjf, int cjflags) {
240-
return new ProjectFileGroupingState(main, bd, wd, project, files, cp, cjf, cjflags);
248+
makeProjectFileGroupingState(File pr, File main, File bd, File wd, File project, File[] files, ClassPathVector cp, File cjf, int cjflags) {
249+
return new ProjectFileGroupingState(pr, main, bd, wd, project, files, cp, cjf, cjflags);
241250
}
242251

243252
class ProjectFileGroupingState extends AbstractGlobalModel.ProjectFileGroupingState {
244253

245-
ProjectFileGroupingState(File main, File bd, File wd, File project, File[] files, ClassPathVector cp, File cjf, int cjflags) {
246-
super(main, bd, wd, project, files, cp, cjf, cjflags);
254+
ProjectFileGroupingState(File pr, File main, File bd, File wd, File project, File[] files, ClassPathVector cp, File cjf, int cjflags) {
255+
super(pr, main, bd, wd, project, files, cp, cjf, cjflags);
247256
}
248257

249258
// ----- FIND ALL DEFINED CLASSES IN FOLDER ---
250259
public void compileAll() throws IOException{
251260
// ScrollableDialog sd = new ScrollableDialog(null, "FileGroupingState.compileAll() called", "", "");
252261
// sd.show();
253-
File dir = getProjectFile().getParentFile();
262+
File dir = getProjectRoot();
254263
final ArrayList<File> files = FileOps.getFilesInDir(dir, true, new FileFilter() {
255264
public boolean accept(File pathname) {
256265
return pathname.isDirectory() ||
@@ -316,7 +325,7 @@ public boolean accept(File pathname) {
316325
public void junitAll() {
317326
// Is this code reachable? I don't think so. MainFrame bypasses it by calling junitProject() on the junit model
318327
// instead of junitAll on the global model
319-
File dir = getProjectFile().getParentFile();
328+
File dir = getProjectRoot();
320329
// ArrayList<String> classNames = new ArrayList<String>();
321330
final ArrayList<File> files = FileOps.getFilesInDir(dir, true, new FileFilter() {
322331
public boolean accept(File pathname) {
@@ -448,7 +457,7 @@ public void resetInteractions(File wd) {
448457
if (! _jvm.slaveJVMUsed() && wd.equals(_interactionsModel.getWorkingDirectory())) {
449458
// eliminate resetting interpreter (slaveJVM) since it has already been reset appropriately.
450459
// Utilities.show("Suppressing resetting of interactions pane");
451-
_interactionsModel.notifyInterpreterReady(wd);
460+
_interactionsModel._notifyInterpreterReady(wd);
452461
return;
453462
}
454463
// Utilities.show("Resetting interactions with working directory = " + wd);

drjava/src/edu/rice/cs/drjava/model/DefaultJavadocModel.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@
4343

4444
import edu.rice.cs.util.FileOps;
4545
import edu.rice.cs.util.ArgumentTokenizer;
46+
import edu.rice.cs.util.DirectorySelector;
47+
import edu.rice.cs.util.FileOpenSelector;
48+
import edu.rice.cs.drjava.model.FileSaveSelector;
49+
import edu.rice.cs.util.OperationCanceledException;
4650
import edu.rice.cs.util.newjvm.ExecJVM;
4751
import edu.rice.cs.drjava.DrJava;
4852
import edu.rice.cs.drjava.config.Configuration;

drjava/src/edu/rice/cs/drjava/model/DummyGlobalModel.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@
8484

8585
import edu.rice.cs.util.ClassPathVector;
8686
import edu.rice.cs.util.FileOps;
87+
import edu.rice.cs.util.FileOpenSelector;
88+
import edu.rice.cs.util.OperationCanceledException;
8789
import edu.rice.cs.util.OrderedHashSet;
8890
import edu.rice.cs.util.Pair;
8991
import edu.rice.cs.util.SRunnable;
@@ -424,6 +426,14 @@ public File getProjectFile() {
424426
public File[] getProjectFiles() {
425427
throw new UnsupportedOperationException("Tried to call getProjectFiles on a Dummy");
426428
}
429+
430+
public File getProjectRoot() {
431+
throw new UnsupportedOperationException("Tried to call getProjectRoot on a Dummy");
432+
}
433+
434+
public void setProjectRoot(File f) {
435+
throw new UnsupportedOperationException("Tried to call setProjectRoot on a Dummy");
436+
}
427437

428438
public File getBuildDirectory() {
429439
throw new UnsupportedOperationException("Tried to call getBuildDirectory on a Dummy");

drjava/src/edu/rice/cs/drjava/model/DummyGlobalModelListener.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import java.io.File;
4949
import java.util.List;
5050
import edu.rice.cs.util.classloader.ClassFileError;
51+
import edu.rice.cs.util.FileOpenSelector;
5152

5253
/** A dummy GlobalModelListener that does nothing. Useful for listening to only a small number of events.
5354
* @version $Id$
@@ -174,6 +175,9 @@ public void interpreterChanged(boolean inProgress) { }
174175

175176
/** Called when enter was typed in the interactions pane but the interaction was incomplete. */
176177
public void interactionIncomplete() { }
178+
179+
/** Called when the slave JVM is used for interpretation or unit testing. */
180+
public void slaveJVMUsed() { }
177181

178182
//-------------------- End InteractionsListener Methods --------------------//
179183

drjava/src/edu/rice/cs/drjava/model/DummyOpenDefDoc.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
import edu.rice.cs.drjava.model.definitions.reducedmodel.*;
6464
import edu.rice.cs.drjava.model.FinalizationListener;
6565

66+
import edu.rice.cs.util.OperationCanceledException;
6667
import edu.rice.cs.util.docnavigation.*;
6768
import edu.rice.cs.util.text.SwingDocument;
6869

drjava/src/edu/rice/cs/drjava/model/EventNotifier.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
*/
5555
public abstract class EventNotifier<T> {
5656

57-
/** All T Listeners that are listening to the model. nAccesses to this collection are protected by the
57+
/** All T Listeners that are listening to the model. Accesses to this collection are protected by the
5858
* ReaderWriterLock. The collection must be synchronized, since multiple readers could access it at once.
5959
*/
6060
protected final LinkedList<T> _listeners = new LinkedList<T>();

0 commit comments

Comments
 (0)