]> ruin.nu Git - moosique.git/blobdiff - MooGUI.java
no message
[moosique.git] / MooGUI.java
index 85968182d7ce3a48e3855b655838ff926fb576d6..2ae23a64849221afc93de30cefd997f47f958ef4 100644 (file)
@@ -3,6 +3,7 @@ import javax.swing.*;
 import java.awt.*;
 import java.awt.event.*;
 import java.util.*;
+import java.io.*;
 
 /**
  * Moosique's graphical user interface.
@@ -18,18 +19,22 @@ public class MooGUI extends JFrame {
        private MooView view;
        private JLabel statusBar;
        private java.util.Timer timer;
+       private boolean updateView = false;
        public static final int statusResetDelay = 3000;
        public static final Font FONT = new Font("Helvetica", Font.PLAIN, 10);
        public static final Color bgColor = new Color(192, 224, 255);
+       public static final Image logo = Toolkit.getDefaultToolkit().getImage("images/moose.gif");
        
        /** 
         * Creates the GUI.
         * @param seq The sequence that the program is operating on.
         */
-       public MooGUI(Sequence seq) {
+       public MooGUI(Sequence seq, File file) {
                super("Moosique");
+               if (file != null) setTitle("Moosique - " + file.getName());
 
                this.seq = seq;
+               advanceStatus();
                
                Container pane = getContentPane();
                pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));
@@ -37,10 +42,12 @@ public class MooGUI extends JFrame {
                // Adds menu bar.
                menu = new MooMenu();
                setJMenuBar(menu);
+               advanceStatus();
 
                // Adds toolbar.
                toolbar = new MooToolbar();
                pane.add(toolbar, BorderLayout.NORTH);
+               advanceStatus();
 
                // Adds main view.
                view = new MooView(seq.getTracks());
@@ -56,8 +63,6 @@ public class MooGUI extends JFrame {
                setBackground(menu);
                setBackground(toolbar);
                setBackground(view);
-               statusBar.setBackground(bgColor);
-               view.setBackground(bgColor);
 
                // Creates timer.
                timer = new java.util.Timer();
@@ -74,32 +79,27 @@ public class MooGUI extends JFrame {
                                }
                        }};
                am.put("Play", playAction);
-               am.put("Octave change 2", createOctaveAction(2));
-               am.put("Octave change 4", createOctaveAction(4));
-               am.put("Octave change 6", createOctaveAction(6));
-               am.put("Octave change 8", createOctaveAction(8));
+               am.put("Change octave up", createOctaveAction(true));
+               am.put("Change octave down", createOctaveAction(false));
 
                InputMap im = getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
                KeyStroke playKey = KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0);
-               KeyStroke octave2Key = KeyStroke.getKeyStroke(KeyEvent.VK_F9, 0);
-               KeyStroke octave4Key = KeyStroke.getKeyStroke(KeyEvent.VK_F10, 0);
-               KeyStroke octave6Key = KeyStroke.getKeyStroke(KeyEvent.VK_F11, 0);
-               KeyStroke octave8Key = KeyStroke.getKeyStroke(KeyEvent.VK_F12, 0);
+               KeyStroke octaveUpKey = KeyStroke.getKeyStroke(KeyEvent.VK_F9, 0);
+               KeyStroke octaveDownKey = KeyStroke.getKeyStroke(KeyEvent.VK_F10, 0);
                im.put(playKey, "Play");
-               im.put(octave2Key, "Octave change 2");
-               im.put(octave4Key, "Octave change 4");
-               im.put(octave6Key, "Octave change 6");
-               im.put(octave8Key, "Octave change 8");
+               im.put(octaveUpKey, "Change octave up");
+               im.put(octaveDownKey, "Change octave down");
+               advanceStatus();
 
                // Configures window.
                addWindowListener(new MooGUICloser());
                pack();
-               setIconImage(Toolkit.getDefaultToolkit().getImage("images/moose.gif"));
+               setIconImage(logo);
                Dimension bounds = Toolkit.getDefaultToolkit().getScreenSize();
-               setSize(bounds.width,bounds.height - 40);
+               setSize(bounds.width,bounds.height - 28);
                setLocation(0, 0);
-               // setResizable(false);
                setBackground(Color.white);
+               advanceStatus();
                setVisible(true);
                show();
        }
@@ -120,9 +120,11 @@ public class MooGUI extends JFrame {
         * Changes the sequence of the GUI.
         * @param sequence      the MIDI sequence to visualize
         */
-       public void setSequence(Sequence sequence) {
+       public void setSequence(Sequence sequence, File file) {
                seq = sequence;
-               view.setTracks(seq.getTracks());
+               if (file != null) setTitle("Moosique - " + file.getName());
+               else setTitle("Moosique");
+               view.setTracks(seq.getTracks(), true);
                toolbar.resetProgInd();
        }
 
@@ -139,23 +141,34 @@ public class MooGUI extends JFrame {
         * Calls on the main view to update the track views,
         * and on the toolbar to update the progress indicator.
         */
-       public void update(long tickPosition){
-               view.update(tickPosition);
+       public synchronized void update(long tickPosition){
+               if (updateView) view.update(tickPosition);
                toolbar.updateProgInd(tickPosition);
        }
 
+       public MooView getView() {
+               return view;
+       }
+
        /**
         * Creates an action for a specific octave.
-        * @param octave The octave we want an action for.
+        * @param increase      true for increase, false for decrease
         */
-       private Action createOctaveAction(final int octave) {
+       private Action createOctaveAction(final boolean increase) {
                Action octaveAction = new AbstractAction() {
                        public void actionPerformed(ActionEvent ae) {
-                               MooKeyboard.setOctave(octave);
+                               MooKeyboard.setRelativeOctave(increase);
                        }};
                return octaveAction;
        }
 
+       /** 
+        * Advances the current progress counter by printing a "." to the System output.
+        */
+       private void advanceStatus() {
+               System.out.print(".");
+       }
+
        /**
         * Listener for closing the program
         */