1 import javax.sound.midi.*;
4 import java.awt.event.*;
7 * Moosique's graphical user interface.
9 * @author Mikael Andreen
12 public class MooGUI extends JFrame {
16 private MooToolbar toolbar;
17 private JPanel trackPanel;
18 private MooTrackView[] trackViews;
19 private JLabel statusBar;
21 public static Font standardFont = new Font("Helvetica", Font.PLAIN, 10);
26 public MooGUI(Sequence seq) {
31 Container pane = getContentPane();
32 pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));
35 setJMenuBar(new MooMenu());
38 toolbar = new MooToolbar();
39 pane.add(toolbar, BorderLayout.NORTH);
42 trackPanel = new JPanel(true);
44 pane.add(trackPanel, BorderLayout.CENTER);
47 statusBar = new JLabel("Welcome to Moosique!", JLabel.CENTER);
48 pane.add(statusBar, BorderLayout.SOUTH);
50 addWindowListener(new MooGUICloser());
52 Dimension bounds = Toolkit.getDefaultToolkit().getScreenSize();
53 setSize(bounds.width,bounds.height - 40);
55 // setResizable(false);
56 setBackground(Color.white);
62 * Changes the sequence of the GUI.
63 * @param sequence the MIDI sequence to visualize
65 public void setSequence(Sequence sequence) {
71 * Shows the given message in the status bar.
72 * @param text the message to show
74 public void setStatus(String text) {
75 statusBar.setText(text);
79 * Fills the track panel with track views for all tracks in the current sequence.
81 private void createTrackViews() {
82 trackPanel.removeAll();
83 Track[] tracks = seq.getTracks();
84 trackPanel.setLayout(new GridLayout(1, tracks.length));
85 trackViews = new MooTrackView[tracks.length];
86 for (int i = 0; i < tracks.length; i++) {
87 trackViews[i] = new MooTrackView(tracks[i]);
88 trackPanel.add(new MooTrackView(tracks[i]));
90 trackPanel.validate();
93 class MooGUICloser extends WindowAdapter {
94 public void windowClosing(WindowEvent e) {Moosique.quit();}