diff --git a/app/src/processing/app/ui/Editor.java b/app/src/processing/app/ui/Editor.java index 0dff258db..41585683d 100644 --- a/app/src/processing/app/ui/Editor.java +++ b/app/src/processing/app/ui/Editor.java @@ -300,6 +300,8 @@ public abstract class Editor extends JFrame implements RunnerListener { } }); + textarea.addKeyListener(toolbar); + contentPain.setTransferHandler(new FileDropHandler()); // Finish preparing Editor (formerly found in Base) diff --git a/app/src/processing/app/ui/EditorButton.java b/app/src/processing/app/ui/EditorButton.java index c424dd2f1..b142e4963 100644 --- a/app/src/processing/app/ui/EditorButton.java +++ b/app/src/processing/app/ui/EditorButton.java @@ -42,7 +42,7 @@ implements MouseListener, MouseMotionListener, ActionListener { protected boolean pressed; protected boolean selected; protected boolean rollover; - protected JLabel rolloverLabel; +// protected JLabel rolloverLabel; protected boolean shift; protected Image enabledImage; @@ -53,27 +53,30 @@ implements MouseListener, MouseMotionListener, ActionListener { protected Image gradient; - protected Mode mode; + protected EditorToolbar toolbar; +// protected Mode mode; - public EditorButton(Mode mode, String name, String title) { - this(mode, name, title, title, title); + public EditorButton(EditorToolbar parent, String name, String title) { + this(parent, name, title, title, title); } - public EditorButton(Mode mode, String name, + public EditorButton(EditorToolbar parent, String name, String title, String titleShift) { - this(mode, name, title, titleShift, title); + this(parent, name, title, titleShift, title); } - public EditorButton(Mode mode, String name, + public EditorButton(EditorToolbar parent, String name, String title, String titleShift, String titleAlt) { - this.mode = mode; + this.toolbar = parent; this.title = title; this.titleShift = titleShift; this.titleAlt = titleAlt; + Mode mode = toolbar.mode; + final int res = Toolkit.highResDisplay() ? 2 : 1; disabledImage = mode.loadImage(name + "-disabled-" + res + "x.png"); enabledImage = mode.loadImage(name + "-enabled-" + res + "x.png"); @@ -138,9 +141,9 @@ implements MouseListener, MouseMotionListener, ActionListener { // } - public void setReverse() { - gradient = mode.makeGradient("reversed", DIM, DIM); - } +// public void setReverse() { +// gradient = mode.makeGradient("reversed", DIM, DIM); +// } // public void setGradient(Image gradient) { @@ -148,9 +151,9 @@ implements MouseListener, MouseMotionListener, ActionListener { // } - public void setRolloverLabel(JLabel label) { - rolloverLabel = label; - } +// public void setRolloverLabel(JLabel label) { +// rolloverLabel = label; +// } @Override @@ -200,9 +203,37 @@ implements MouseListener, MouseMotionListener, ActionListener { } + /* @Override - public void mouseEntered(MouseEvent e) { - rollover = true; + public void keyTyped(KeyEvent e) { } + + + @Override + public void keyReleased(KeyEvent e) { + updateRollover(e); + } + + + @Override + public void keyPressed(KeyEvent e) { + System.out.println(e); + updateRollover(e); + } + */ + + + public String getRolloverText(InputEvent e) { + if (e.isShiftDown()) { + return titleShift; + } else if (e.isAltDown()) { + return titleAlt; + } + return title; + } + + + /* + public void updateRollover(InputEvent e) { if (rolloverLabel != null) { if (e.isShiftDown()) { rolloverLabel.setText(titleShift); @@ -212,17 +243,31 @@ implements MouseListener, MouseMotionListener, ActionListener { rolloverLabel.setText(title); } } + } + */ + + + @Override + public void mouseEntered(MouseEvent e) { + toolbar.setRollover(this, e); + /* + rollover = true; + updateRollover(e); repaint(); + */ } @Override public void mouseExited(MouseEvent e) { + toolbar.setRollover(null, e); + /* rollover = false; if (rolloverLabel != null) { rolloverLabel.setText(""); } repaint(); + */ } diff --git a/app/src/processing/app/ui/EditorToolbar.java b/app/src/processing/app/ui/EditorToolbar.java index d015da1ba..0af6c8a4c 100644 --- a/app/src/processing/app/ui/EditorToolbar.java +++ b/app/src/processing/app/ui/EditorToolbar.java @@ -49,7 +49,7 @@ import processing.app.Mode; /** * Run/Stop button plus Mode selection */ -abstract public class EditorToolbar extends JPanel { +abstract public class EditorToolbar extends JPanel implements KeyListener { // haven't decided how to handle this/how to make public/consistency // for components/does it live in theme.txt static final int HIGH = 53; @@ -64,10 +64,11 @@ abstract public class EditorToolbar extends JPanel { protected EditorButton runButton; protected EditorButton stopButton; -// protected EditorButton currentButton; + + protected EditorButton rolloverButton; + protected JLabel rolloverLabel; protected Box box; - protected JLabel label; protected Image gradient; @@ -91,28 +92,27 @@ abstract public class EditorToolbar extends JPanel { box = Box.createHorizontalBox(); box.add(Box.createHorizontalStrut(Editor.LEFT_GUTTER)); - label = new JLabel(); - label.setFont(mode.getFont("toolbar.rollover.font")); - label.setForeground(mode.getColor("toolbar.rollover.color")); + rolloverLabel = new JLabel(); + rolloverLabel.setFont(mode.getFont("toolbar.rollover.font")); + rolloverLabel.setForeground(mode.getColor("toolbar.rollover.color")); for (EditorButton button : buttons) { box.add(button); box.add(Box.createHorizontalStrut(GAP)); - button.setRolloverLabel(label); +// registerButton(button); } // // remove the last gap // box.remove(box.getComponentCount() - 1); // box.add(Box.createHorizontalStrut(LABEL_GAP)); - box.add(label); + box.add(rolloverLabel); // currentButton = runButton; - // runButton.setRolloverLabel(label); // stopButton.setRolloverLabel(label); box.add(Box.createHorizontalGlue()); - addModeButtons(box, label); + addModeButtons(box, rolloverLabel); // Component items = createModeButtons(); // if (items != null) { // box.add(items); @@ -126,6 +126,12 @@ abstract public class EditorToolbar extends JPanel { } +// public void registerButton(EditorButton button) { + //button.setRolloverLabel(rolloverLabel); + //editor.getTextArea().addKeyListener(button); +// } + + // public void setReverse(EditorButton button) { // button.setGradient(reverseGradient); // } @@ -143,7 +149,7 @@ abstract public class EditorToolbar extends JPanel { public List createButtons() { - runButton = new EditorButton(mode, + runButton = new EditorButton(this, "/lib/toolbar/run", Language.text("toolbar.run"), Language.text("toolbar.present")) { @@ -153,7 +159,7 @@ abstract public class EditorToolbar extends JPanel { } }; - stopButton = new EditorButton(mode, + stopButton = new EditorButton(this, "/lib/toolbar/stop", Language.text("toolbar.stop")) { @Override @@ -220,6 +226,41 @@ abstract public class EditorToolbar extends JPanel { abstract public void handleStop(); + void setRollover(EditorButton button, InputEvent e) { + rolloverButton = button; +// if (rolloverButton != null) { + updateRollover(e); +// } else { +// rolloverLabel.setText(""); +// } + } + + + void updateRollover(InputEvent e) { + if (rolloverButton != null) { + rolloverLabel.setText(rolloverButton.getRolloverText(e)); + } else { + rolloverLabel.setText(""); + } + } + + + @Override + public void keyTyped(KeyEvent e) { } + + + @Override + public void keyReleased(KeyEvent e) { + updateRollover(e); + } + + + @Override + public void keyPressed(KeyEvent e) { + updateRollover(e); + } + + public Dimension getPreferredSize() { return new Dimension(super.getPreferredSize().width, HIGH); } diff --git a/java/src/processing/mode/java/JavaToolbar.java b/java/src/processing/mode/java/JavaToolbar.java index d3fbad831..6ac83ca88 100644 --- a/java/src/processing/mode/java/JavaToolbar.java +++ b/java/src/processing/mode/java/JavaToolbar.java @@ -60,7 +60,7 @@ public class JavaToolbar extends EditorToolbar { final String runText = debug ? Language.text("toolbar.debug") : Language.text("toolbar.run"); - runButton = new EditorButton(mode, + runButton = new EditorButton(this, "/lib/toolbar/run", runText, Language.text("toolbar.present")) { @@ -72,7 +72,7 @@ public class JavaToolbar extends EditorToolbar { outgoing.add(runButton); if (debug) { - stepButton = new EditorButton(mode, + stepButton = new EditorButton(this, "/lib/toolbar/step", Language.text("menu.debug.step"), Language.text("menu.debug.step_into"), @@ -85,7 +85,7 @@ public class JavaToolbar extends EditorToolbar { }; outgoing.add(stepButton); - continueButton = new EditorButton(mode, + continueButton = new EditorButton(this, "/lib/toolbar/continue", Language.text("menu.debug.continue")) { @Override @@ -96,7 +96,7 @@ public class JavaToolbar extends EditorToolbar { outgoing.add(continueButton); } - stopButton = new EditorButton(mode, + stopButton = new EditorButton(this, "/lib/toolbar/stop", Language.text("toolbar.stop")) { @Override @@ -112,19 +112,19 @@ public class JavaToolbar extends EditorToolbar { @Override public void addModeButtons(Box box, JLabel label) { - EditorButton debugButton = new EditorButton(mode, "/lib/toolbar/debug", - Language.text("toolbar.debug")) { - + EditorButton debugButton = + new EditorButton(this, "/lib/toolbar/debug", + Language.text("toolbar.debug")) { @Override public void actionPerformed(ActionEvent e) { jeditor.toggleDebug(); } }; -// debugButton.setReverse(); + if (((JavaEditor) editor).isDebuggerEnabled()) { debugButton.setSelected(true); } - debugButton.setRolloverLabel(label); +// debugButton.setRolloverLabel(label); box.add(debugButton); addGap(box); } @@ -170,53 +170,3 @@ public class JavaToolbar extends EditorToolbar { repaint(); } } - - -/* -public class JavaToolbar extends EditorToolbar { - static protected final int RUN = 0; - static protected final int STOP = 1; - - - public JavaToolbar(Editor editor, Base base) { - super(editor, base); - } - - - public void init() { - Image[][] images = loadImages(); - for (int i = 0; i < 2; i++) { - addButton(getTitle(i, false), getTitle(i, true), images[i], false); - } - } - - - static public String getTitle(int index, boolean shift) { - switch (index) { - case RUN: return !shift ? Language.text("toolbar.run") : Language.text("toolbar.present"); - case STOP: return Language.text("toolbar.stop"); - } - return null; - } - - - public void handlePressed(MouseEvent e, int sel) { - boolean shift = e.isShiftDown(); - JavaEditor jeditor = (JavaEditor) editor; - - switch (sel) { - case RUN: - if (shift) { - jeditor.handlePresent(); - } else { - jeditor.handleRun(); - } - break; - - case STOP: - jeditor.handleStop(); - break; - } - } -} -*/ \ No newline at end of file