import java.awt.*;
import java.awt.event.*;
import java.util.*;
+import java.io.*;
/**
* Moosique's graphical user interface.
private MooView view;
private JLabel statusBar;
private java.util.Timer timer;
+ private boolean updateView = true;
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);
* 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();
}
}};
am.put("Play", playAction);
- am.put("Change octave up", createOctaveAction(1));
- am.put("Change octave down", createOctaveAction(-1));
+ 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);
* 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;
+ if (file != null) setTitle("Moosique - " + file.getName());
+ else setTitle("Moosique");
view.setTracks(seq.getTracks(), true);
toolbar.resetProgInd();
}
* 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);
}
/**
* 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(".");
}