2 import javax.swing.filechooser.*;
3 import java.awt.event.*;
6 public class MooMenu extends JMenuBar implements ActionListener {
10 Musikrelaterade menyer i Midisoft Recording Session:
12 Track Insert New... Har vi
18 Split by Pitch... Onödig
20 Music Insert Measure... Lägg till
21 Delete Measure... Lägg till
23 Time Signature... Lägg till
24 Key Signature... Onödig
26 Scale Velocity... Lägg till
27 Transpose... Lägg till
30 Kanske också: Reset Solo / Mute
34 private JMenu file, edit, playback, track, help;
37 file = makeMenu("File", KeyEvent.VK_F);
40 file.add(makeAccItem(file, "New", KeyEvent.VK_N));
41 file.add(makeAccItem(file, "Open...", KeyEvent.VK_O));
42 file.add(makeAccItem(file, "Save", KeyEvent.VK_S));
43 file.add(makeItem(file, "Save as..."));
44 file.add(makeAccItem(file, "Exit", KeyEvent.VK_Q));
46 edit = makeMenu("Edit", KeyEvent.VK_E);
49 edit.add(makeAccItem(edit, "Copy", KeyEvent.VK_C));
50 edit.add(makeAccItem(edit, "Cut", KeyEvent.VK_X));
51 edit.add(makeAccItem(edit, "Paste", KeyEvent.VK_V));
52 edit.add(makeAccItem(edit, "Select all", KeyEvent.VK_E));
53 edit.add(makeAccItem(edit, "Invert selection", KeyEvent.VK_I));
55 playback = makeMenu("Playback", KeyEvent.VK_P);
58 playback.add(makeAccItem(playback, "Play", KeyEvent.VK_SPACE));
59 playback.add(makeAccItem(playback, "Pause", KeyEvent.VK_SPACE));
60 playback.add(makeItem(playback, "Stop"));
61 playback.add(makeItem(playback, "Jump..."));
63 track = makeMenu("Track", KeyEvent.VK_T);
66 track.add(makeAccItem(track, "Add", KeyEvent.VK_A));
67 track.add(makeAccItem(track, "Delete", KeyEvent.VK_D));
68 track.add(makeAccItem(track, "Copy track", KeyEvent.VK_Y));
69 track.add(makeAccItem(track, "Move", KeyEvent.VK_M));
71 help = makeMenu("Help", KeyEvent.VK_P);
74 help.add(makeItem(help, "Contents"));
75 help.add(makeItem(help, "Getting started"));
76 help.add(makeItem(help, "About"));
79 private JMenu makeMenu(String name, int mnemonic) {
80 JMenu menu = new JMenu(name);
81 menu.setMnemonic(mnemonic);
85 private JMenuItem makeItem(JMenu menu, String name) {
86 JMenuItem item = new JMenuItem(name);
87 item.addActionListener(this);
92 private JMenuItem makeAccItem(JMenu menu, String name, int key) {
93 JMenuItem item = new JMenuItem(name);
94 item.setAccelerator(KeyStroke.getKeyStroke(key, ActionEvent.CTRL_MASK));
95 item.addActionListener(this);
100 public void actionPerformed(ActionEvent e) {
101 String command = e.getActionCommand();
103 if(command == "New") {
105 } else if (command == "Open...") {
107 JFileChooser chooser = new JFileChooser();
108 chooser.addChoosableFileFilter(new MidiFileFilter());
109 int returnVal = chooser.showOpenDialog(this);
110 if(returnVal == JFileChooser.APPROVE_OPTION) {
111 System.out.println("You chose to open this file: " +
112 chooser.getSelectedFile().getName());
115 } else if (command == "Save") {
117 } else if (command == "Save as...") {
119 JFileChooser chooser = new JFileChooser();
120 chooser.addChoosableFileFilter(new MidiFileFilter());
121 int returnVal = chooser.showSaveDialog(this);
122 if(returnVal == JFileChooser.APPROVE_OPTION) {
123 System.out.println("You chose to open this file: " +
124 chooser.getSelectedFile().getName());
127 } else if (command == "Exit") {
129 } else if (command == "Copy") {
131 } else if (command == "Cut") {
133 } else if (command == "Paste") {
135 } else if (command == "Select all") {
137 } else if (command == "Invert selection") {
139 } else if (command == "Play") {
140 JOptionPane.showMessageDialog(null, "playing");
142 } else if (command == "Pause") {
144 } else if (command == "Stop") {
146 } else if (command == "Jump...") {
148 } else if (command == "Add") {
150 } else if (command == "Delete") {
152 } else if (command == "Copy track") {
154 } else if (command == "Move") {
156 } else if (command == "Contents") {
157 // contents to be filled in
158 JOptionPane.showMessageDialog(this, "här kommer contents komma");
160 } else if (command == "Getting started") {
161 // getting started to be filled in
162 JOptionPane.showMessageDialog(null, "här kommer getting started komma");
164 } else if (command == "About") {
165 // about to be filled in
166 JOptionPane.showMessageDialog(null, "här kommer about att komma");
171 class MidiFileFilter extends javax.swing.filechooser.FileFilter {
172 public boolean accept(File f) {
174 String extension = f.getName().substring(f.getName().lastIndexOf('.') + 1).toLowerCase();
175 if (f.isDirectory() || extension == "mid") return true;
180 public String getDescription() {