2 import javax.swing.filechooser.*;
3 import java.awt.event.*;
6 public class MooMenu extends JMenuBar implements ActionListener {
8 private JMenu file, edit, playback, track, help;
11 file = makeMenu("File", KeyEvent.VK_F);
14 file.add(makeAccItem(file, "New", KeyEvent.VK_N));
15 file.add(makeAccItem(file, "Open...", KeyEvent.VK_O));
16 file.add(makeAccItem(file, "Save", KeyEvent.VK_S));
17 file.add(makeItem(file, "Save as..."));
18 file.add(makeAccItem(file, "Exit", KeyEvent.VK_Q));
20 edit = makeMenu("Edit", KeyEvent.VK_E);
23 edit.add(makeAccItem(edit, "Copy", KeyEvent.VK_C));
24 edit.add(makeAccItem(edit, "Cut", KeyEvent.VK_X));
25 edit.add(makeAccItem(edit, "Paste", KeyEvent.VK_V));
26 edit.add(makeAccItem(edit, "Select all", KeyEvent.VK_E));
27 edit.add(makeAccItem(edit, "Invert selection", KeyEvent.VK_I));
29 playback = makeMenu("Playback", KeyEvent.VK_P);
32 playback.add(makeAccItem(playback, "Play", KeyEvent.VK_SPACE));
33 playback.add(makeAccItem(playback, "Pause", KeyEvent.VK_SPACE));
34 playback.add(makeItem(playback, "Stop"));
35 playback.add(makeItem(playback, "Jump..."));
37 track = makeMenu("Track", KeyEvent.VK_T);
40 track.add(makeAccItem(track, "Add", KeyEvent.VK_A));
41 track.add(makeAccItem(track, "Delete", KeyEvent.VK_D));
42 track.add(makeAccItem(track, "Copy track", KeyEvent.VK_Y));
43 track.add(makeAccItem(track, "Move", KeyEvent.VK_M));
45 help = makeMenu("Help", KeyEvent.VK_P);
48 help.add(makeItem(help, "Contents"));
49 help.add(makeItem(help, "Getting started"));
50 help.add(makeItem(help, "About"));
53 private JMenu makeMenu(String name, int mnemonic) {
54 JMenu menu = new JMenu(name);
55 menu.setMnemonic(mnemonic);
59 private JMenuItem makeItem(JMenu menu, String name) {
60 JMenuItem item = new JMenuItem(name);
61 item.addActionListener(this);
66 private JMenuItem makeAccItem(JMenu menu, String name, int key) {
67 JMenuItem item = new JMenuItem(name);
68 item.setAccelerator(KeyStroke.getKeyStroke(key, ActionEvent.CTRL_MASK));
69 item.addActionListener(this);
74 public void actionPerformed(ActionEvent e) {
75 String command = e.getActionCommand();
77 if(command == "New") {
79 } else if (command == "Open...") {
81 JFileChooser chooser = new JFileChooser();
82 chooser.addChoosableFileFilter(new MidiFileFilter());
83 int returnVal = chooser.showOpenDialog(this);
84 if(returnVal == JFileChooser.APPROVE_OPTION) {
85 System.out.println("You chose to open this file: " +
86 chooser.getSelectedFile().getName());
89 } else if (command == "Save") {
91 } else if (command == "Save as...") {
93 JFileChooser chooser = new JFileChooser();
94 chooser.addChoosableFileFilter(new MidiFileFilter());
95 int returnVal = chooser.showSaveDialog(this);
96 if(returnVal == JFileChooser.APPROVE_OPTION) {
97 System.out.println("You chose to open this file: " +
98 chooser.getSelectedFile().getName());
101 } else if (command == "Exit") {
103 } else if (command == "Copy") {
105 } else if (command == "Cut") {
107 } else if (command == "Paste") {
109 } else if (command == "Select all") {
111 } else if (command == "Invert selection") {
113 } else if (command == "Play") {
114 JOptionPane.showMessageDialog(null, "playing");
116 } else if (command == "Pause") {
118 } else if (command == "Stop") {
120 } else if (command == "Jump...") {
122 } else if (command == "Add") {
124 } else if (command == "Delete") {
126 } else if (command == "Copy track") {
128 } else if (command == "Move") {
130 } else if (command == "Contents") {
131 // contents to be filled in
132 JOptionPane.showMessageDialog(this, "här kommer contents komma");
134 } else if (command == "Getting started") {
135 // getting started to be filled in
136 JOptionPane.showMessageDialog(null, "här kommer getting started komma");
138 } else if (command == "About") {
139 // about to be filled in
140 JOptionPane.showMessageDialog(null, "här kommer about att komma");
145 class MidiFileFilter extends javax.swing.filechooser.FileFilter {
146 public boolean accept(File f) {
148 String extension = f.getName().substring(f.getName().lastIndexOf('.') + 1).toLowerCase();
149 if (f.isDirectory() || extension == "mid") return true;
154 public String getDescription() {