moving some of the default file menu logic back into Base

This commit is contained in:
Ben Fry
2019-10-08 17:56:24 -04:00
parent e78f0a0226
commit baa0424d94
2 changed files with 45 additions and 53 deletions
+44 -1
View File
@@ -84,7 +84,7 @@ public class Base {
Collections.synchronizedList(new ArrayList<Editor>());
protected Editor activeEditor;
/** A lone file menu to be used when all sketch windows are closed. */
static public JMenu defaultFileMenu;
protected JMenu defaultFileMenu;
/**
* Starts with the last mode used with the environment,
@@ -437,6 +437,49 @@ public class Base {
// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
/**
* Limited file menu to be used on OS X when no sketches are open.
*/
public JMenu initDefaultFileMenu() {
defaultFileMenu = new JMenu(Language.text("menu.file"));
JMenuItem item = Toolkit.newJMenuItem(Language.text("menu.file.new"), 'N');
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
handleNew();
}
});
defaultFileMenu.add(item);
item = Toolkit.newJMenuItem(Language.text("menu.file.open"), 'O');
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
handleOpenPrompt();
}
});
defaultFileMenu.add(item);
item = Toolkit.newJMenuItemShift(Language.text("menu.file.sketchbook"), 'K');
item.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
getNextMode().showSketchbookFrame();
}
});
defaultFileMenu.add(item);
item = Toolkit.newJMenuItemShift(Language.text("menu.file.examples"), 'O');
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
thinkDifferentExamples();
}
});
defaultFileMenu.add(item);
return defaultFileMenu;
}
void buildCoreModes() {
Mode javaMode =
ModeContribution.load(this, Platform.getContentFile("modes/java"),
@@ -23,18 +23,13 @@
package processing.app.platform;
import java.awt.Desktop;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import processing.app.Base;
import processing.app.Language;
import processing.app.ui.About;
import processing.app.ui.Toolkit;
/**
@@ -88,54 +83,8 @@ public class ThinkDifferent {
// Set the menu bar to be used when nothing else is open.
JMenuBar defaultMenuBar = new JMenuBar();
JMenu fileMenu = buildFileMenu(base);
JMenu fileMenu = base.initDefaultFileMenu();
defaultMenuBar.add(fileMenu);
// This is kind of a gross way to do this, but the alternatives? Hrm.
Base.defaultFileMenu = fileMenu;
desktop.setDefaultMenuBar(defaultMenuBar);
}
/**
* Gimpy file menu to be used on OS X when no sketches are open.
*/
static protected JMenu buildFileMenu(final Base base) {
JMenuItem item;
JMenu fileMenu = new JMenu(Language.text("menu.file"));
item = Toolkit.newJMenuItem(Language.text("menu.file.new"), 'N');
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
base.handleNew();
}
});
fileMenu.add(item);
item = Toolkit.newJMenuItem(Language.text("menu.file.open"), 'O');
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
base.handleOpenPrompt();
}
});
fileMenu.add(item);
item = Toolkit.newJMenuItemShift(Language.text("menu.file.sketchbook"), 'K');
item.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
base.getNextMode().showSketchbookFrame();
}
});
fileMenu.add(item);
item = Toolkit.newJMenuItemShift(Language.text("menu.file.examples"), 'O');
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
base.thinkDifferentExamples();
}
});
fileMenu.add(item);
return fileMenu;
}
}