diff --git a/build/shared/lib/languages/PDE.properties b/build/shared/lib/languages/PDE.properties index 4c26651a5..f59987600 100644 --- a/build/shared/lib/languages/PDE.properties +++ b/build/shared/lib/languages/PDE.properties @@ -67,9 +67,10 @@ menu.sketch.add_file = Add File... # | Debug | menu.debug = Debug menu.debug.enable = Enable Debugger +menu.debug.disable = Disable Debugger #menu.debug.show_debug_toolbar = Show Debug Toolbar -menu.debug.debug = Debug -menu.debug.stop = Stop +#menu.debug.debug = Debug +#menu.debug.stop = Stop # --- menu.debug.toggle_breakpoint = Toggle Breakpoint #menu.debug.list_breakpoints = List breakpoints @@ -86,7 +87,9 @@ menu.debug.continue = Continue #menu.debug.print_source_location = Print Source Location #menu.debug.print_threads = Print Threads # --- -menu.debug.variable_inspector = Variable Inspector +#menu.debug.variable_inspector = Variable Inspector +menu.debug.show_variables = Show Variables +menu.debug.hide_variables = Hide Variables #menu.debug.show_sketch_outline = Show Sketch Outline #menu.debug.show_tabs_list = Show Tabs List diff --git a/core/todo.txt b/core/todo.txt index 8213b7c53..2771e29bf 100644 --- a/core/todo.txt +++ b/core/todo.txt @@ -3,6 +3,8 @@ andres X Offscreen rendering broken in OpenGL renderers X https://github.com/processing/processing/issues/3292 +X Initial location of OpenGL window hides the title bar +X https://github.com/processing/processing/issues/2981 high priority @@ -49,6 +51,8 @@ _ implement external messages (moving the window) opengl +_ Quitting P3D sketch throws an error +_ https://github.com/processing/processing/issues/3293 _ Closing OpenGL sketch from the PDE doesn't stop java.exe process _ https://github.com/processing/processing/issues/2335 _ OpenGL sketches do not terminate, have to be killed diff --git a/java/src/processing/mode/java/JavaEditor.java b/java/src/processing/mode/java/JavaEditor.java index 97040ba21..500f41072 100644 --- a/java/src/processing/mode/java/JavaEditor.java +++ b/java/src/processing/mode/java/JavaEditor.java @@ -65,12 +65,16 @@ public class JavaEditor extends Editor { protected final String breakpointMarkerComment = " //<>//"; // breakpoint marker comment protected JMenu debugMenu; - JCheckBoxMenuItem enableDebug; +// JCheckBoxMenuItem enableDebug; // boolean debugEnabled; // JMenuItem enableDebug; + protected JMenuItem debugItem; protected Debugger debugger; + protected boolean debugEnabled; + protected VariableInspector inspector; + protected JMenuItem inspectorItem; // private EditorToolbar javaToolbar; // private DebugToolbar debugToolbar; @@ -1418,20 +1422,22 @@ public class JavaEditor extends Editor { // enableDebug = // Toolkit.newJCheckBoxMenuItem(Language.text("menu.debug.enable"), // KeyEvent.VK_D); - enableDebug = - Toolkit.newJCheckBoxMenuItem(Language.text("menu.debug.enable"), - KeyEvent.VK_D); +// enableDebug = +// Toolkit.newJCheckBoxMenuItem(Language.text("menu.debug.enable"), +// KeyEvent.VK_D); + debugItem = Toolkit.newJMenuItem(Language.text("menu.debug.enable"), 'D'); // enableDebug.setSelected(false); - enableDebug.addActionListener(new ActionListener() { + debugItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - updateDebugToggle(); +// updateDebugToggle(); + toggleDebug(); } }); // toggleDebugger.addChangeListener(new ChangeListener() { // public void stateChanged(ChangeEvent e) { // } // }); - debugMenu.add(enableDebug); + debugMenu.add(debugItem); debugMenu.addSeparator(); // item = Toolkit.newJMenuItemAlt(Language.text("menu.debug.debug"), KeyEvent.VK_R); @@ -1501,14 +1507,14 @@ public class JavaEditor extends Editor { debugMenu.add(item); item.setEnabled(false); - item = Toolkit.newJMenuItem(Language.text("menu.debug.variable_inspector"), 'Y'); - item.addActionListener(new ActionListener() { + inspectorItem = Toolkit.newJMenuItem(Language.text("menu.debug.show_variables"), 'Y'); + inspectorItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { toggleVariableInspector(); } }); - debugMenu.add(item); - item.setEnabled(false); + debugMenu.add(inspectorItem); + inspectorItem.setEnabled(false); /* item = new JMenuItem(Language.text("menu.debug.list_breakpoints")); @@ -1606,7 +1612,8 @@ public class JavaEditor extends Editor { protected boolean isDebuggerEnabled() { - return enableDebug.isSelected(); + //return enableDebug.isSelected(); + return debugEnabled; } @@ -2090,7 +2097,7 @@ public class JavaEditor extends Editor { protected void activateRun() { - enableDebug.setEnabled(false); + debugItem.setEnabled(false); // toolbar.activate(JavaToolbar.RUN); toolbar.activateRun(); } @@ -2108,7 +2115,7 @@ public class JavaEditor extends Editor { // } else { // toolbar.deactivate(JavaToolbar.RUN); toolbar.deactivateRun(); - enableDebug.setEnabled(true); + debugItem.setEnabled(true); // } } @@ -2145,17 +2152,24 @@ public class JavaEditor extends Editor { public void toggleDebug() { - enableDebug.setSelected(!enableDebug.isSelected()); - updateDebugToggle(); - } - - - public void updateDebugToggle() { - final boolean enabled = isDebuggerEnabled(); +// enableDebug.setSelected(!enableDebug.isSelected()); + debugEnabled = !debugEnabled; +// updateDebugToggle(); +// } +// +// +// public void updateDebugToggle() { +// final boolean enabled = isDebuggerEnabled(); rebuildToolbar(); + if (debugEnabled) { + debugItem.setText(Language.text("menu.debug.disable")); + } else { + debugItem.setText(Language.text("menu.debug.enable")); + } + // Hide the variable inspector if it's currently visible - if (!enabled && inspector.isVisible()) { + if (!debugEnabled && inspector.isVisible()) { toggleVariableInspector(); } /* @@ -2168,8 +2182,8 @@ public class JavaEditor extends Editor { } */ for (Component item : debugMenu.getMenuComponents()) { - if (item instanceof JMenuItem && item != enableDebug) { - ((JMenuItem) item).setEnabled(enabled); + if (item instanceof JMenuItem && item != debugItem) { + ((JMenuItem) item).setEnabled(debugEnabled); } } } @@ -2177,9 +2191,11 @@ public class JavaEditor extends Editor { public void toggleVariableInspector() { if (inspector.isVisible()) { + inspectorItem.setText(Language.text("menu.debug.show_variables")); inspector.setVisible(false); } else { // inspector.setFocusableWindowState(false); // to not get focus when set visible + inspectorItem.setText(Language.text("menu.debug.show_variables")); inspector.setVisible(true); // inspector.setFocusableWindowState(true); // allow to get focus again } diff --git a/java/src/processing/mode/java/VariableInspector.java b/java/src/processing/mode/java/VariableInspector.java index b8059ebc6..4c711fb1a 100644 --- a/java/src/processing/mode/java/VariableInspector.java +++ b/java/src/processing/mode/java/VariableInspector.java @@ -21,7 +21,6 @@ package processing.mode.java; import java.awt.*; -import java.awt.event.ActionEvent; import java.awt.image.BufferedImage; import java.io.File; import java.util.ArrayList; @@ -31,7 +30,6 @@ import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.*; -import javax.swing.border.EmptyBorder; import javax.swing.event.TreeExpansionEvent; import javax.swing.event.TreeExpansionListener; import javax.swing.table.TableColumn; @@ -103,7 +101,8 @@ public class VariableInspector extends JDialog { // https://developer.apple.com/library/mac/technotes/tn2007/tn2196.html#WINDOWS getRootPane().putClientProperty("Window.style", "small"); - // When clicking this window, keep the focus on the Editor window + // When clicking this window, keep the focus on the Editor window. + // Slightly awkward on OS X, but less weird than the Editor losing focus? setFocusableWindowState(false); //setUndecorated(true); @@ -111,7 +110,7 @@ public class VariableInspector extends JDialog { //setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); Box box = Box.createVerticalBox(); - box.add(createToolbar()); +// box.add(createToolbar()); box.add(createScrollPane()); getContentPane().add(box); pack(); @@ -132,6 +131,7 @@ public class VariableInspector extends JDialog { } + /* Container createToolbar() { final Mode mode = editor.getMode(); Box box = Box.createHorizontalBox(); @@ -192,6 +192,7 @@ public class VariableInspector extends JDialog { box.setMaximumSize(new Dimension(getMaximumSize().width, getPreferredSize().height)); return box; } + */ Container createScrollPane() {