mirror of
https://github.com/processing/processing4.git
synced 2026-02-02 13:21:07 +01:00
fixing up debug tray/toolbar behavior, enable/disable debug, import lib menu fixes
This commit is contained in:
@@ -176,6 +176,8 @@ public class DebugTray extends JFrame {
|
||||
box.add(Box.createHorizontalGlue());
|
||||
box.setBorder(new EmptyBorder(GAP, GAP, GAP, GAP));
|
||||
|
||||
// prevent the toolbar from getting taller than its default
|
||||
box.setMaximumSize(new Dimension(getMaximumSize().width, getPreferredSize().height));
|
||||
return box;
|
||||
}
|
||||
|
||||
@@ -256,32 +258,49 @@ public class DebugTray extends JFrame {
|
||||
class EditorFollower implements ComponentListener {
|
||||
|
||||
@Override
|
||||
public void componentShown(ComponentEvent e) {
|
||||
setVisible(true);
|
||||
public void componentShown(ComponentEvent e) {
|
||||
if (editor.isDebuggerEnabled()) {
|
||||
// updateBounds();
|
||||
setVisible(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void componentHidden(ComponentEvent e) {
|
||||
setVisible(false);
|
||||
public void componentHidden(ComponentEvent e) {
|
||||
if (isVisible()) {
|
||||
setVisible(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void componentResized(ComponentEvent e) {
|
||||
updateBounds(e);
|
||||
if (isVisible()) {
|
||||
updateBounds();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void componentMoved(ComponentEvent e) {
|
||||
updateBounds(e);
|
||||
if (isVisible()) {
|
||||
updateBounds();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateBounds(ComponentEvent e) {
|
||||
// System.out.println(e);
|
||||
setBounds(editor.getX() + editor.getWidth(),
|
||||
editor.getY() + VERTICAL_OFFSET,
|
||||
getPreferredSize().width,
|
||||
editor.getHeight() - VERTICAL_OFFSET*2);
|
||||
}
|
||||
|
||||
|
||||
private void updateBounds() {
|
||||
setBounds(editor.getX() + editor.getWidth(),
|
||||
editor.getY() + VERTICAL_OFFSET,
|
||||
getPreferredSize().width,
|
||||
editor.getHeight() - VERTICAL_OFFSET*2);
|
||||
}
|
||||
|
||||
|
||||
public void setVisible(boolean visible) {
|
||||
if (visible) {
|
||||
updateBounds();
|
||||
}
|
||||
super.setVisible(visible);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ public class JavaEditor extends Editor {
|
||||
protected final String breakpointMarkerComment = " //<>//"; // breakpoint marker comment
|
||||
|
||||
protected JMenu debugMenu;
|
||||
JCheckBoxMenuItem toggleDebugger;
|
||||
JCheckBoxMenuItem enableDebug;
|
||||
|
||||
protected Debugger debugger;
|
||||
protected DebugTray tray;
|
||||
@@ -191,10 +191,15 @@ public class JavaEditor extends Editor {
|
||||
JMenuItem runItem = Toolkit.newJMenuItem(JavaToolbar.getTitle(JavaToolbar.RUN, false), 'R');
|
||||
runItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
handleRun();
|
||||
if (isDebuggerEnabled()) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Debug' menu item");
|
||||
debugger.startDebug();
|
||||
} else {
|
||||
handleRun();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
JMenuItem presentItem = Toolkit.newJMenuItemShift(JavaToolbar.getTitle(JavaToolbar.RUN, true), 'R');
|
||||
presentItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
@@ -205,7 +210,12 @@ public class JavaEditor extends Editor {
|
||||
JMenuItem stopItem = new JMenuItem(JavaToolbar.getTitle(JavaToolbar.STOP, false));
|
||||
stopItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
handleStop();
|
||||
if (isDebuggerEnabled()) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Stop' menu item");
|
||||
debugger.stopDebug();
|
||||
} else {
|
||||
handleStop();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1155,26 +1165,6 @@ public class JavaEditor extends Editor {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Deactivate the Run button. This is called by Runner to notify that the
|
||||
* sketch has stopped running, usually in response to an error (or maybe
|
||||
* the sketch completing and exiting?) Tools should not call this function.
|
||||
* To initiate a "stop" action, call handleStop() instead.
|
||||
*/
|
||||
public void deactivateRun() {
|
||||
// if (toolbar instanceof DebugToolbar){
|
||||
// toolbar.deactivate(DebugToolbar.RUN);
|
||||
// } else {
|
||||
toolbar.deactivate(JavaToolbar.RUN);
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
// public void deactivateExport() {
|
||||
// toolbar.deactivate(JavaToolbar.EXPORT);
|
||||
// }
|
||||
|
||||
|
||||
public void internalCloseRunner() {
|
||||
// Added temporarily to dump error log. TODO: Remove this later [mk29]
|
||||
if (JavaMode.errorLogsEnabled) {
|
||||
@@ -1387,24 +1377,30 @@ public class JavaEditor extends Editor {
|
||||
debugMenu = new JMenu(Language.text("menu.debug"));
|
||||
JMenuItem item;
|
||||
|
||||
toggleDebugger = new JCheckBoxMenuItem("Use the Debugger");
|
||||
// "use the debugger" sounds too colloquial, and "enable" sounds too technical
|
||||
enableDebug = Toolkit.newJCheckBoxMenuItem("Enable Debugger", KeyEvent.VK_D);
|
||||
//new JCheckBoxMenuItem(Language.text("menu.debug.show_debug_toolbar"));
|
||||
toggleDebugger.setSelected(false);
|
||||
toggleDebugger.addActionListener(new ActionListener() {
|
||||
enableDebug.setSelected(false);
|
||||
enableDebug.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
//switchToolbars();
|
||||
updateDebugToggle();
|
||||
}
|
||||
});
|
||||
debugMenu.add(toggleDebugger);
|
||||
// toggleDebugger.addChangeListener(new ChangeListener() {
|
||||
// public void stateChanged(ChangeEvent e) {
|
||||
// }
|
||||
// });
|
||||
debugMenu.add(enableDebug);
|
||||
debugMenu.addSeparator();
|
||||
|
||||
item = Toolkit.newJMenuItemAlt(Language.text("menu.debug.debug"), KeyEvent.VK_R);
|
||||
item.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Debug' menu item");
|
||||
debugger.startDebug();
|
||||
}
|
||||
});
|
||||
debugMenu.add(item);
|
||||
// item = Toolkit.newJMenuItemAlt(Language.text("menu.debug.debug"), KeyEvent.VK_R);
|
||||
// item.addActionListener(new ActionListener() {
|
||||
// public void actionPerformed(ActionEvent e) {
|
||||
// Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Debug' menu item");
|
||||
// debugger.startDebug();
|
||||
// }
|
||||
// });
|
||||
// debugMenu.add(item);
|
||||
|
||||
item = Toolkit.newJMenuItem(Language.text("menu.debug.continue"), KeyEvent.VK_U);
|
||||
item.addActionListener(new ActionListener() {
|
||||
@@ -1415,37 +1411,14 @@ public class JavaEditor extends Editor {
|
||||
});
|
||||
debugMenu.add(item);
|
||||
|
||||
item = new JMenuItem(Language.text("menu.debug.stop"));
|
||||
item.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Stop' menu item");
|
||||
debugger.stopDebug();
|
||||
}
|
||||
});
|
||||
debugMenu.add(item);
|
||||
|
||||
debugMenu.addSeparator();
|
||||
|
||||
item =
|
||||
Toolkit.newJMenuItem(Language.text("menu.debug.toggle_breakpoint"), KeyEvent.VK_B);
|
||||
item.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Toggle Breakpoint' menu item");
|
||||
debugger.toggleBreakpoint();
|
||||
}
|
||||
});
|
||||
debugMenu.add(item);
|
||||
|
||||
item = new JMenuItem(Language.text("menu.debug.list_breakpoints"));
|
||||
item.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'List Breakpoints' menu item");
|
||||
debugger.listBreakpoints();
|
||||
}
|
||||
});
|
||||
debugMenu.add(item);
|
||||
|
||||
debugMenu.addSeparator();
|
||||
// item = new JMenuItem(Language.text("menu.debug.stop"));
|
||||
// item.addActionListener(new ActionListener() {
|
||||
// public void actionPerformed(ActionEvent e) {
|
||||
// Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Stop' menu item");
|
||||
// debugger.stopDebug();
|
||||
// }
|
||||
// });
|
||||
// debugMenu.add(item);
|
||||
|
||||
item = Toolkit.newJMenuItem(Language.text("menu.debug.step"), KeyEvent.VK_J);
|
||||
item.addActionListener(new ActionListener() {
|
||||
@@ -1476,6 +1449,27 @@ public class JavaEditor extends Editor {
|
||||
|
||||
debugMenu.addSeparator();
|
||||
|
||||
item =
|
||||
Toolkit.newJMenuItem(Language.text("menu.debug.toggle_breakpoint"), KeyEvent.VK_B);
|
||||
item.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Toggle Breakpoint' menu item");
|
||||
debugger.toggleBreakpoint();
|
||||
}
|
||||
});
|
||||
debugMenu.add(item);
|
||||
|
||||
item = new JMenuItem(Language.text("menu.debug.list_breakpoints"));
|
||||
item.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'List Breakpoints' menu item");
|
||||
debugger.listBreakpoints();
|
||||
}
|
||||
});
|
||||
debugMenu.add(item);
|
||||
|
||||
debugMenu.addSeparator();
|
||||
|
||||
item = new JMenuItem(Language.text("menu.debug.print_stack_trace"));
|
||||
item.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
@@ -1523,14 +1517,14 @@ public class JavaEditor extends Editor {
|
||||
|
||||
debugMenu.addSeparator();
|
||||
|
||||
item = Toolkit.newJMenuItem(Language.text("menu.debug.toggle_variable_inspector"), KeyEvent.VK_I);
|
||||
item.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Toggle Variable Inspector' menu item");
|
||||
toggleVariableInspector();
|
||||
}
|
||||
});
|
||||
debugMenu.add(item);
|
||||
// item = Toolkit.newJMenuItem(Language.text("menu.debug.toggle_variable_inspector"), KeyEvent.VK_I);
|
||||
// item.addActionListener(new ActionListener() {
|
||||
// public void actionPerformed(ActionEvent e) {
|
||||
// Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Toggle Variable Inspector' menu item");
|
||||
// toggleVariableInspector();
|
||||
// }
|
||||
// });
|
||||
// debugMenu.add(item);
|
||||
|
||||
item = Toolkit.newJMenuItem(Language.text("menu.debug.show_sketch_outline"), KeyEvent.VK_L);
|
||||
item.addActionListener(new ActionListener() {
|
||||
@@ -1552,6 +1546,11 @@ public class JavaEditor extends Editor {
|
||||
|
||||
return debugMenu;
|
||||
}
|
||||
|
||||
|
||||
protected boolean isDebuggerEnabled() {
|
||||
return enableDebug.isSelected();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@@ -1946,8 +1945,25 @@ public class JavaEditor extends Editor {
|
||||
|
||||
|
||||
protected void activateRun() {
|
||||
enableDebug.setEnabled(false);
|
||||
toolbar.activate(JavaToolbar.RUN);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Deactivate the Run button. This is called by Runner to notify that the
|
||||
* sketch has stopped running, usually in response to an error (or maybe
|
||||
* the sketch completing and exiting?) Tools should not call this function.
|
||||
* To initiate a "stop" action, call handleStop() instead.
|
||||
*/
|
||||
public void deactivateRun() {
|
||||
// if (toolbar instanceof DebugToolbar){
|
||||
// toolbar.deactivate(DebugToolbar.RUN);
|
||||
// } else {
|
||||
toolbar.deactivate(JavaToolbar.RUN);
|
||||
enableDebug.setEnabled(true);
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
protected void activateDebug() {
|
||||
@@ -1981,32 +1997,49 @@ public class JavaEditor extends Editor {
|
||||
}
|
||||
|
||||
|
||||
public void showVariableInspector() {
|
||||
tray.setVisible(true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set visibility of the variable inspector window.
|
||||
* @param visible true to set the variable inspector visible,
|
||||
* false for invisible.
|
||||
*/
|
||||
public void showVariableInspector(boolean visible) {
|
||||
tray.setVisible(visible);
|
||||
}
|
||||
|
||||
|
||||
public void hideVariableInspector() {
|
||||
tray.setVisible(true);
|
||||
}
|
||||
|
||||
|
||||
/** Toggle visibility of the variable inspector window. */
|
||||
public void toggleVariableInspector() {
|
||||
tray.setFocusableWindowState(false); // to not get focus when set visible
|
||||
tray.setVisible(!tray.isVisible());
|
||||
tray.setFocusableWindowState(true); // allow to get focus again
|
||||
public void updateDebugToggle() {
|
||||
final boolean enabled = enableDebug.isSelected();
|
||||
if (enabled) {
|
||||
tray.setFocusableWindowState(false); // to not get focus when set visible
|
||||
tray.setVisible(true);
|
||||
tray.setFocusableWindowState(true); // allow to get focus again
|
||||
} else {
|
||||
tray.setVisible(false);
|
||||
}
|
||||
for (Component item : debugMenu.getMenuComponents()) {
|
||||
if (item instanceof JMenuItem && item != enableDebug) {
|
||||
((JMenuItem) item).setEnabled(enabled);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// public void showVariableInspector() {
|
||||
// tray.setVisible(true);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * Set visibility of the variable inspector window.
|
||||
// * @param visible true to set the variable inspector visible,
|
||||
// * false for invisible.
|
||||
// */
|
||||
// public void showVariableInspector(boolean visible) {
|
||||
// tray.setVisible(visible);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// public void hideVariableInspector() {
|
||||
// tray.setVisible(true);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// /** Toggle visibility of the variable inspector window. */
|
||||
// public void toggleVariableInspector() {
|
||||
// tray.setFocusableWindowState(false); // to not get focus when set visible
|
||||
// tray.setVisible(!tray.isVisible());
|
||||
// tray.setFocusableWindowState(true); // allow to get focus again
|
||||
// }
|
||||
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user