1-
21/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */
32
43/*
@@ -76,17 +75,17 @@ public class JavaEditor extends Editor {
7675 protected LineHighlight currentLine ; // where the debugger is suspended
7776 protected final String breakpointMarkerComment = " //<>//" ;
7877
79- protected JMenuItem inspectorItem ;
78+ JMenu modeMenu ;
79+ // protected JMenuItem inspectorItem;
8080
8181 static final int ERROR_TAB_INDEX = 0 ;
8282
8383 private boolean hasJavaTabs ;
8484 private boolean javaTabWarned ;
8585
86- // To ensure proper initalization, do not use these variables directly. Instead, call
87- // or override getPreprocessingService and getDebugger.
88- private PreprocService preprocService ;
89- private Debugger debugger ;
86+ protected PreprocService preprocService ;
87+
88+ protected Debugger debugger ;
9089
9190 private InspectMode inspect ;
9291 private ShowUsage usage ;
@@ -107,11 +106,13 @@ protected JavaEditor(Base base, String path, EditorState state,
107106
108107 jmode = (JavaMode ) mode ;
109108
109+ debugger = new Debugger (this );
110+ debugger .populateMenu (modeMenu );
111+
110112 // set breakpoints from marker comments
111- Debugger targetDebugger = getDebugger ();
112113 for (LineID lineID : stripBreakpointComments ()) {
113114 //System.out.println("setting: " + lineID);
114- targetDebugger .setBreakpoint (lineID );
115+ debugger .setBreakpoint (lineID );
115116 }
116117 // setting breakpoints will flag sketch as modified, so override this here
117118 getSketch ().setModified (false );
@@ -134,18 +135,19 @@ protected JavaEditor(Base base, String path, EditorState state,
134135 box.add(textAndError);
135136 */
136137
138+ preprocService = new PreprocService (this );
139+
137140 pdexEnabled = !hasJavaTabs ();
138141
139- PreprocService targetPreprocService = getPreprocessingService ();
140- usage = new ShowUsage (this , targetPreprocService );
141- inspect = new InspectMode (this , targetPreprocService , usage );
142- rename = new Rename (this , targetPreprocService , usage );
142+ usage = new ShowUsage (this , preprocService );
143+ inspect = new InspectMode (this , preprocService , usage );
144+ rename = new Rename (this , preprocService , usage );
143145
144146 if (SHOW_AST_VIEWER ) {
145- astViewer = new ASTViewer (this , targetPreprocService );
147+ astViewer = new ASTViewer (this , preprocService );
146148 }
147149
148- errorChecker = new ErrorChecker (this , targetPreprocService );
150+ errorChecker = new ErrorChecker (this , preprocService );
149151
150152 for (SketchCode code : getSketch ().getCode ()) {
151153 Document document = code .getDocument ();
@@ -197,7 +199,7 @@ public void rebuild() {
197199
198200 if (preprocService != null ) {
199201 if (hasJavaTabsChanged ) {
200- getPreprocessingService () .handleHasJavaTabsChange (hasJavaTabs );
202+ preprocService .handleHasJavaTabsChange (hasJavaTabs );
201203 pdexEnabled = !hasJavaTabs ;
202204 if (!pdexEnabled ) {
203205 usage .hide ();
@@ -269,7 +271,7 @@ public void actionPerformed(ActionEvent e) {
269271 public void actionPerformed (ActionEvent e ) {
270272 if (isDebuggerEnabled ()) {
271273 Messages .log ("Invoked 'Stop' menu item" );
272- getDebugger () .stopDebug ();
274+ debugger .stopDebug ();
273275 } else {
274276 handleStop ();
275277 }
@@ -1099,13 +1101,12 @@ public void handleRun() {
10991101 if (isDebuggerEnabled ()) {
11001102 // Hitting Run while a sketch is running should restart the sketch
11011103 // https://github.com/processing/processing/issues/3623
1102- Debugger targetDebugger = getDebugger ();
1103- if (targetDebugger .isStarted ()) {
1104- targetDebugger .stopDebug ();
1104+ if (debugger .isStarted ()) {
1105+ debugger .stopDebug ();
11051106 }
11061107 // Don't start the sketch paused, continue until a breakpoint or error
11071108 // https://github.com/processing/processing/issues/3096
1108- targetDebugger .continueDebug ();
1109+ debugger .continueDebug ();
11091110
11101111 } else {
11111112 handleLaunch (false , false );
@@ -1161,9 +1162,9 @@ protected void handleLaunch(boolean present, boolean tweak) {
11611162 * session or performs standard stop action if not currently debugging.
11621163 */
11631164 public void handleStop () {
1164- Debugger targetDebugger = getDebugger ();
1165- if ( targetDebugger . isStarted ()) {
1166- targetDebugger . stopDebug ();
1165+ if ( debugger . isStarted ()) {
1166+ debugger . stopDebug ();
1167+
11671168 } else {
11681169 toolbar .activateStop ();
11691170
@@ -1209,7 +1210,7 @@ public void onRunnerExiting(Runner runner) {
12091210
12101211 @ Override
12111212 public void toggleBreakpoint (int lineIndex ) {
1212- getDebugger () .toggleBreakpoint (lineIndex );
1213+ debugger .toggleBreakpoint (lineIndex );
12131214 }
12141215
12151216
@@ -1221,15 +1222,14 @@ public boolean handleSaveAs() {
12211222 boolean saved = super .handleSaveAs ();
12221223 if (saved ) {
12231224 // re-set breakpoints in first tab (name has changed)
1224- Debugger targetDebugger = getDebugger ();
1225- List <LineBreakpoint > bps = targetDebugger .getBreakpoints (oldName );
1226- targetDebugger .clearBreakpoints (oldName );
1225+ List <LineBreakpoint > bps = debugger .getBreakpoints (oldName );
1226+ debugger .clearBreakpoints (oldName );
12271227 String newName = getSketch ().getCode (0 ).getFileName ();
12281228 //System.out.println("new name: " + newName);
12291229 for (LineBreakpoint bp : bps ) {
12301230 LineID line = new LineID (newName , bp .lineID ().lineIdx ());
12311231 //System.out.println("setting: " + line);
1232- targetDebugger .setBreakpoint (line );
1232+ debugger .setBreakpoint (line );
12331233 }
12341234 // add breakpoint marker comments to source file
12351235 for (SketchCode code : getSketch ().getCode ()) {
@@ -1292,20 +1292,20 @@ public void handleImportLibrary(String libraryName) {
12921292
12931293 @ Override
12941294 public void librariesChanged () {
1295- getPreprocessingService () .notifyLibrariesChanged ();
1295+ preprocService .notifyLibrariesChanged ();
12961296 }
12971297
12981298
12991299 @ Override
13001300 public void codeFolderChanged () {
1301- getPreprocessingService () .notifyCodeFolderChanged ();
1301+ preprocService .notifyCodeFolderChanged ();
13021302 }
13031303
13041304
13051305 @ Override
13061306 public void sketchChanged () {
13071307 errorChecker .notifySketchChanged ();
1308- getPreprocessingService () .notifySketchChanged ();
1308+ preprocService .notifySketchChanged ();
13091309 }
13101310
13111311
@@ -1362,17 +1362,11 @@ public void internalCloseRunner() {
13621362 public void dispose () {
13631363 //System.out.println("window dispose");
13641364 // quit running debug session
1365-
1366- Debugger targetDebugger = getDebugger ();
1367- if (targetDebugger .isEnabled ()) {
1368- targetDebugger .stopDebug ();
1365+ if (debugger .isEnabled ()) {
1366+ debugger .stopDebug ();
13691367 }
1370- targetDebugger .dispose ();
1371-
1372- getPreprocessingService ().dispose ();
1373-
1374- debugger = null ;
1375- preprocService = null ;
1368+ debugger .dispose ();
1369+ preprocService .dispose ();
13761370
13771371 inspect .dispose ();
13781372 usage .dispose ();
@@ -1388,14 +1382,13 @@ public void dispose() {
13881382
13891383 @ Override
13901384 public boolean isDebuggerEnabled () {
1391- return getDebugger () .isEnabled ();
1385+ return debugger .isEnabled ();
13921386 }
13931387
13941388
13951389 @ Override
13961390 public JMenu buildModeMenu () {
1397- //return buildDebugMenu();
1398- return getDebugger ().buildMenu ();
1391+ return modeMenu = new JMenu (Language .text ("menu.debug" ));
13991392 }
14001393
14011394
@@ -1477,7 +1470,7 @@ protected void addBreakpointComments(String tabFilename) {
14771470 Messages .loge ("Illegal tab name to addBreakpointComments() " + tabFilename );
14781471 return ;
14791472 }
1480- List <LineBreakpoint > bps = getDebugger () .getBreakpoints (tab .getFileName ());
1473+ List <LineBreakpoint > bps = debugger .getBreakpoints (tab .getFileName ());
14811474
14821475 // load the source file
14831476 ////switched to using methods provided by the SketchCode class
@@ -1545,7 +1538,7 @@ public void run() {
15451538 */
15461539 protected void setTabContents (String tabFilename , String code ) {
15471540 // remove all breakpoints of this tab
1548- getDebugger () .clearBreakpoints (tabFilename );
1541+ debugger .clearBreakpoints (tabFilename );
15491542
15501543 SketchCode currentTab = getCurrentTab ();
15511544
@@ -1618,9 +1611,6 @@ public void switchToTab(String tabFileName) {
16181611
16191612
16201613 public Debugger getDebugger () {
1621- if (debugger == null ) {
1622- debugger = new Debugger (this );
1623- }
16241614 return debugger ;
16251615 }
16261616
@@ -1635,9 +1625,6 @@ public JavaTextArea getJavaTextArea() {
16351625
16361626
16371627 public PreprocService getPreprocessingService () {
1638- if (preprocService == null ) {
1639- preprocService = new PreprocService (this );
1640- }
16411628 return preprocService ;
16421629 }
16431630
@@ -1651,7 +1638,7 @@ public void prepareRun() {
16511638 autoSave ();
16521639 super .prepareRun ();
16531640 downloadImports ();
1654- getPreprocessingService () .cancel ();
1641+ preprocService .cancel ();
16551642 }
16561643
16571644
@@ -1823,7 +1810,7 @@ public void actionPerformed(ActionEvent e) {
18231810
18241811
18251812 public void activateRun () {
1826- getDebugger () .enableMenuItem (false );
1813+ debugger .enableMenuItem (false );
18271814 toolbar .activateRun ();
18281815 }
18291816
@@ -1836,7 +1823,7 @@ public void activateRun() {
18361823 */
18371824 public void deactivateRun () {
18381825 toolbar .deactivateRun ();
1839- getDebugger () .enableMenuItem (true );
1826+ debugger .enableMenuItem (true );
18401827 }
18411828
18421829
@@ -1875,7 +1862,6 @@ public void deactivateStep() {
18751862 public void toggleDebug () {
18761863// debugEnabled = !debugEnabled;
18771864
1878- getDebugger ().toggleEnabled ();
18791865 rebuildToolbar ();
18801866 repaint (); // show/hide breakpoints in the gutter
18811867
@@ -2110,10 +2096,8 @@ public void setCode(SketchCode code) {
21102096 }
21112097 }
21122098 }
2113-
2114- Debugger targetDebugger = getDebugger ();
2115- if (targetDebugger .isStarted ()) {
2116- targetDebugger .startTrackingLineChanges ();
2099+ if (getDebugger () != null && getDebugger ().isStarted ()) {
2100+ getDebugger ().startTrackingLineChanges ();
21172101 }
21182102 if (errorColumn != null ) {
21192103 errorColumn .repaint ();
0 commit comments