]> ruin.nu Git - moosique.git/blob - MooMenu.java
fixat lite mer menyer som einar bad om
[moosique.git] / MooMenu.java
1 import javax.swing.*;
2 import javax.swing.filechooser.*;
3 import java.awt.event.*;
4 import java.io.*;
5
6 public class MooMenu extends JMenuBar implements ActionListener {
7         
8 /*
9
10 Musikrelaterade menyer i Midisoft Recording Session:
11
12 Track           Insert New...           Har vi
13                 Delete...               Har vi
14                 Move...                 Har vi
15                 Copy...                 Har vi
16                 Combine...              Onödig
17                 Rechannel...            Kanske
18                 Split by Pitch...       Onödig
19                 
20 Music           Insert Measure...       Lägg till
21                 Delete Measure...       Lägg till
22                 Clef...                 Onödig
23                 Time Signature...       Lägg till
24                 Key Signature...        Onödig
25                 Tempo...                Lägg till
26                 Scale Velocity...       Lägg till
27                 Transpose...            Lägg till
28                 Quantize...             Onödig
29
30 Kanske också:   Reset Solo / Mute
31
32 */
33
34         private JMenu file, edit, playback, track, help, music;
35
36         public MooMenu() {
37                 file = makeMenu("File", KeyEvent.VK_F);
38                 add(file);
39                                 
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));
45                 
46                 edit = makeMenu("Edit", KeyEvent.VK_E);
47                 add(edit);
48                 
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));
54                 
55                 playback = makeMenu("Playback", KeyEvent.VK_P);
56                 add(playback);
57                 
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..."));
62                 
63                 track = makeMenu("Track", KeyEvent.VK_T);
64                 add(track);
65                 
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));
70                 
71                 music = makeMenu("Music", KeyEvent.VK_T);
72                 add(music);
73                 
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..."));
80                 
81                 help = makeMenu("Help", KeyEvent.VK_P);
82                 add(help);
83                 
84                 help.add(makeItem(help, "Contents"));
85                 help.add(makeItem(help, "Getting started"));
86                 help.add(makeItem(help, "About"));
87         }
88
89         private JMenu makeMenu(String name, int mnemonic) {
90                 JMenu menu = new JMenu(name);
91                 menu.setMnemonic(mnemonic);
92                 return menu;
93         }
94
95         private JMenuItem makeItem(JMenu menu, String name) {
96                 JMenuItem item = new JMenuItem(name);
97                 item.addActionListener(this);
98                 menu.add(item);
99                 return item;
100         }
101
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);
106                 menu.add(item);
107                 return item;
108         }
109         
110         public void actionPerformed(ActionEvent e) {
111                 String command = e.getActionCommand();
112                 
113                 if(command == "New") {
114                         
115                 } else if (command == "Open...") {
116                 
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());
123                 }
124                 
125                 } else if (command == "Save") {
126                 
127                 } else if (command == "Save as...") {
128                 
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());
135                         }
136                 
137                 } else if (command == "Exit") {
138                 
139                 } else if (command == "Copy") {
140                 
141                 } else if (command == "Cut") {
142                 
143                 } else if (command == "Paste") {
144                 
145                 } else if (command == "Select all") {
146                 
147                 } else if (command == "Invert selection") {
148                 
149                 } else if (command == "Play") {
150                         JOptionPane.showMessageDialog(null, "playing");
151                 
152                 } else if (command == "Pause") {
153                 
154                 } else if (command == "Stop") {
155                 
156                 } else if (command == "Jump...") {
157                 
158                 } else if (command == "Add") {
159                 
160                 } else if (command == "Delete") {
161                 
162                 } else if (command == "Copy track") {
163                 
164                 } else if (command == "Move") {
165                 
166                 } else if (command == "Insert Measure...") {
167                 
168                 } else if (command == "Delete Measure...") {
169                 
170                 } else if (command == "Time Signature...") {
171                 
172                 } else if (command == "Tempo...") {
173                 
174                 } else if (command == "Scale Velocity...") {
175                 
176                 } else if (command == "Transpose...") {
177                 
178                 } else if (command == "Contents") {
179                         // contents to be filled in
180                         JOptionPane.showMessageDialog(this, "här kommer contents komma");
181                 
182                 } else if (command == "Getting started") {
183                         // getting started to be filled in
184                         JOptionPane.showMessageDialog(null, "här kommer getting started komma");
185                 
186                 } else if (command == "About") {
187                         // about to be filled in
188                         JOptionPane.showMessageDialog(null, "här kommer about att komma");
189                 
190                 }
191         }
192
193         class MidiFileFilter extends javax.swing.filechooser.FileFilter {
194                 public boolean accept(File f) {
195                         if(f != null) {
196                                 String extension = f.getName().substring(f.getName().lastIndexOf('.') + 1).toLowerCase();
197                                 if (f.isDirectory() || extension == "mid") return true;
198                         }
199                         return false;
200                 }
201                 
202                 public String getDescription() {
203                         return "MIDI files";
204                 }
205         }
206 }