From 43f216ecc864323ea457a3a9e25c90308a3ac1aa Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Wed, 28 Jan 2015 20:05:16 -0500 Subject: [PATCH] working on new toolbar --- app/src/processing/app/EditorButton.java | 12 +-- app/src/processing/app/EditorToolbar.java | 88 +++++++++++++++---- app/src/processing/app/Mode.java | 7 +- .../src/processing/mode/java/JavaToolbar.java | 13 +++ 4 files changed, 98 insertions(+), 22 deletions(-) diff --git a/app/src/processing/app/EditorButton.java b/app/src/processing/app/EditorButton.java index a2c43f0e2..62bd09597 100644 --- a/app/src/processing/app/EditorButton.java +++ b/app/src/processing/app/EditorButton.java @@ -144,17 +144,19 @@ implements MouseListener, MouseMotionListener, ActionListener { @Override public void mousePressed(MouseEvent e) { - if (isEnabled()) { - pressed = true; - repaint(); - } + setPressed(true); } @Override public void mouseReleased(MouseEvent e) { + setPressed(false); + } + + + public void setPressed(boolean pressed) { if (isEnabled()) { - pressed = false; + this.pressed = pressed; repaint(); } } diff --git a/app/src/processing/app/EditorToolbar.java b/app/src/processing/app/EditorToolbar.java index 43345733a..62add31bc 100644 --- a/app/src/processing/app/EditorToolbar.java +++ b/app/src/processing/app/EditorToolbar.java @@ -23,21 +23,27 @@ package processing.app; -//import java.awt.event.ActionEvent; +import java.awt.Component; +import java.awt.event.ActionEvent; +import javax.swing.Box; +import javax.swing.JLabel; import javax.swing.JPanel; /** * Run/Stop button plus Mode selection */ -public class EditorToolbar extends JPanel { +abstract public class EditorToolbar extends JPanel { protected Editor editor; protected Base base; protected Mode mode; - EditorButton runButton; - EditorButton stopButton; + protected EditorButton runButton; + protected EditorButton stopButton; + + protected Box box; + protected JLabel label; public EditorToolbar(Editor editor) { @@ -45,19 +51,65 @@ public class EditorToolbar extends JPanel { base = editor.getBase(); mode = editor.getMode(); -// runButton = new EditorButton() { -// -// @Override -// public void actionPerformed(ActionEvent e) { -// // TODO Auto-generated method stub -// -// } -// }; + runButton = new EditorButton(mode, + "/lib/toolbar/run", + Language.text("toolbar.run"), + Language.text("toolbar.present")) { + + @Override + public void actionPerformed(ActionEvent e) { + handleRun(); + } + }; + + stopButton = new EditorButton(mode, + "/lib/toolbar/stop", + Language.text("toolbar.stop")) { + + @Override + public void actionPerformed(ActionEvent e) { + handleStop(); + } + }; + + box = Box.createHorizontalBox(); + box.add(runButton); + box.add(label = new JLabel()); + box.add(Box.createHorizontalGlue()); + + Component items = createModeButtons(); + if (items != null) { + box.add(items); + } + box.add(createModeSelector()); + + add(box); + } + + + public Component createModeButtons() { + return null; + } + + + public Component createModeSelector() { + return null; + } + + + protected void swapButton(EditorButton replacement) { + box.remove(0); + box.add(replacement, 0); + box.revalidate(); + box.repaint(); // may be needed } public void activateRun() { - + //runButton.setPressed(true); +// Rectangle bounds = runButton.getBounds(); +// remove(runButton); + swapButton(stopButton); } @@ -67,13 +119,17 @@ public class EditorToolbar extends JPanel { public void activateStop() { - } - public void deactivateStop() { - + public void deactivateStop() { + swapButton(runButton); } + + + abstract public void handleRun(); + + abstract public void handleStop(); } //public abstract class EditorToolbar extends JComponent implements MouseInputListener, KeyListener { // diff --git a/app/src/processing/app/Mode.java b/app/src/processing/app/Mode.java index 6d7bd8260..4655ee720 100644 --- a/app/src/processing/app/Mode.java +++ b/app/src/processing/app/Mode.java @@ -1214,10 +1214,14 @@ public abstract class Mode { /** - * Get an ImageIcon object from the mode folder. + * Get an ImageIcon object from the Mode folder. + * Or when prefixed with /lib, load it from the main /lib folder. * @since 3.0a6 */ public ImageIcon loadIcon(String filename) { + if (filename.startsWith("/lib/")) { + return Toolkit.getLibIcon(filename.substring(5)); + } File file = new File(folder, filename); if (!file.exists()) { // EditorConsole.systemErr.println("file does not exist: " + file.getAbsolutePath()); @@ -1230,6 +1234,7 @@ public abstract class Mode { /** * Get an image object from the mode folder. + * Or when prefixed with /lib, load it from the main /lib folder. */ public Image loadImage(String filename) { ImageIcon icon = loadIcon(filename); diff --git a/java/src/processing/mode/java/JavaToolbar.java b/java/src/processing/mode/java/JavaToolbar.java index 8b5b6a51a..0cd56b695 100644 --- a/java/src/processing/mode/java/JavaToolbar.java +++ b/java/src/processing/mode/java/JavaToolbar.java @@ -38,6 +38,19 @@ public class JavaToolbar extends EditorToolbar { public JavaToolbar(Editor editor) { super(editor); } + + + @Override + public void handleRun() { + // TODO Auto-generated method stub + + } + + @Override + public void handleStop() { + // TODO Auto-generated method stub + + } }