mirror of
https://github.com/processing/processing4.git
synced 2026-06-16 04:26:26 +02:00
190 lines
4.9 KiB
Java
190 lines
4.9 KiB
Java
/*
|
|
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.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;
|
|
import processing.mode.java.debug.Debugger;
|
|
|
|
|
|
public class JavaToolbar extends EditorToolbar {
|
|
JavaEditor jeditor;
|
|
|
|
EditorButton stepButton;
|
|
EditorButton continueButton;
|
|
|
|
|
|
public JavaToolbar(Editor editor) {
|
|
super(editor);
|
|
jeditor = (JavaEditor) editor;
|
|
}
|
|
|
|
|
|
/**
|
|
* Check if 'debugger' is available and enabled.
|
|
*/
|
|
private boolean isDebuggerArmed() {
|
|
// 'jeditor' not ready yet because this is called by super()
|
|
// 'debugger' also null during init
|
|
if (jeditor == null) {
|
|
return false;
|
|
}
|
|
return jeditor.isDebuggerEnabled();
|
|
}
|
|
|
|
|
|
@Override
|
|
public List<EditorButton> createButtons() {
|
|
final boolean debug = isDebuggerArmed();
|
|
|
|
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) {
|
|
Debugger d = jeditor.getDebugger();
|
|
|
|
final int modifiers = e.getModifiers() &
|
|
(ActionEvent.SHIFT_MASK | ActionEvent.ALT_MASK);
|
|
if (modifiers == 0) {
|
|
d.stepOver();
|
|
} else if ((modifiers & ActionEvent.SHIFT_MASK) != 0) {
|
|
d.stepInto();
|
|
} else if ((modifiers & ActionEvent.ALT_MASK) != 0) {
|
|
d.stepOut();
|
|
}
|
|
}
|
|
};
|
|
outgoing.add(stepButton);
|
|
|
|
continueButton = new EditorButton(this,
|
|
"/lib/toolbar/continue",
|
|
Language.text("menu.debug.continue")) {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
//jeditor.handleContinue();
|
|
jeditor.getDebugger().continueDebug();
|
|
}
|
|
};
|
|
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 (isDebuggerArmed()) {
|
|
debugButton.setSelected(true);
|
|
}
|
|
box.add(debugButton);
|
|
addGap(box);
|
|
}
|
|
|
|
|
|
@Override
|
|
public void handleRun(int modifiers) {
|
|
boolean shift = (modifiers & ActionEvent.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();
|
|
}
|
|
}
|