/**
* A Combo Box where the instrument of the currently active channel can be selected.
*
- * @author Einar Pehrson
+ * @author Einar Pehrson, Michael Andreen
*/
public class MooInstrumentList extends JComboBox implements ActionListener {
protected int channel;
-
- public MooInstrumentList(int instrument) {
+ public MooInstrumentList(int chan) {
super(instruments);
- setSelectedIndex(instrument);
+ setChannel(chan);
setFont(new Font("Helvetica", Font.PLAIN, 10));
addActionListener(this);
}
public void setChannel(int chan){
channel = chan;
- setSelectedIndex(Moosique.getChannel(chan).getProgram());
+ System.out.println(chan);
+ setSelectedIndex(Moosique.getChannel(channel).getProgram());
+ System.out.println(Moosique.getChannel(channel).getProgram());
}
public void actionPerformed(ActionEvent e) {
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) {
track = aTrack;
+ this.trackNum = aTrackNum;
// Finds track name and program change
MidiMessage msg;
add(channelBox);
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);
// If MIDI file is of type 0, creates a view for the track.
trackPanel.setLayout(new FlowLayout());
trackPanel.add(new MooTrackView(tracks[0]));
- titlePanel.add(new MooTrackTitle(tracks[0]));
+ titlePanel.add(new MooTrackTitle(tracks[0],0));
} else {
// Creates dialog for progress bar.
JDialog progressDialog = new JDialog(Moosique.getGUI(), "Visualizing...", false);
trackPanel.setLayout(new GridLayout(1,numberOfTracks));
for (int i = 1; i < tracks.length; i++) {
trackPanel.add(new MooTrackView(tracks[i]));
- titlePanel.add(new MooTrackTitle(tracks[i]));
+ titlePanel.add(new MooTrackTitle(tracks[i],i));
progressBar.setValue(i+1);
}
progressDialog.dispose();
((GridLayout)trackPanel.getLayout()).setColumns(++numberOfTracks);
((GridLayout)titlePanel.getLayout()).setColumns(++numberOfTracks);
trackPanel.add(new MooTrackView(track), index);
- titlePanel.add(new MooTrackTitle(track), index);
+ titlePanel.add(new MooTrackTitle(track,index), index);
validate();
}