clean up debugger init by delaying some calls until ready (fixes #73)

This commit is contained in:
Ben Fry
2020-04-25 17:07:37 -04:00
parent 7962204af8
commit 200afc4fd8
5 changed files with 29 additions and 19 deletions

View File

@@ -75,7 +75,8 @@ public class JavaEditor extends Editor {
protected LineHighlight currentLine; // where the debugger is suspended
protected final String breakpointMarkerComment = " //<>//";
protected JMenuItem inspectorItem;
JMenu modeMenu;
// protected JMenuItem inspectorItem;
static final int ERROR_TAB_INDEX = 0;
@@ -104,7 +105,9 @@ public class JavaEditor extends Editor {
super(base, path, state, mode);
jmode = (JavaMode) mode;
debugger = new Debugger(this);
debugger.populateMenu(modeMenu);
// set breakpoints from marker comments
for (LineID lineID : stripBreakpointComments()) {
@@ -1385,8 +1388,7 @@ public class JavaEditor extends Editor {
@Override
public JMenu buildModeMenu() {
//return buildDebugMenu();
return debugger.buildMenu();
return modeMenu = new JMenu(Language.text("menu.debug"));
}

View File

@@ -37,24 +37,33 @@ import processing.mode.java.debug.Debugger;
public class JavaToolbar extends EditorToolbar {
JavaEditor jeditor;
// boolean debug; // true if this is the expanded debug feller
EditorButton stepButton;
EditorButton continueButton;
// public JavaToolbar(Editor editor, boolean debug) {
public JavaToolbar(Editor editor) {
super(editor);
// this.debug = debug;
jeditor = (JavaEditor) editor;
}
/**
* Check if 'debugger' is available and enabled.
*/
private boolean isDebuggerArmed() {
// 'jeditor' not ready yet because this is called by super()
// 'debugger' also null during init
if (jeditor == null) {
return false;
}
return jeditor.isDebuggerEnabled();
}
@Override
public List<EditorButton> createButtons() {
// jeditor not ready yet because this is called by super()
final boolean debug = ((JavaEditor) editor).isDebuggerEnabled();
// System.out.println("creating buttons in JavaToolbar, debug:" + debug);
final boolean debug = isDebuggerArmed();
List<EditorButton> outgoing = new ArrayList<>();
final String runText = debug ?
@@ -130,10 +139,9 @@ public class JavaToolbar extends EditorToolbar {
}
};
if (((JavaEditor) editor).isDebuggerEnabled()) {
if (isDebuggerArmed()) {
debugButton.setSelected(true);
}
// debugButton.setRolloverLabel(label);
box.add(debugButton);
addGap(box);
}

View File

@@ -117,12 +117,9 @@ public class Debugger {
/**
* Creates the debug menu. Includes ActionListeners for the menu items.
* Intended for adding to the menu bar.
*
* @return The debug menu
*/
public JMenu buildMenu() {
debugMenu = new JMenu(Language.text("menu.debug"));
public void populateMenu(JMenu modeMenu) {
debugMenu = modeMenu;
JMenuItem item;
debugItem = Toolkit.newJMenuItem(Language.text("menu.debug.enable"), 'D');
@@ -188,8 +185,6 @@ public class Debugger {
});
debugMenu.add(item);
item.setEnabled(false);
return debugMenu;
}