mirror of
https://github.com/processing/processing4.git
synced 2026-02-02 13:21:07 +01:00
finish merge of DebugEditor, move vars around, clean up accessors and menus
This commit is contained in:
@@ -48,9 +48,6 @@ import processing.mode.java.tweak.UDPTweakClient;
|
||||
public class JavaEditor extends Editor {
|
||||
JavaMode jmode;
|
||||
|
||||
// TODO this needs prefs to be applied when necessary
|
||||
// PdeKeyListener listener;
|
||||
|
||||
// Runner associated with this editor window
|
||||
private Runner runtime;
|
||||
|
||||
@@ -59,7 +56,6 @@ public class JavaEditor extends Editor {
|
||||
super(base, path, state, mode);
|
||||
|
||||
jmode = (JavaMode) mode;
|
||||
dmode = (JavaMode) mode;
|
||||
dbg = new Debugger(this);
|
||||
vi = new VariableInspector(this);
|
||||
|
||||
@@ -116,7 +112,7 @@ public class JavaEditor extends Editor {
|
||||
checkForJavaTabs();
|
||||
initializeErrorChecker();
|
||||
|
||||
ta.setECSandThemeforTextArea(errorCheckerService, dmode);
|
||||
ta.setECSandThemeforTextArea(errorCheckerService, jmode);
|
||||
|
||||
addXQModeUI();
|
||||
debugToolbarEnabled = new AtomicBoolean(false);
|
||||
@@ -1195,7 +1191,6 @@ public class JavaEditor extends Editor {
|
||||
|
||||
protected JMenuItem toggleVariableInspectorMenuItem;
|
||||
|
||||
public JavaMode dmode; // the mode
|
||||
protected Debugger dbg; // the debugger
|
||||
protected VariableInspector vi; // the variable inspector frame
|
||||
|
||||
@@ -1228,7 +1223,7 @@ public class JavaEditor extends Editor {
|
||||
Box box = (Box) textarea.getParent();
|
||||
box.remove(2); // Remove textArea from it's container, i.e Box
|
||||
textAndError.setLayout(new BorderLayout());
|
||||
errorBar = new ErrorBar(this, textarea.getMinimumSize().height, dmode);
|
||||
errorBar = new ErrorBar(this, textarea.getMinimumSize().height, jmode);
|
||||
textAndError.add(errorBar, BorderLayout.EAST);
|
||||
textarea.setBounds(0, 0, errorBar.getX() - 1, textarea.getHeight());
|
||||
textAndError.add(textarea);
|
||||
@@ -1419,246 +1414,179 @@ public class JavaEditor extends Editor {
|
||||
* @return The debug menu
|
||||
*/
|
||||
protected JMenu buildDebugMenu() {
|
||||
debugMenu = new JMenu(Language.text("menu.debug"));
|
||||
//debugMenu = new JMenu("PDE X");
|
||||
debugMenu = new JMenu(Language.text("menu.debug"));
|
||||
|
||||
JCheckBoxMenuItem toggleDebugger = new JCheckBoxMenuItem(Language.text("menu.debug.show_debug_toolbar"));
|
||||
toggleDebugger.setSelected(false);
|
||||
toggleDebugger.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
switchToolbars();
|
||||
}
|
||||
});
|
||||
debugMenu.add(toggleDebugger);
|
||||
debugMenuItem = Toolkit.newJMenuItemAlt(Language.text("menu.debug.debug"), KeyEvent.VK_R);
|
||||
debugMenuItem.addActionListener(this);
|
||||
continueMenuItem = Toolkit.newJMenuItem(Language.text("menu.debug.continue"), KeyEvent.VK_U);
|
||||
continueMenuItem.addActionListener(this);
|
||||
stopMenuItem = new JMenuItem(Language.text("menu.debug.stop"));
|
||||
stopMenuItem.addActionListener(this);
|
||||
JCheckBoxMenuItem toggleDebugger =
|
||||
new JCheckBoxMenuItem(Language.text("menu.debug.show_debug_toolbar"));
|
||||
toggleDebugger.setSelected(false);
|
||||
toggleDebugger.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
switchToolbars();
|
||||
}
|
||||
});
|
||||
debugMenu.add(toggleDebugger);
|
||||
|
||||
debugMenuItem = Toolkit.newJMenuItemAlt(Language.text("menu.debug.debug"), KeyEvent.VK_R);
|
||||
debugMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Debug' menu item");
|
||||
dbg.startDebug();
|
||||
}
|
||||
});
|
||||
debugMenu.add(debugMenuItem);
|
||||
|
||||
toggleBreakpointMenuItem = Toolkit.newJMenuItem(Language.text("menu.debug.toggle_breakpoint"), KeyEvent.VK_B);
|
||||
toggleBreakpointMenuItem.addActionListener(this);
|
||||
listBreakpointsMenuItem = new JMenuItem(Language.text("menu.debug.list_breakpoints"));
|
||||
listBreakpointsMenuItem.addActionListener(this);
|
||||
continueMenuItem = Toolkit.newJMenuItem(Language.text("menu.debug.continue"), KeyEvent.VK_U);
|
||||
continueMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Continue' menu item");
|
||||
dbg.continueDebug();
|
||||
}
|
||||
});
|
||||
debugMenu.add(continueMenuItem);
|
||||
|
||||
stopMenuItem = new JMenuItem(Language.text("menu.debug.stop"));
|
||||
stopMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Stop' menu item");
|
||||
dbg.stopDebug();
|
||||
}
|
||||
});
|
||||
debugMenu.add(stopMenuItem);
|
||||
|
||||
debugMenu.addSeparator();
|
||||
|
||||
stepOverMenuItem = Toolkit.newJMenuItem(Language.text("menu.debug.step"), KeyEvent.VK_J);
|
||||
stepOverMenuItem.addActionListener(this);
|
||||
stepIntoMenuItem = Toolkit.newJMenuItemShift(Language.text("menu.debug.step_into"), KeyEvent.VK_J);
|
||||
stepIntoMenuItem.addActionListener(this);
|
||||
stepOutMenuItem = Toolkit.newJMenuItemAlt(Language.text("menu.debug.step_out"), KeyEvent.VK_J);
|
||||
stepOutMenuItem.addActionListener(this);
|
||||
toggleBreakpointMenuItem =
|
||||
Toolkit.newJMenuItem(Language.text("menu.debug.toggle_breakpoint"), KeyEvent.VK_B);
|
||||
toggleBreakpointMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Toggle Breakpoint' menu item");
|
||||
dbg.toggleBreakpoint();
|
||||
}
|
||||
});
|
||||
debugMenu.add(toggleBreakpointMenuItem);
|
||||
listBreakpointsMenuItem = new JMenuItem(Language.text("menu.debug.list_breakpoints"));
|
||||
listBreakpointsMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'List Breakpoints' menu item");
|
||||
dbg.listBreakpoints();
|
||||
}
|
||||
});
|
||||
debugMenu.add(listBreakpointsMenuItem);
|
||||
|
||||
printStackTraceMenuItem = new JMenuItem(Language.text("menu.debug.print_stack_trace"));
|
||||
printStackTraceMenuItem.addActionListener(this);
|
||||
printLocalsMenuItem = new JMenuItem(Language.text("menu.debug.print_locals"));
|
||||
printLocalsMenuItem.addActionListener(this);
|
||||
printThisMenuItem = new JMenuItem(Language.text("menu.debug.print_fields"));
|
||||
printThisMenuItem.addActionListener(this);
|
||||
printSourceMenuItem = new JMenuItem(Language.text("menu.debug.print_source_location"));
|
||||
printSourceMenuItem.addActionListener(this);
|
||||
printThreads = new JMenuItem(Language.text("menu.debug.print_threads"));
|
||||
printThreads.addActionListener(this);
|
||||
debugMenu.addSeparator();
|
||||
|
||||
stepOverMenuItem = Toolkit.newJMenuItem(Language.text("menu.debug.step"), KeyEvent.VK_J);
|
||||
stepOverMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Step Over' menu item");
|
||||
dbg.stepOver();
|
||||
}
|
||||
});
|
||||
debugMenu.add(stepOverMenuItem);
|
||||
|
||||
stepIntoMenuItem = Toolkit.newJMenuItemShift(Language.text("menu.debug.step_into"), KeyEvent.VK_J);
|
||||
stepIntoMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Step Into' menu item");
|
||||
dbg.stepInto();
|
||||
}
|
||||
});
|
||||
debugMenu.add(stepIntoMenuItem);
|
||||
|
||||
stepOutMenuItem = Toolkit.newJMenuItemAlt(Language.text("menu.debug.step_out"), KeyEvent.VK_J);
|
||||
stepOutMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Step Out' menu item");
|
||||
dbg.stepOut();
|
||||
}
|
||||
});
|
||||
debugMenu.add(stepOutMenuItem);
|
||||
|
||||
debugMenu.addSeparator();
|
||||
|
||||
toggleVariableInspectorMenuItem = Toolkit.newJMenuItem(Language.text("menu.debug.toggle_variable_inspector"), KeyEvent.VK_I);
|
||||
toggleVariableInspectorMenuItem.addActionListener(this);
|
||||
printStackTraceMenuItem = new JMenuItem(Language.text("menu.debug.print_stack_trace"));
|
||||
printStackTraceMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Print Stack Trace' menu item");
|
||||
dbg.printStackTrace();
|
||||
}
|
||||
});
|
||||
debugMenu.add(printStackTraceMenuItem);
|
||||
|
||||
printLocalsMenuItem = new JMenuItem(Language.text("menu.debug.print_locals"));
|
||||
printLocalsMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Print Locals' menu item");
|
||||
dbg.printLocals();
|
||||
}
|
||||
});
|
||||
debugMenu.add(printLocalsMenuItem);
|
||||
|
||||
debugMenu.add(debugMenuItem);
|
||||
debugMenu.add(continueMenuItem);
|
||||
debugMenu.add(stopMenuItem);
|
||||
debugMenu.addSeparator();
|
||||
debugMenu.add(toggleBreakpointMenuItem);
|
||||
debugMenu.add(listBreakpointsMenuItem);
|
||||
debugMenu.addSeparator();
|
||||
debugMenu.add(stepOverMenuItem);
|
||||
debugMenu.add(stepIntoMenuItem);
|
||||
debugMenu.add(stepOutMenuItem);
|
||||
debugMenu.addSeparator();
|
||||
debugMenu.add(printStackTraceMenuItem);
|
||||
debugMenu.add(printLocalsMenuItem);
|
||||
debugMenu.add(printThisMenuItem);
|
||||
debugMenu.add(printSourceMenuItem);
|
||||
debugMenu.add(printThreads);
|
||||
debugMenu.addSeparator();
|
||||
debugMenu.add(toggleVariableInspectorMenuItem);
|
||||
// debugMenu.addSeparator();
|
||||
printThisMenuItem = new JMenuItem(Language.text("menu.debug.print_fields"));
|
||||
printThisMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Print This' menu item");
|
||||
dbg.printThis();
|
||||
}
|
||||
});
|
||||
debugMenu.add(printThisMenuItem);
|
||||
|
||||
// XQMode menu items
|
||||
/*
|
||||
JCheckBoxMenuItem item;
|
||||
item = new JCheckBoxMenuItem("Error Checker Enabled");
|
||||
item.setSelected(ExperimentalMode.errorCheckEnabled);
|
||||
item.addActionListener(new ActionListener() {
|
||||
printSourceMenuItem = new JMenuItem(Language.text("menu.debug.print_source_location"));
|
||||
printSourceMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Print Source' menu item");
|
||||
dbg.printSource();
|
||||
}
|
||||
});
|
||||
debugMenu.add(printSourceMenuItem);
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
ExperimentalMode.errorCheckEnabled = ((JCheckBoxMenuItem) e.getSource()).isSelected();
|
||||
errorCheckerService.handleErrorCheckingToggle();
|
||||
dmode.savePreferences();
|
||||
}
|
||||
});
|
||||
debugMenu.add(item);
|
||||
printThreads = new JMenuItem(Language.text("menu.debug.print_threads"));
|
||||
printThreads.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Print Threads' menu item");
|
||||
dbg.printThreads();
|
||||
}
|
||||
});
|
||||
debugMenu.add(printThreads);
|
||||
|
||||
problemWindowMenuCB = new JCheckBoxMenuItem("Show Problem Window");
|
||||
// problemWindowMenuCB.setSelected(true);
|
||||
problemWindowMenuCB.addActionListener(new ActionListener() {
|
||||
debugMenu.addSeparator();
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (errorCheckerService.errorWindow == null) {
|
||||
return;
|
||||
}
|
||||
errorCheckerService.errorWindow
|
||||
.setVisible(((JCheckBoxMenuItem) e.getSource())
|
||||
.isSelected());
|
||||
// switch to console, now that Error Window is open
|
||||
showProblemListView(XQConsoleToggle.CONSOLE);
|
||||
}
|
||||
});
|
||||
debugMenu.add(problemWindowMenuCB);
|
||||
toggleVariableInspectorMenuItem = Toolkit.newJMenuItem(Language.text("menu.debug.toggle_variable_inspector"), KeyEvent.VK_I);
|
||||
toggleVariableInspectorMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Toggle Variable Inspector' menu item");
|
||||
toggleVariableInspector();
|
||||
}
|
||||
});
|
||||
|
||||
showWarnings = new JCheckBoxMenuItem("Warnings Enabled");
|
||||
showWarnings.setSelected(ExperimentalMode.warningsEnabled);
|
||||
showWarnings.addActionListener(new ActionListener() {
|
||||
debugMenu.add(toggleVariableInspectorMenuItem);
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
ExperimentalMode.warningsEnabled = ((JCheckBoxMenuItem) e
|
||||
.getSource()).isSelected();
|
||||
errorCheckerService.runManualErrorCheck();
|
||||
dmode.savePreferences();
|
||||
}
|
||||
});
|
||||
debugMenu.add(showWarnings);
|
||||
|
||||
completionsEnabled = new JCheckBoxMenuItem("Code Completion Enabled");
|
||||
completionsEnabled.setSelected(ExperimentalMode.codeCompletionsEnabled);
|
||||
completionsEnabled.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
ExperimentalMode.codeCompletionsEnabled = (((JCheckBoxMenuItem) e
|
||||
.getSource()).isSelected());
|
||||
dmode.savePreferences();
|
||||
}
|
||||
});
|
||||
debugMenu.add(completionsEnabled);
|
||||
|
||||
debugMessagesEnabled = new JCheckBoxMenuItem("Show Debug Messages");
|
||||
debugMessagesEnabled.setSelected(ExperimentalMode.DEBUG);
|
||||
debugMessagesEnabled.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
ExperimentalMode.DEBUG = ((JCheckBoxMenuItem) e
|
||||
.getSource()).isSelected();
|
||||
dmode.savePreferences();
|
||||
}
|
||||
});
|
||||
debugMenu.add(debugMessagesEnabled);
|
||||
|
||||
|
||||
writeErrorLog = new JCheckBoxMenuItem("Write Errors to Log");
|
||||
writeErrorLog.setSelected(ExperimentalMode.errorLogsEnabled);
|
||||
writeErrorLog.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
ExperimentalMode.errorLogsEnabled = ((JCheckBoxMenuItem) e
|
||||
.getSource()).isSelected();
|
||||
dmode.savePreferences();
|
||||
}
|
||||
});
|
||||
debugMenu.add(writeErrorLog);
|
||||
|
||||
debugMenu.addSeparator();
|
||||
JMenuItem jitem = new JMenuItem("PDE X on GitHub");
|
||||
jitem.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Base.openURL("https://github.com/processing/processing-experimental");
|
||||
}
|
||||
});
|
||||
debugMenu.add(jitem);
|
||||
*/
|
||||
showOutline = Toolkit.newJMenuItem(Language.text("menu.debug.show_sketch_outline"), KeyEvent.VK_L);
|
||||
showOutline.addActionListener(this);
|
||||
debugMenu.add(showOutline);
|
||||
|
||||
showTabOutline = Toolkit.newJMenuItem(Language.text("menu.debug.show_tabs_list"), KeyEvent.VK_Y);
|
||||
showTabOutline.addActionListener(this);
|
||||
debugMenu.add(showTabOutline);
|
||||
|
||||
return debugMenu;
|
||||
showOutline = Toolkit.newJMenuItem(Language.text("menu.debug.show_sketch_outline"), KeyEvent.VK_L);
|
||||
showOutline.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Base.log("Show Sketch Outline:");
|
||||
errorCheckerService.getASTGenerator().showSketchOutline();
|
||||
}
|
||||
});
|
||||
debugMenu.add(showOutline);
|
||||
|
||||
showTabOutline = Toolkit.newJMenuItem(Language.text("menu.debug.show_tabs_list"), KeyEvent.VK_Y);
|
||||
showTabOutline.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Base.log("Show Tab Outline:");
|
||||
errorCheckerService.getASTGenerator().showTabOutline();
|
||||
}
|
||||
});
|
||||
debugMenu.add(showTabOutline);
|
||||
|
||||
return debugMenu;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public JMenu buildModeMenu() {
|
||||
return buildDebugMenu();
|
||||
return buildDebugMenu();
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback for menu items. Implementation of Swing ActionListener.
|
||||
*
|
||||
* @param ae Action event
|
||||
*/
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent ae) {
|
||||
//System.out.println("ActionEvent: " + ae.toString());
|
||||
|
||||
JMenuItem source = (JMenuItem) ae.getSource();
|
||||
if (source == debugMenuItem) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Debug' menu item");
|
||||
//dmode.handleDebug(sketch, this);
|
||||
dbg.startDebug();
|
||||
} else if (source == stopMenuItem) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Stop' menu item");
|
||||
//dmode.handleDebug(sketch, this);
|
||||
dbg.stopDebug();
|
||||
} else if (source == continueMenuItem) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Continue' menu item");
|
||||
//dmode.handleDebug(sketch, this);
|
||||
dbg.continueDebug();
|
||||
} else if (source == stepOverMenuItem) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Step Over' menu item");
|
||||
dbg.stepOver();
|
||||
} else if (source == stepIntoMenuItem) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Step Into' menu item");
|
||||
dbg.stepInto();
|
||||
} else if (source == stepOutMenuItem) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Step Out' menu item");
|
||||
dbg.stepOut();
|
||||
} else if (source == printStackTraceMenuItem) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Print Stack Trace' menu item");
|
||||
dbg.printStackTrace();
|
||||
} else if (source == printLocalsMenuItem) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Print Locals' menu item");
|
||||
dbg.printLocals();
|
||||
} else if (source == printThisMenuItem) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Print This' menu item");
|
||||
dbg.printThis();
|
||||
} else if (source == printSourceMenuItem) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Print Source' menu item");
|
||||
dbg.printSource();
|
||||
} else if (source == printThreads) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Print Threads' menu item");
|
||||
dbg.printThreads();
|
||||
} else if (source == toggleBreakpointMenuItem) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Toggle Breakpoint' menu item");
|
||||
dbg.toggleBreakpoint();
|
||||
} else if (source == listBreakpointsMenuItem) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'List Breakpoints' menu item");
|
||||
dbg.listBreakpoints();
|
||||
} else if (source == toggleVariableInspectorMenuItem) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Toggle Variable Inspector' menu item");
|
||||
toggleVariableInspector();
|
||||
} else if (source.equals(showOutline)){
|
||||
Base.log("Show Sketch Outline:");
|
||||
errorCheckerService.getASTGenerator().showSketchOutline();
|
||||
}
|
||||
else if (source.equals(showTabOutline)){
|
||||
Base.log("Show Tab Outline:");
|
||||
errorCheckerService.getASTGenerator().showTabOutline();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
@@ -1670,22 +1598,23 @@ public class JavaEditor extends Editor {
|
||||
*/
|
||||
@Override
|
||||
protected boolean handleOpenInternal(String path) {
|
||||
// log("handleOpenInternal, path: " + path);
|
||||
boolean didOpen = super.handleOpenInternal(path);
|
||||
if (didOpen && dbg != null) {
|
||||
// should already been stopped (open calls handleStop)
|
||||
dbg.clearBreakpoints();
|
||||
clearBreakpointedLines(); // force clear breakpoint highlights
|
||||
variableInspector().reset(); // clear contents of variable inspector
|
||||
}
|
||||
//if(didOpen){
|
||||
// autosaver = new AutoSaveUtil(this, ExperimentalMode.autoSaveInterval); // this is used instead of loadAutosaver(), temp measure
|
||||
// loadAutoSaver();
|
||||
// viewingAutosaveBackup = autosaver.isAutoSaveBackup();
|
||||
// log("handleOpenInternal, viewing autosave? " + viewingAutosaveBackup);
|
||||
//}
|
||||
return didOpen;
|
||||
// log("handleOpenInternal, path: " + path);
|
||||
boolean didOpen = super.handleOpenInternal(path);
|
||||
if (didOpen && dbg != null) {
|
||||
// should already been stopped (open calls handleStop)
|
||||
dbg.clearBreakpoints();
|
||||
clearBreakpointedLines(); // force clear breakpoint highlights
|
||||
variableInspector().reset(); // clear contents of variable inspector
|
||||
}
|
||||
//if(didOpen){
|
||||
// autosaver = new AutoSaveUtil(this, ExperimentalMode.autoSaveInterval); // this is used instead of loadAutosaver(), temp measure
|
||||
// loadAutoSaver();
|
||||
// viewingAutosaveBackup = autosaver.isAutoSaveBackup();
|
||||
// log("handleOpenInternal, viewing autosave? " + viewingAutosaveBackup);
|
||||
//}
|
||||
return didOpen;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Extract breakpointed lines from source code marker comments. This removes
|
||||
@@ -1697,36 +1626,37 @@ public class JavaEditor extends Editor {
|
||||
* removed from.
|
||||
*/
|
||||
protected List<LineID> stripBreakpointComments() {
|
||||
List<LineID> bps = new ArrayList<LineID>();
|
||||
// iterate over all tabs
|
||||
Sketch sketch = getSketch();
|
||||
for (int i = 0; i < sketch.getCodeCount(); i++) {
|
||||
SketchCode tab = sketch.getCode(i);
|
||||
String code = tab.getProgram();
|
||||
String lines[] = code.split("\\r?\\n"); // newlines not included
|
||||
//System.out.println(code);
|
||||
List<LineID> bps = new ArrayList<LineID>();
|
||||
// iterate over all tabs
|
||||
Sketch sketch = getSketch();
|
||||
for (int i = 0; i < sketch.getCodeCount(); i++) {
|
||||
SketchCode tab = sketch.getCode(i);
|
||||
String code = tab.getProgram();
|
||||
String lines[] = code.split("\\r?\\n"); // newlines not included
|
||||
//System.out.println(code);
|
||||
|
||||
// scan code for breakpoint comments
|
||||
int lineIdx = 0;
|
||||
for (String line : lines) {
|
||||
//System.out.println(line);
|
||||
if (line.endsWith(breakpointMarkerComment)) {
|
||||
LineID lineID = new LineID(tab.getFileName(), lineIdx);
|
||||
bps.add(lineID);
|
||||
//System.out.println("found breakpoint: " + lineID);
|
||||
// got a breakpoint
|
||||
//dbg.setBreakpoint(lineID);
|
||||
int index = line.lastIndexOf(breakpointMarkerComment);
|
||||
lines[lineIdx] = line.substring(0, index);
|
||||
}
|
||||
lineIdx++;
|
||||
}
|
||||
//tab.setProgram(code);
|
||||
code = PApplet.join(lines, "\n");
|
||||
setTabContents(tab.getFileName(), code);
|
||||
// scan code for breakpoint comments
|
||||
int lineIdx = 0;
|
||||
for (String line : lines) {
|
||||
//System.out.println(line);
|
||||
if (line.endsWith(breakpointMarkerComment)) {
|
||||
LineID lineID = new LineID(tab.getFileName(), lineIdx);
|
||||
bps.add(lineID);
|
||||
//System.out.println("found breakpoint: " + lineID);
|
||||
// got a breakpoint
|
||||
//dbg.setBreakpoint(lineID);
|
||||
int index = line.lastIndexOf(breakpointMarkerComment);
|
||||
lines[lineIdx] = line.substring(0, index);
|
||||
}
|
||||
lineIdx++;
|
||||
}
|
||||
return bps;
|
||||
//tab.setProgram(code);
|
||||
code = PApplet.join(lines, "\n");
|
||||
setTabContents(tab.getFileName(), code);
|
||||
}
|
||||
return bps;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add breakpoint marker comments to the source file of a specific tab. This
|
||||
@@ -1736,34 +1666,35 @@ public class JavaEditor extends Editor {
|
||||
* @param tabFilename the tab file name
|
||||
*/
|
||||
protected void addBreakpointComments(String tabFilename) {
|
||||
SketchCode tab = getTab(tabFilename);
|
||||
if(tab == null) {
|
||||
// this method gets called twice when saving sketch for the first time
|
||||
// once with new name and another with old(causing NPE). Keep an eye out
|
||||
// for potential issues. See #2675. TODO:
|
||||
Base.loge("Illegal tab name to addBreakpointComments() " + tabFilename);
|
||||
return;
|
||||
}
|
||||
List<LineBreakpoint> bps = dbg.getBreakpoints(tab.getFileName());
|
||||
SketchCode tab = getTab(tabFilename);
|
||||
if (tab == null) {
|
||||
// this method gets called twice when saving sketch for the first time
|
||||
// once with new name and another with old(causing NPE). Keep an eye out
|
||||
// for potential issues. See #2675. TODO:
|
||||
Base.loge("Illegal tab name to addBreakpointComments() " + tabFilename);
|
||||
return;
|
||||
}
|
||||
List<LineBreakpoint> bps = dbg.getBreakpoints(tab.getFileName());
|
||||
|
||||
// load the source file
|
||||
File sourceFile = new File(sketch.getFolder(), tab.getFileName());
|
||||
//System.out.println("file: " + sourceFile);
|
||||
try {
|
||||
String code = Base.loadFile(sourceFile);
|
||||
//System.out.println("code: " + code);
|
||||
String lines[] = code.split("\\r?\\n"); // newlines not included
|
||||
for (LineBreakpoint bp : bps) {
|
||||
//System.out.println("adding bp: " + bp.lineID());
|
||||
lines[bp.lineID().lineIdx()] += breakpointMarkerComment;
|
||||
}
|
||||
code = PApplet.join(lines, "\n");
|
||||
//System.out.println("new code: " + code);
|
||||
Base.saveFile(code, sourceFile);
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.SEVERE, null, ex);
|
||||
// load the source file
|
||||
File sourceFile = new File(sketch.getFolder(), tab.getFileName());
|
||||
//System.out.println("file: " + sourceFile);
|
||||
try {
|
||||
String code = Base.loadFile(sourceFile);
|
||||
//System.out.println("code: " + code);
|
||||
String lines[] = code.split("\\r?\\n"); // newlines not included
|
||||
for (LineBreakpoint bp : bps) {
|
||||
//System.out.println("adding bp: " + bp.lineID());
|
||||
lines[bp.lineID().lineIdx()] += breakpointMarkerComment;
|
||||
}
|
||||
code = PApplet.join(lines, "\n");
|
||||
//System.out.println("new code: " + code);
|
||||
Base.saveFile(code, sourceFile);
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean handleSave(boolean immediately) {
|
||||
@@ -1862,6 +1793,7 @@ public class JavaEditor extends Editor {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Clear the console.
|
||||
*/
|
||||
@@ -1869,6 +1801,7 @@ public class JavaEditor extends Editor {
|
||||
console.clear();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Clear current text selection.
|
||||
*/
|
||||
@@ -1876,6 +1809,7 @@ public class JavaEditor extends Editor {
|
||||
setSelection(getCaretOffset(), getCaretOffset());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Select a line in the current tab.
|
||||
*
|
||||
@@ -1885,6 +1819,7 @@ public class JavaEditor extends Editor {
|
||||
setSelection(getLineStartOffset(lineIdx), getLineStopOffset(lineIdx));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the cursor to the start of a line.
|
||||
*
|
||||
@@ -1894,6 +1829,7 @@ public class JavaEditor extends Editor {
|
||||
setSelection(getLineStartOffset(lineIdx), getLineStartOffset(lineIdx));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the cursor to the end of a line.
|
||||
*
|
||||
@@ -1936,7 +1872,7 @@ public class JavaEditor extends Editor {
|
||||
* @return the mode object
|
||||
*/
|
||||
public JavaMode mode() {
|
||||
return dmode;
|
||||
return jmode;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2014,7 +1950,7 @@ public class JavaEditor extends Editor {
|
||||
if (dontRedisplay.isSelected()) {
|
||||
JavaMode.autoSavePromptEnabled = !dontRedisplay.isSelected();
|
||||
JavaMode.defaultAutoSaveEnabled = true;
|
||||
dmode.savePreferences();
|
||||
jmode.savePreferences();
|
||||
}
|
||||
autoSaveDialog.dispose();
|
||||
}
|
||||
@@ -2028,7 +1964,7 @@ public class JavaEditor extends Editor {
|
||||
if (dontRedisplay.isSelected()) {
|
||||
JavaMode.autoSavePromptEnabled = !dontRedisplay.isSelected();
|
||||
JavaMode.defaultAutoSaveEnabled = false;
|
||||
dmode.savePreferences();
|
||||
jmode.savePreferences();
|
||||
}
|
||||
autoSaveDialog.dispose();
|
||||
}
|
||||
@@ -2509,8 +2445,8 @@ public class JavaEditor extends Editor {
|
||||
|
||||
protected void applyPreferences() {
|
||||
super.applyPreferences();
|
||||
if (dmode != null) {
|
||||
dmode.loadPreferences();
|
||||
if (jmode != null) {
|
||||
jmode.loadPreferences();
|
||||
Base.log("Applying prefs");
|
||||
// trigger it once to refresh UI
|
||||
errorCheckerService.runManualErrorCheck();
|
||||
|
||||
@@ -29,8 +29,6 @@ import java.util.logging.Handler;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.swing.ImageIcon;
|
||||
|
||||
import processing.app.*;
|
||||
import processing.mode.java.runner.Runner;
|
||||
import processing.mode.java.tweak.SketchParser;
|
||||
@@ -48,7 +46,6 @@ public class JavaMode extends Mode {
|
||||
|
||||
initLogger();
|
||||
loadPreferences();
|
||||
loadIcons();
|
||||
}
|
||||
|
||||
|
||||
@@ -277,19 +274,15 @@ public class JavaMode extends Mode {
|
||||
}
|
||||
|
||||
|
||||
public ImageIcon classIcon, fieldIcon, methodIcon, localVarIcon;
|
||||
//ImageIcon classIcon, fieldIcon, methodIcon, localVarIcon;
|
||||
|
||||
protected void loadIcons(){
|
||||
String iconPath = getContentFile("data").getAbsolutePath() + File.separator + "icons";
|
||||
classIcon = new ImageIcon(iconPath + File.separator + "class_obj.png");
|
||||
methodIcon = new ImageIcon(iconPath + File.separator
|
||||
+ "methpub_obj.png");
|
||||
fieldIcon = new ImageIcon(iconPath + File.separator
|
||||
+ "field_protected_obj.png");
|
||||
localVarIcon = new ImageIcon(iconPath + File.separator
|
||||
+ "field_default_obj.png");
|
||||
// log("Icons loaded");
|
||||
}
|
||||
// protected void loadIcons() {
|
||||
// String iconPath = getContentFile("data").getAbsolutePath() + File.separator + "icons";
|
||||
// classIcon = new ImageIcon(iconPath + File.separator + "class_obj.png");
|
||||
// methodIcon = new ImageIcon(iconPath + File.separator + "methpub_obj.png");
|
||||
// fieldIcon = new ImageIcon(iconPath + File.separator + "field_protected_obj.png");
|
||||
// localVarIcon = new ImageIcon(iconPath + File.separator + "field_default_obj.png");
|
||||
// }
|
||||
|
||||
|
||||
static public volatile boolean errorCheckEnabled = true;
|
||||
|
||||
@@ -33,6 +33,7 @@ import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
|
||||
import javax.swing.DefaultListModel;
|
||||
import javax.swing.ImageIcon;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JLabel;
|
||||
@@ -50,6 +51,7 @@ import javax.swing.plaf.basic.BasicScrollBarUI;
|
||||
import javax.swing.text.BadLocationException;
|
||||
|
||||
import processing.app.Base;
|
||||
import processing.app.Mode;
|
||||
import processing.app.syntax.JEditTextArea;
|
||||
import processing.mode.java.JavaEditor;
|
||||
|
||||
@@ -91,6 +93,9 @@ public class CompletionPanel {
|
||||
|
||||
public static final int MOUSE_COMPLETION = 10, KEYBOARD_COMPLETION = 20;
|
||||
|
||||
ImageIcon classIcon, fieldIcon, methodIcon, localVarIcon;
|
||||
|
||||
|
||||
/**
|
||||
* Triggers the completion popup
|
||||
* @param textarea
|
||||
@@ -123,6 +128,12 @@ public class CompletionPanel {
|
||||
popupMenu.show(textarea, location.x, textarea.getBaseline(0, 0)
|
||||
+ location.y);
|
||||
//log("Suggestion shown: " + System.currentTimeMillis());
|
||||
|
||||
Mode mode = editor.getMode();
|
||||
classIcon = mode.loadIcon("theme/icon_class_obj.png");
|
||||
methodIcon = mode.loadIcon("theme/icon_methpub_obj.png");
|
||||
fieldIcon = mode.loadIcon("theme/icon_field_protected_obj.png");
|
||||
localVarIcon = mode.loadIcon("theme/icon_field_default_obj.png");
|
||||
}
|
||||
|
||||
private void styleScrollPane() {
|
||||
@@ -199,7 +210,7 @@ public class CompletionPanel {
|
||||
int maxHeight = 250;
|
||||
FontMetrics fm = textarea.getGraphics().getFontMetrics();
|
||||
float itemHeight = Math.max((fm.getHeight() + (fm.getDescent()) * 0.5f),
|
||||
editor.dmode.classIcon.getIconHeight() * 1.2f);
|
||||
classIcon.getIconHeight() * 1.2f);
|
||||
|
||||
if (horizontalScrollBarVisible)
|
||||
itemCount++;
|
||||
@@ -233,7 +244,7 @@ public class CompletionPanel {
|
||||
int w = Math.min((int) min, maxWidth);
|
||||
if(w == maxWidth)
|
||||
horizontalScrollBarVisible = true;
|
||||
w += editor.dmode.classIcon.getIconWidth(); // add icon width too!
|
||||
w += classIcon.getIconWidth(); // add icon width too!
|
||||
w += fm.stringWidth(" "); // a bit of offset
|
||||
//log("popup width " + w);
|
||||
return w; // popup menu width
|
||||
@@ -545,19 +556,19 @@ public class CompletionPanel {
|
||||
CompletionCandidate cc = (CompletionCandidate) value;
|
||||
switch (cc.getType()) {
|
||||
case CompletionCandidate.LOCAL_VAR:
|
||||
label.setIcon(editor.dmode.localVarIcon);
|
||||
label.setIcon(localVarIcon);
|
||||
break;
|
||||
case CompletionCandidate.LOCAL_FIELD:
|
||||
case CompletionCandidate.PREDEF_FIELD:
|
||||
label.setIcon(editor.dmode.fieldIcon);
|
||||
label.setIcon(fieldIcon);
|
||||
break;
|
||||
case CompletionCandidate.LOCAL_METHOD:
|
||||
case CompletionCandidate.PREDEF_METHOD:
|
||||
label.setIcon(editor.dmode.methodIcon);
|
||||
label.setIcon(methodIcon);
|
||||
break;
|
||||
case CompletionCandidate.LOCAL_CLASS:
|
||||
case CompletionCandidate.PREDEF_CLASS:
|
||||
label.setIcon(editor.dmode.classIcon);
|
||||
label.setIcon(classIcon);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -33,6 +33,7 @@ import java.util.List;
|
||||
|
||||
import javax.swing.BoxLayout;
|
||||
import javax.swing.Icon;
|
||||
import javax.swing.ImageIcon;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
@@ -55,6 +56,7 @@ import org.eclipse.jdt.core.dom.MethodDeclaration;
|
||||
import org.eclipse.jdt.core.dom.TypeDeclaration;
|
||||
import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
|
||||
|
||||
import processing.app.Mode;
|
||||
import processing.mode.java.JavaEditor;
|
||||
|
||||
|
||||
@@ -68,6 +70,8 @@ public class SketchOutline {
|
||||
protected JavaEditor editor;
|
||||
protected boolean internalSelection = false;
|
||||
|
||||
ImageIcon classIcon, fieldIcon, methodIcon;
|
||||
|
||||
|
||||
public SketchOutline(DefaultMutableTreeNode codeTree, ErrorCheckerService ecs) {
|
||||
errorCheckerService = ecs;
|
||||
@@ -77,6 +81,12 @@ public class SketchOutline {
|
||||
soNode = (DefaultMutableTreeNode) soNode.getChildAt(0);
|
||||
tempNode = soNode;
|
||||
soTree = new JTree(soNode);
|
||||
|
||||
Mode mode = editor.getMode();
|
||||
classIcon = mode.loadIcon("theme/icon_class_obj.png");
|
||||
methodIcon = mode.loadIcon("theme/icon_methpub_obj.png");
|
||||
fieldIcon = mode.loadIcon("theme/icon_field_protected_obj.png");
|
||||
|
||||
createGUI();
|
||||
}
|
||||
|
||||
@@ -386,11 +396,11 @@ public class SketchOutline {
|
||||
|
||||
int type = awrap.getNode().getParent().getNodeType();
|
||||
if (type == ASTNode.METHOD_DECLARATION) {
|
||||
return editor.dmode.methodIcon;
|
||||
return methodIcon;
|
||||
} else if (type == ASTNode.TYPE_DECLARATION) {
|
||||
return editor.dmode.classIcon;
|
||||
return classIcon;
|
||||
} else if (type == ASTNode.VARIABLE_DECLARATION_FRAGMENT) {
|
||||
return editor.dmode.fieldIcon;
|
||||
return fieldIcon;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user