]> ruin.nu Git - moosique.git/commitdiff
Fixed "Reopen"-menu.
authorEinar Pehrson <einarp@itstud.chalmers.se>
Mon, 26 May 2003 14:43:59 +0000 (14:43 +0000)
committerEinar Pehrson <einarp@itstud.chalmers.se>
Mon, 26 May 2003 14:43:59 +0000 (14:43 +0000)
MooMenu.java
MooNoteElement.java

index a7fe8341e78a6c0208aa7ad52f65699b15c20073..ae1672d083508740a9ec0becedb6b9234ff67fba 100644 (file)
@@ -16,7 +16,6 @@ public class MooMenu extends JMenuBar implements ActionListener {
        private JMenu file, reopen, edit, keyboard, playback, music, help;
        private JFileChooser chooser;
        private File directory;
-       private ArrayList recentFiles;
 
        /**
         * Creates the menu bar.
@@ -34,11 +33,7 @@ public class MooMenu extends JMenuBar implements ActionListener {
                addItem(file, "Open...", KeyEvent.VK_O, true);
                reopen = createMenu("Reopen", KeyEvent.VK_R);
                Iterator it = recentFiles.iterator();
-               while (it.hasNext()) {
-                       JMenuItem recentFile = new JMenuItem((String)it.next());
-                       recentFile.addActionListener(this);
-                       reopen.add(recentFile);
-               }
+               while (it.hasNext()) addReopenItem((String)it.next());
                file.add(reopen);
                addItem(file, "Save", KeyEvent.VK_S, true);
                addItem(file, "Save as...", KeyEvent.VK_A, false);
@@ -68,7 +63,7 @@ public class MooMenu extends JMenuBar implements ActionListener {
                playback.addSeparator();
                keyboard = createMenu("Set keyboard octave", KeyEvent.VK_K);
                edit.add(keyboard);
-               for (int i = 9; i >= 0; i--) addItem(keyboard, "Octave " + i, i + 48, false);
+               for (int i = 9; i >= 0; i--) addItem(keyboard, "" + i, i + 48, false);
                
                music = createMenu("Music", KeyEvent.VK_M);
                add(music);
@@ -139,6 +134,23 @@ public class MooMenu extends JMenuBar implements ActionListener {
                return item;
        }
 
+       /**
+       * Adds an item for this file to the top of the reopen menu.
+       */
+       private void addReopenItem(String file) {
+               for (int i = 0; i < reopen.getMenuComponentCount(); i++) {
+                       if (file.equals(((JMenuItem)reopen.getMenuComponent(i)).getText()))
+                               reopen.remove(i);
+               }
+               JMenuItem recentFile = new JMenuItem(file);
+               recentFile.addActionListener(this);
+               reopen.insert(recentFile, 0);
+               if (reopen.getMenuComponentCount() > 5) reopen.remove(5);
+       }
+
+       /**
+       * Checks if the given file has the extension ".mid".
+       */
        private boolean isMidiFile(File f) {
                if(f != null) {
                        String extension = f.getName().substring(f.getName().lastIndexOf('.') + 1).toLowerCase().trim();
@@ -171,17 +183,7 @@ public class MooMenu extends JMenuBar implements ActionListener {
                        if(returnVal == JFileChooser.APPROVE_OPTION && isMidiFile(file)) {
                                directory = file.getParentFile();
                                if (!Moosique.promptOnUnsavedChanges()) {
-                                       if (Moosique.load(file)) {
-                                               // Adds an item for this file to the reopen menu.
-                                               String filename = file.getAbsolutePath();
-                                               JMenuItem recentFile = new JMenuItem(filename);
-                                               for (int i = 0; i < reopen.getMenuComponentCount(); i++) {
-                                                       if (filename.equals(((JMenuItem)reopen.getMenuComponent(i)).getText()))
-                                                               reopen.remove(i);
-                                               }
-                                               reopen.insert(recentFile, 0);
-                                               if (reopen.getMenuComponentCount() > 5) reopen.remove(5);
-                                       }
+                                       if (Moosique.load(file)) addReopenItem(file.getAbsolutePath());
                                }
                        }
                } else if (command == "Save") {
@@ -211,8 +213,8 @@ public class MooMenu extends JMenuBar implements ActionListener {
                } else if (command == "Set position...") {
                        MooDialog newDialog = new MooDialog(MooDialog.SET_POSITION);
                        // Moosique.setPosition(???); Räkna ut från msr, beats, ticks, time sig.
-               } else if (command.startsWith("Octave")) {
-                       MooKeyboard.setOctave(Integer.parseInt(command.substring(7,8)));
+               } else if (keyboard.isMenuComponent((JMenuItem)e.getSource())) {
+                       MooKeyboard.setOctave(Integer.parseInt(command));
                } else if (command == "Add track...") {
                        MooDialog newDialog = new MooDialog(MooDialog.ADD_TRACK);
                        Moosique.getSequence().createTrack();
@@ -248,7 +250,9 @@ public class MooMenu extends JMenuBar implements ActionListener {
                                new ImageIcon(Moosique.getGUI().logo));
                } else if (reopen.isMenuComponent((JMenuItem)e.getSource())) {
                        String recentFile = ((JMenuItem)e.getSource()).getText();
-                       if (!Moosique.promptOnUnsavedChanges()) Moosique.load(new File(recentFile));
+                       if (!Moosique.promptOnUnsavedChanges()) {
+                               if (Moosique.load(new File(recentFile))) addReopenItem(recentFile);
+                       }
                }
        }
 
@@ -266,7 +270,7 @@ public class MooMenu extends JMenuBar implements ActionListener {
                        File file = chooser.getSelectedFile();
                        if(returnVal == JFileChooser.APPROVE_OPTION && isMidiFile(file)) {
                                directory = file.getParentFile();
-                               Moosique.saveAs(file);
+                               if (Moosique.saveAs(file)) addReopenItem(file.getAbsolutePath());
                        }
        }
 
index 42955a8c9e0f6eb9182e61c0c5f2f4f08478c817..8b15596e9df44a24e13cac96859861a11689eebd 100644 (file)
@@ -9,7 +9,7 @@ import java.awt.event.*;
  * @version 1
  */
  
-public class MooNoteElement extends JPanel implements Comparable{
+public class MooNoteElement extends JPanel implements Comparable {
 
        private MooTrackView mtv;
        private MooNote note;