diff --git a/pdex/src/processing/mode/experimental/DebugEditor.java b/pdex/src/processing/mode/experimental/DebugEditor.java index fc3d8ee6b..bf2f464ea 100755 --- a/pdex/src/processing/mode/experimental/DebugEditor.java +++ b/pdex/src/processing/mode/experimental/DebugEditor.java @@ -21,6 +21,7 @@ import static processing.mode.experimental.ExperimentalMode.log; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Color; +import java.awt.Component; import java.awt.EventQueue; import java.awt.Frame; import java.awt.event.ActionEvent; @@ -42,6 +43,7 @@ import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; +import javax.swing.SwingUtilities; import javax.swing.border.EtchedBorder; import javax.swing.table.TableModel; import javax.swing.text.Document; @@ -403,15 +405,36 @@ public class DebugEditor extends JavaEditor implements ActionListener { boolean debugToolbarShown = false; protected EditorToolbar javaToolbar, debugToolbar; + protected void switchToolbars(){ + final EditorToolbar nextToolbar; if(debugToolbarShown){ // switch to java + if(javaToolbar == null) + javaToolbar = createToolbar(); + nextToolbar = javaToolbar; + debugToolbarShown = false; + log("Switching to Java Mode Toolbar"); } else{ // switch to debug if(debugToolbar == null) debugToolbar = new DebugToolbar(this, getBase()); + nextToolbar = debugToolbar; + debugToolbarShown = true; + log("Switching to Debugger Toolbar"); } + + SwingUtilities.invokeLater(new Runnable() { + public void run() { + Box upper = (Box)splitPane.getComponent(0); + upper.remove(0); + upper.add(nextToolbar, 0); + upper.validate(); + nextToolbar.repaint(); + toolbar = nextToolbar; + } + }); } /** @@ -425,10 +448,9 @@ public class DebugEditor extends JavaEditor implements ActionListener { JCheckBoxMenuItem toggleDebugger = new JCheckBoxMenuItem("Show Debug Toolbar"); toggleDebugger.setSelected(false); - toggleDebugger.addActionListener(new ActionListener() { - + toggleDebugger.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - + switchToolbars(); } }); debugMenu.add(toggleDebugger); diff --git a/pdex/src/processing/mode/experimental/DebugToolbar.java b/pdex/src/processing/mode/experimental/DebugToolbar.java index 67af28774..c9616e179 100755 --- a/pdex/src/processing/mode/experimental/DebugToolbar.java +++ b/pdex/src/processing/mode/experimental/DebugToolbar.java @@ -68,7 +68,7 @@ public class DebugToolbar extends JavaToolbar { public DebugToolbar(Editor editor, Base base) { super(editor, base); } - public Image[][] loadImages() { + public Image[][] loadDebugImages() { int res = Toolkit.highResDisplay() ? 2 : 1; String suffix = null; @@ -91,16 +91,16 @@ public class DebugToolbar extends JavaToolbar { allButtons = mode.loadImage("theme/buttons-debug" + suffix); } } + + // The following three final fields were not accessible, so just copied the values here + // for the time being. TODO: inform Ben, make these fields public /** Width of each toolbar button. */ final int BUTTON_WIDTH = 27; - /** Height of each toolbar button. */ -// static final int BUTTON_HEIGHT = 32; - /** The amount of space between groups of buttons on the toolbar. */ - final int BUTTON_GAP = 5; /** Size (both width and height) of the buttons in the source image. */ final int BUTTON_IMAGE_SIZE = 33; int count = allButtons.getWidth(this) / BUTTON_WIDTH*res; final int GRID_SIZE = 32; + Image[][] buttonImages = new Image[count][3]; for (int i = 0; i < count; i++) { @@ -123,7 +123,7 @@ public class DebugToolbar extends JavaToolbar { */ @Override public void init() { - Image[][] images = loadImages(); + Image[][] images = loadDebugImages(); for (int idx = 0; idx < buttonSequence.length; idx++) { int id = buttonId(idx); addButton(getTitle(id, false), getTitle(id, true), images[idx], id == NEW || id == TOGGLE_BREAKPOINT);