]> ruin.nu Git - moosique.git/blob - MooMenu.java
Added comment for prospective addition
[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;
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                 help = makeMenu("Help", KeyEvent.VK_P);
72                 add(help);
73                 
74                 help.add(makeItem(help, "Contents"));
75                 help.add(makeItem(help, "Getting started"));
76                 help.add(makeItem(help, "About"));
77         }
78
79         private JMenu makeMenu(String name, int mnemonic) {
80                 JMenu menu = new JMenu(name);
81                 menu.setMnemonic(mnemonic);
82                 return menu;
83         }
84
85         private JMenuItem makeItem(JMenu menu, String name) {
86                 JMenuItem item = new JMenuItem(name);
87                 item.addActionListener(this);
88                 menu.add(item);
89                 return item;
90         }
91
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);
96                 menu.add(item);
97                 return item;
98         }
99         
100         public void actionPerformed(ActionEvent e) {
101                 String command = e.getActionCommand();
102                 
103                 if(command == "New") {
104                         
105                 } else if (command == "Open...") {
106                 
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());
113                 }
114                 
115                 } else if (command == "Save") {
116                 
117                 } else if (command == "Save as...") {
118                 
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());
125                         }
126                 
127                 } else if (command == "Exit") {
128                 
129                 } else if (command == "Copy") {
130                 
131                 } else if (command == "Cut") {
132                 
133                 } else if (command == "Paste") {
134                 
135                 } else if (command == "Select all") {
136                 
137                 } else if (command == "Invert selection") {
138                 
139                 } else if (command == "Play") {
140                         JOptionPane.showMessageDialog(null, "playing");
141                 
142                 } else if (command == "Pause") {
143                 
144                 } else if (command == "Stop") {
145                 
146                 } else if (command == "Jump...") {
147                 
148                 } else if (command == "Add") {
149                 
150                 } else if (command == "Delete") {
151                 
152                 } else if (command == "Copy track") {
153                 
154                 } else if (command == "Move") {
155                 
156                 } else if (command == "Contents") {
157                         // contents to be filled in
158                         JOptionPane.showMessageDialog(this, "här kommer contents komma");
159                 
160                 } else if (command == "Getting started") {
161                         // getting started to be filled in
162                         JOptionPane.showMessageDialog(null, "här kommer getting started komma");
163                 
164                 } else if (command == "About") {
165                         // about to be filled in
166                         JOptionPane.showMessageDialog(null, "här kommer about att komma");
167                 
168                 }
169         }
170
171         class MidiFileFilter extends javax.swing.filechooser.FileFilter {
172                 public boolean accept(File f) {
173                         if(f != null) {
174                                 String extension = f.getName().substring(f.getName().lastIndexOf('.') + 1).toLowerCase();
175                                 if (f.isDirectory() || extension == "mid") return true;
176                         }
177                         return false;
178                 }
179                 
180                 public String getDescription() {
181                         return "MIDI files";
182                 }
183         }
184 }