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, music;
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 music = makeMenu("Music", KeyEvent.VK_T);
74 music.add(makeItem(track, "Insert measure..."));
75 music.add(makeItem(track, "Delete measure..."));
76 music.add(makeItem(track, "Time signature..."));
77 music.add(makeItem(track, "Tempo..."));
78 music.add(makeItem(track, "Scale velocity..."));
79 music.add(makeItem(track, "Transpose..."));
81 help = makeMenu("Help", KeyEvent.VK_P);
84 help.add(makeItem(help, "Contents"));
85 help.add(makeItem(help, "Getting started"));
86 help.add(makeItem(help, "About"));
89 private JMenu makeMenu(String name, int mnemonic) {
90 JMenu menu = new JMenu(name);
91 menu.setMnemonic(mnemonic);
95 private JMenuItem makeItem(JMenu menu, String name) {
96 JMenuItem item = new JMenuItem(name);
97 item.addActionListener(this);
102 private JMenuItem makeAccItem(JMenu menu, String name, int key) {
103 JMenuItem item = new JMenuItem(name);
104 item.setAccelerator(KeyStroke.getKeyStroke(key, ActionEvent.CTRL_MASK));
105 item.addActionListener(this);
110 public void actionPerformed(ActionEvent e) {
111 String command = e.getActionCommand();
113 if(command == "New") {
115 } else if (command == "Open...") {
117 JFileChooser chooser = new JFileChooser();
118 chooser.addChoosableFileFilter(new MidiFileFilter());
119 int returnVal = chooser.showOpenDialog(this);
120 if(returnVal == JFileChooser.APPROVE_OPTION) {
121 System.out.println("You chose to open this file: " +
122 chooser.getSelectedFile().getName());
125 } else if (command == "Save") {
127 } else if (command == "Save as...") {
129 JFileChooser chooser = new JFileChooser();
130 chooser.addChoosableFileFilter(new MidiFileFilter());
131 int returnVal = chooser.showSaveDialog(this);
132 if(returnVal == JFileChooser.APPROVE_OPTION) {
133 System.out.println("You chose to open this file: " +
134 chooser.getSelectedFile().getName());
137 } else if (command == "Exit") {
139 } else if (command == "Copy") {
141 } else if (command == "Cut") {
143 } else if (command == "Paste") {
145 } else if (command == "Select all") {
147 } else if (command == "Invert selection") {
149 } else if (command == "Play") {
150 JOptionPane.showMessageDialog(null, "playing");
152 } else if (command == "Pause") {
154 } else if (command == "Stop") {
156 } else if (command == "Jump...") {
158 } else if (command == "Add") {
160 } else if (command == "Delete") {
162 } else if (command == "Copy track") {
164 } else if (command == "Move") {
166 } else if (command == "Insert Measure...") {
168 } else if (command == "Delete Measure...") {
170 } else if (command == "Time Signature...") {
172 } else if (command == "Tempo...") {
174 } else if (command == "Scale Velocity...") {
176 } else if (command == "Transpose...") {
178 } else if (command == "Contents") {
179 // contents to be filled in
180 JOptionPane.showMessageDialog(this, "här kommer contents komma");
182 } else if (command == "Getting started") {
183 // getting started to be filled in
184 JOptionPane.showMessageDialog(null, "här kommer getting started komma");
186 } else if (command == "About") {
187 // about to be filled in
188 JOptionPane.showMessageDialog(null, "här kommer about att komma");
193 class MidiFileFilter extends javax.swing.filechooser.FileFilter {
194 public boolean accept(File f) {
196 String extension = f.getName().substring(f.getName().lastIndexOf('.') + 1).toLowerCase();
197 if (f.isDirectory() || extension == "mid") return true;
202 public String getDescription() {