+import javax.sound.midi.*;
import javax.swing.*;
+import java.awt.*;
+import java.awt.event.*;
/**
* Moosique's graphical user interface.
*
- * @author Andersson, Andreen, Lanneskog, Pehrson
- * @version 1
+ * @author Mikael Andreen
*/
-public class MooGUI {
+public class MooGUI extends JFrame {
+ private Sequence seq;
+
+ private MooToolbar toolbar;
+ private JPanel trackPanel;
+ private MooTrackView[] trackViews;
+ private JLabel statusBar;
+
+ public static Font standardFont = new Font("Helvetica", Font.PLAIN, 10);
+
/**
* Creates the GUI.
*/
- public MooGUI () {
+ public MooGUI(Sequence seq) {
+ super("Moosique");
+
+ this.seq = seq;
+
+ Container pane = getContentPane();
+ pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));
+
+ // Adds menu bar.
+ setJMenuBar(new MooMenu());
+ // Adds toolbar.
+ toolbar = new MooToolbar();
+ pane.add(toolbar, BorderLayout.NORTH);
+
+ // Adds tracks.
+ trackPanel = new JPanel(true);
+ createTrackViews();
+ pane.add(trackPanel, BorderLayout.CENTER);
+
+ // Adds status bar.
+ statusBar = new JLabel("Welcome to Moosique!", JLabel.CENTER);
+ pane.add(statusBar, BorderLayout.SOUTH);
+
+ addWindowListener(new MooGUICloser());
+ pack();
+ Dimension bounds = Toolkit.getDefaultToolkit().getScreenSize();
+ setSize(bounds.width,bounds.height - 40);
+ setLocation(0, 0);
+ // setResizable(false);
+ setBackground(Color.white);
+ setVisible(true);
+ show();
+ }
+
+ /**
+ * Changes the sequence of the GUI.
+ * @param sequence the MIDI sequence to visualize
+ */
+ public void setSequence(Sequence sequence) {
+ seq = sequence;
+ createTrackViews();
}
/**
- *
+ * Shows the given message in the status bar.
+ * @param text the message to show
+ */
+ public void setStatus(String text) {
+ statusBar.setText(text);
+ }
+
+ /**
+ * Fills the track panel with track views for all tracks in the current sequence.
*/
- public void () {
+ private void createTrackViews() {
+ trackPanel.removeAll();
+ Track[] tracks = seq.getTracks();
+ trackPanel.setLayout(new GridLayout(1, tracks.length));
+ trackViews = new MooTrackView[tracks.length];
+ for (int i = 0; i < tracks.length; i++) {
+ trackViews[i] = new MooTrackView(tracks[i]);
+ trackPanel.add(new MooTrackView(tracks[i]));
+ }
+ trackPanel.validate();
+ }
+ class MooGUICloser extends WindowAdapter {
+ public void windowClosing(WindowEvent e) {Moosique.quit();}
}
-}
+}
\ No newline at end of file