]> ruin.nu Git - moosique.git/blob - MooGUI.java
Changed window size and TrackView generation. Updated Toolbar listeners, and cleaned...
[moosique.git] / MooGUI.java
1 import javax.sound.midi.*;
2 import javax.swing.*;
3 import java.awt.*;
4 import java.awt.event.*;
5
6 /**
7  * Moosique's graphical user interface.
8  * 
9  * @author  Mikael Andreen
10  */
11  
12 public class MooGUI extends JFrame {
13
14         private Sequence seq;
15
16         private JPanel trackPanel;
17         private MooTrackView[] trackViews;
18         private JLabel statusBar;
19
20         public static Font standardFont = new Font("Helvetica", Font.PLAIN, 10);
21         
22         /** 
23          * Creates the GUI.
24          */
25         public MooGUI(Sequence seq) {
26                 super("Moosique");
27
28                 this.seq = seq;
29                 
30                 Container pane = getContentPane();
31                 pane.setLayout(new BorderLayout());
32                 
33                 // Adds menu bar.
34                 setJMenuBar(new MooMenu());
35
36                 // Adds toolbar.
37                 pane.add(new MooToolbar(), BorderLayout.NORTH);
38
39                 // Adds tracks.
40                 trackPanel = new JPanel(true);
41                 createTrackViews();
42                 pane.add(trackPanel, BorderLayout.CENTER);
43
44                 // Adds status bar.
45                 statusBar = new JLabel("Welcome to Moosique!", JLabel.CENTER);
46                 pane.add(statusBar, BorderLayout.SOUTH);
47
48                 addWindowListener(new MooGUICloser());
49                 pack();
50                 Dimension bounds = Toolkit.getDefaultToolkit().getScreenSize();
51                 setSize(bounds.width,bounds.height - 60);
52                 setLocation(0, 0);
53                 // setResizable(false);
54                 setBackground(Color.white);
55                 setVisible(true);
56                 show();
57         }
58         
59         /** 
60          * Changes the sequence of the GUI.
61          * @param sequence      the MIDI sequence to visualize
62          */
63         public void setSequence(Sequence sequence) {
64                 seq = sequence;
65                 createTrackViews();
66         }
67
68         /** 
69          * Shows the given message in the status bar.
70          * @param text  the message to show
71          */
72         public void setStatus(String text) {
73                 statusBar.setText(text);
74         }
75         
76         private void createTrackViews() {
77                 trackPanel.removeAll();
78                 Track[] tracks = seq.getTracks();
79                 trackPanel.setLayout(new GridLayout(1, tracks.length));
80                 trackViews = new MooTrackView[tracks.length];
81                 for (int i = 0; i < tracks.length; i++) {
82                         trackViews[i] = new MooTrackView(tracks[i]);
83                         trackPanel.add(new MooTrackView(tracks[i]));
84                 }
85                 trackPanel.validate();
86         }
87
88         class MooGUICloser extends WindowAdapter {
89                 public void windowClosing(WindowEvent e) {Moosique.quit();}
90         }
91 }