/* Part of the Processing project - http://processing.org Copyright (c) 2013-15 The Processing Foundation Copyright (c) 2010-13 Ben Fry and Casey Reas This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package processing.mode.java; import java.awt.event.ActionEvent; import java.awt.event.InputEvent; import java.util.ArrayList; import java.util.List; import javax.swing.Box; import javax.swing.JLabel; import processing.app.Language; import processing.app.ui.Editor; import processing.app.ui.EditorButton; import processing.app.ui.EditorToolbar; 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; } @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); List<EditorButton> outgoing = new ArrayList<>(); final String runText = debug ? Language.text("toolbar.debug") : Language.text("toolbar.run"); runButton = new EditorButton(this, "/lib/toolbar/run", runText, Language.text("toolbar.present")) { @Override public void actionPerformed(ActionEvent e) { handleRun(e.getModifiers()); } }; outgoing.add(runButton); if (debug) { stepButton = new EditorButton(this, "/lib/toolbar/step", Language.text("menu.debug.step"), Language.text("menu.debug.step_into"), Language.text("menu.debug.step_out")) { @Override public void actionPerformed(ActionEvent e) { final int mask = ActionEvent.SHIFT_MASK | ActionEvent.ALT_MASK; jeditor.handleStep(e.getModifiers() & mask); } }; outgoing.add(stepButton); continueButton = new EditorButton(this, "/lib/toolbar/continue", Language.text("menu.debug.continue")) { @Override public void actionPerformed(ActionEvent e) { jeditor.handleContinue(); } }; outgoing.add(continueButton); } stopButton = new EditorButton(this, "/lib/toolbar/stop", Language.text("toolbar.stop")) { @Override public void actionPerformed(ActionEvent e) { handleStop(); } }; outgoing.add(stopButton); return outgoing; } @Override public void addModeButtons(Box box, JLabel label) { EditorButton debugButton = new EditorButton(this, "/lib/toolbar/debug", Language.text("toolbar.debug")) { @Override public void actionPerformed(ActionEvent e) { jeditor.toggleDebug(); } }; if (((JavaEditor) editor).isDebuggerEnabled()) { debugButton.setSelected(true); } // debugButton.setRolloverLabel(label); box.add(debugButton); addGap(box); } @Override public void handleRun(int modifiers) { boolean shift = (modifiers & InputEvent.SHIFT_MASK) != 0; if (shift) { jeditor.handlePresent(); } else { jeditor.handleRun(); } } @Override public void handleStop() { jeditor.handleStop(); } public void activateContinue() { continueButton.setSelected(true); repaint(); } protected void deactivateContinue() { continueButton.setSelected(false); repaint(); } protected void activateStep() { stepButton.setSelected(true); repaint(); } protected void deactivateStep() { stepButton.setSelected(false); repaint(); } }