]> ruin.nu Git - moosique.git/blobdiff - MooTrackTitle.java
*** empty log message ***
[moosique.git] / MooTrackTitle.java
index 2dfd67f63e2266c015cb7fd86be1902803ed6bea..412fb246f183a521d86246068ca5ec5eb99b8a3f 100644 (file)
@@ -22,12 +22,15 @@ public class MooTrackTitle extends JPanel {
        private JCheckBox mute;
        private JCheckBox solo;
        private Track track;
+       private int trackNum;
 
        /** 
         * Creates the title bar.
         */
-       public MooTrackTitle (Track aTrack) {
+       public MooTrackTitle (Track aTrack, int aTrackNum) {
+               setDoubleBuffered(true);
                track = aTrack;
+               this.trackNum = aTrackNum;
 
                // Finds track name and program change
                MidiMessage msg;
@@ -47,7 +50,10 @@ public class MooTrackTitle extends JPanel {
                MidiEvent event;
                for (int i = 0; i < track.size(); i++) {
                        event = track.get(i);
-                       if (event instanceof MooNote) channel = ((MooNote)event).getChannel();
+                       if (event instanceof MooNote) {
+                               channel = ((MooNote)event).getChannel();
+                               break;
+                       }
                }
                
                // Creates and places components.
@@ -55,32 +61,20 @@ public class MooTrackTitle extends JPanel {
                setBorder(BorderFactory.createLineBorder(Color.black));
 
                setPreferredSize(new Dimension(MooTrackView.VIEW_WIDTH,70));
-               title = new JTextField(trackName); // JTextField(String text, int columns) 
+               title = new JTextField(trackName);
                title.setFont(Moosique.getGUI().FONT);
                title.addFocusListener(new TitleFocusListener());
                add(title);
 
-               instruments = new MooInstrumentList(programChange);
-               add(instruments);
-
-               JPanel checkboxes = new JPanel();
-               checkboxes.setLayout(new GridLayout(1,3));
-
                channelBox = new JComboBox();
                channelBox.setFont(Moosique.getGUI().FONT);
                for (int i = 1; i <= 16; i++)
                        channelBox.addItem(new Integer(i));
 
-               for (int j = 0; j < track.size(); j++) {
-                       MidiEvent me = track.get(j);
-               if (me instanceof MooNote){
-                               MooNote mn = (MooNote)me;
-                               channelBox.setSelectedIndex(mn.getChannel());
-                               break;
-                       }
-        }
+               channelBox.setSelectedIndex(channel);
 
                instruments = new MooInstrumentList(channelBox.getSelectedIndex());
+               add(instruments);
 
                channelBox.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent e){
@@ -95,24 +89,38 @@ public class MooTrackTitle extends JPanel {
                                                        mn.setChannel(chan);
                                                }
                                }}});
-               channelBox.setSelectedIndex(channel);
                add(channelBox);
 
+               JPanel checkboxes = new JPanel();
+               checkboxes.setLayout(new GridLayout(1,3));
+
                mute = new JCheckBox("Mute");
+               mute.setSelected(Moosique.getSequencer().getTrackMute(trackNum));
                mute.setFont(Moosique.getGUI().FONT);
                mute.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent event){
-                                       //setMute
-                                       solo.setSelected(false);
+                                       boolean selected = mute.isSelected();
+                                       if (selected){
+                                               solo.setSelected(false);
+                                               Moosique.getSequencer().setTrackSolo(trackNum, false);
+                                       }
+                                       Moosique.getSequencer().setTrackMute(trackNum, selected);
+
                                }});
                checkboxes.add(mute);
 
                solo = new JCheckBox("Solo");
+               solo.setSelected(Moosique.getSequencer().getTrackSolo(trackNum));
                solo.setFont(Moosique.getGUI().FONT);
                solo.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent event){
                                        //setSolo
-                                       mute.setSelected(false);
+                                       boolean selected = solo.isSelected();
+                                       if (selected){
+                                               mute.setSelected(false);
+                                               Moosique.getSequencer().setTrackMute(trackNum, false);
+                                       }
+                                       Moosique.getSequencer().setTrackSolo(trackNum, selected);
                                }});
                checkboxes.add(solo);
                add(checkboxes);