diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index ba2e0eac5..2e2bcd8e1 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -88,7 +88,7 @@ public class Base { private Mode defaultMode; // private Mode androidMode; private Mode[] modeList; - private JMenu modeMenu; +// private JMenu modeMenu; private JMenu sketchbookMenu; @@ -214,17 +214,6 @@ public class Base { defaultMode = new JavaMode(this, getContentFile("modes/java")); Mode androidMode = new AndroidMode(this, getContentFile("modes/android")); modeList = new Mode[] { defaultMode, androidMode }; - modeMenu = new JMenu(); - for (final Mode mode : modeList) { - JMenuItem item = new JMenuItem(mode.getTitle()); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { -// System.out.println(e); - changeMode(mode); - } - }); - modeMenu.add(item); - } // Get the sketchbook path, and make sure it's set properly determineSketchbookFolder(); @@ -289,11 +278,6 @@ public class Base { // } - public JMenu getModeMenu() { - return modeMenu; - } - - // public Mode getDefaultMode() { // return defaultMode; // } @@ -526,6 +510,11 @@ public class Base { } } } + + + public Mode[] getModeList() { + return modeList; + } // Because of variations in native windowing systems, no guarantees about diff --git a/app/src/processing/app/Editor.java b/app/src/processing/app/Editor.java index d660efe2a..e34211a5a 100644 --- a/app/src/processing/app/Editor.java +++ b/app/src/processing/app/Editor.java @@ -97,6 +97,7 @@ public abstract class Editor extends JFrame implements RunnerListener { private final Stack caretRedoStack = new Stack(); private FindReplace find; + JMenu modeMenu; protected Editor(final Base base, String path, int[] location, final Mode mode) { @@ -153,6 +154,7 @@ public abstract class Editor extends JFrame implements RunnerListener { Box box = Box.createVerticalBox(); Box upper = Box.createVerticalBox(); + initModeMenu(); toolbar = createToolbar(); upper.add(toolbar); @@ -297,6 +299,34 @@ public abstract class Editor extends JFrame implements RunnerListener { } + protected void initModeMenu() { + modeMenu = new JMenu(); + for (final Mode m : base.getModeList()) { + if (mode == m) { + JCheckBoxMenuItem item = new JCheckBoxMenuItem(m.getTitle()); + // doesn't need a listener, since it doesn't do anything + item.setSelected(true); + modeMenu.add(item); + } else { + JMenuItem item = new JMenuItem(m.getTitle()); + item.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + // System.out.println(e); + base.changeMode(m); + } + }); + modeMenu.add(item); + } + } + } + + + public JMenu getModeMenu() { + return modeMenu; + } + + + // public Settings getTheme() { // return mode.getTheme(); // } diff --git a/app/src/processing/app/EditorToolbar.java b/app/src/processing/app/EditorToolbar.java index 35f92ac02..756d10c81 100644 --- a/app/src/processing/app/EditorToolbar.java +++ b/app/src/processing/app/EditorToolbar.java @@ -438,7 +438,7 @@ public abstract class EditorToolbar extends JComponent implements MouseInputList int x = e.getX(); int y = e.getY(); if (x > modeX1 && x < modeX2 && y > modeY1 && y < modeY2) { - JPopupMenu popup = base.getModeMenu().getPopupMenu(); + JPopupMenu popup = editor.getModeMenu().getPopupMenu(); popup.show(this, x, y); }