]> ruin.nu Git - moosique.git/blob - MooGUI.java
no message
[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 MooToolbar toolbar;
17         private JPanel trackPanel;
18         private MooTrackView[] trackViews;
19         private JLabel statusBar;
20
21         public static Font standardFont = new Font("Helvetica", Font.PLAIN, 10);
22         
23         /** 
24          * Creates the GUI.
25          */
26         public MooGUI(Sequence seq) {
27                 super("Moosique");
28
29                 this.seq = seq;
30                 
31                 Container pane = getContentPane();
32                 pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));
33                 
34                 // Adds menu bar.
35                 setJMenuBar(new MooMenu());
36
37                 // Adds toolbar.
38                 toolbar = new MooToolbar();
39                 pane.add(toolbar, BorderLayout.NORTH);
40
41                 // Adds tracks.
42                 trackPanel = new JPanel(true);
43                 createTrackViews();
44                 pane.add(trackPanel, BorderLayout.CENTER);
45
46                 // Adds status bar.
47                 statusBar = new JLabel("Welcome to Moosique!", JLabel.CENTER);
48                 pane.add(statusBar, BorderLayout.SOUTH);
49
50                 addWindowListener(new MooGUICloser());
51                 pack();
52                 Dimension bounds = Toolkit.getDefaultToolkit().getScreenSize();
53                 setSize(bounds.width,bounds.height - 40);
54                 setLocation(0, 0);
55                 // setResizable(false);
56                 setBackground(Color.white);
57                 setVisible(true);
58                 show();
59         }
60         
61         /** 
62          * Changes the sequence of the GUI.
63          * @param sequence      the MIDI sequence to visualize
64          */
65         public void setSequence(Sequence sequence) {
66                 seq = sequence;
67                 createTrackViews();
68         }
69
70         /** 
71          * Shows the given message in the status bar.
72          * @param text  the message to show
73          */
74         public void setStatus(String text) {
75                 statusBar.setText(text);
76         }
77         
78         /** 
79          * Fills the track panel with track views for all tracks in the current sequence.
80          */
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]));
89                 }
90                 trackPanel.validate();
91         }
92         
93         class MooGUICloser extends WindowAdapter {
94                 public void windowClosing(WindowEvent e) {Moosique.quit();}
95         }
96 }