Skip to content

Commit 200afc4

Browse files
committed
clean up debugger init by delaying some calls until ready (fixes #73)
1 parent 7962204 commit 200afc4

File tree

5 files changed

+29
-19
lines changed

5 files changed

+29
-19
lines changed

app/src/processing/app/ui/Editor.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1193,7 +1193,10 @@ public void setUpdatesAvailable(int count) {
11931193

11941194

11951195
/**
1196-
* Override this if you want a special menu for your particular 'mode'.
1196+
* Override this if you want a special menu for a Mode.
1197+
* You only get one menu, use it wisely!
1198+
* Note that this is called from the Editor constructor,
1199+
* so your Editor object may not be completely initialized yet.
11971200
*/
11981201
public JMenu buildModeMenu() {
11991202
return null;

java/src/processing/mode/java/JavaEditor.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ public class JavaEditor extends Editor {
7575
protected LineHighlight currentLine; // where the debugger is suspended
7676
protected final String breakpointMarkerComment = " //<>//";
7777

78-
protected JMenuItem inspectorItem;
78+
JMenu modeMenu;
79+
// protected JMenuItem inspectorItem;
7980

8081
static final int ERROR_TAB_INDEX = 0;
8182

@@ -104,7 +105,9 @@ protected JavaEditor(Base base, String path, EditorState state,
104105
super(base, path, state, mode);
105106

106107
jmode = (JavaMode) mode;
108+
107109
debugger = new Debugger(this);
110+
debugger.populateMenu(modeMenu);
108111

109112
// set breakpoints from marker comments
110113
for (LineID lineID : stripBreakpointComments()) {
@@ -1385,8 +1388,7 @@ public boolean isDebuggerEnabled() {
13851388

13861389
@Override
13871390
public JMenu buildModeMenu() {
1388-
//return buildDebugMenu();
1389-
return debugger.buildMenu();
1391+
return modeMenu = new JMenu(Language.text("menu.debug"));
13901392
}
13911393

13921394

java/src/processing/mode/java/JavaToolbar.java

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,24 +37,33 @@
3737
public class JavaToolbar extends EditorToolbar {
3838
JavaEditor jeditor;
3939

40-
// boolean debug; // true if this is the expanded debug feller
4140
EditorButton stepButton;
4241
EditorButton continueButton;
4342

4443

45-
// public JavaToolbar(Editor editor, boolean debug) {
4644
public JavaToolbar(Editor editor) {
4745
super(editor);
48-
// this.debug = debug;
4946
jeditor = (JavaEditor) editor;
5047
}
5148

5249

50+
/**
51+
* Check if 'debugger' is available and enabled.
52+
*/
53+
private boolean isDebuggerArmed() {
54+
// 'jeditor' not ready yet because this is called by super()
55+
// 'debugger' also null during init
56+
if (jeditor == null) {
57+
return false;
58+
}
59+
return jeditor.isDebuggerEnabled();
60+
}
61+
62+
5363
@Override
5464
public List<EditorButton> createButtons() {
55-
// jeditor not ready yet because this is called by super()
56-
final boolean debug = ((JavaEditor) editor).isDebuggerEnabled();
57-
// System.out.println("creating buttons in JavaToolbar, debug:" + debug);
65+
final boolean debug = isDebuggerArmed();
66+
5867
List<EditorButton> outgoing = new ArrayList<>();
5968

6069
final String runText = debug ?
@@ -130,10 +139,9 @@ public void actionPerformed(ActionEvent e) {
130139
}
131140
};
132141

133-
if (((JavaEditor) editor).isDebuggerEnabled()) {
142+
if (isDebuggerArmed()) {
134143
debugButton.setSelected(true);
135144
}
136-
// debugButton.setRolloverLabel(label);
137145
box.add(debugButton);
138146
addGap(box);
139147
}

java/src/processing/mode/java/debug/Debugger.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,9 @@ public Debugger(JavaEditor editor) {
117117

118118
/**
119119
* Creates the debug menu. Includes ActionListeners for the menu items.
120-
* Intended for adding to the menu bar.
121-
*
122-
* @return The debug menu
123120
*/
124-
public JMenu buildMenu() {
125-
debugMenu = new JMenu(Language.text("menu.debug"));
121+
public void populateMenu(JMenu modeMenu) {
122+
debugMenu = modeMenu;
126123
JMenuItem item;
127124

128125
debugItem = Toolkit.newJMenuItem(Language.text("menu.debug.enable"), 'D');
@@ -188,8 +185,6 @@ public void actionPerformed(ActionEvent e) {
188185
});
189186
debugMenu.add(item);
190187
item.setEnabled(false);
191-
192-
return debugMenu;
193188
}
194189

195190

todo.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
1271 (4.0a2)
2+
X break buildMenu() into populateMenu() method to delay Debugger init
3+
X https://github.com/processing/processing4/issues/73
24

35
sam
46
X Resolve rewrite of pixelDensity to settings in preproc

0 commit comments

Comments
 (0)