X-Git-Url: https://ruin.nu/git/?p=moosique.git;a=blobdiff_plain;f=MooTrackTitle.java;fp=MooTrackTitle.java;h=6c629d90522651f4743fa765e1fb114b9083dc98;hp=979aed2139208e234f4124871b34b955fe536aef;hb=c31857b9fcb119f0d4c12b96222f66340b3dcc56;hpb=4526e51b70110f7272b0c2a3a5f207657d690029 diff --git a/MooTrackTitle.java b/MooTrackTitle.java index 979aed2..6c629d9 100644 --- a/MooTrackTitle.java +++ b/MooTrackTitle.java @@ -15,12 +15,14 @@ public class MooTrackTitle extends JPanel { private Track track; private MetaMessage trackNameMessage; private ShortMessage programChangeMessage; + private MooTrackView mtv; private JTextField title; private MooInstrumentList instruments; private JComboBox channelBox; private JCheckBox mute; private JCheckBox solo; + private JButton record; private String trackName = ""; private int channel = 0; @@ -63,6 +65,7 @@ public class MooTrackTitle extends JPanel { // Creates and places components. setLayout(new GridLayout(4,1)); setBorder(BorderFactory.createLineBorder(Color.black)); + TitleListener tl = new TitleListener(); setPreferredSize(new Dimension(MooTrackView.VIEW_WIDTH,70)); title = new JTextField(trackName); @@ -84,19 +87,7 @@ public class MooTrackTitle extends JPanel { channelBox.setSelectedIndex(channel); - channelBox.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - channel = channelBox.getSelectedIndex(); - MidiEvent me; - MooNote mn; - instruments.setChannel(channel); - for (int j = 0; j < track.size(); j++) { - me = track.get(j); - if (me instanceof MooNote){ - mn = (MooNote)me; - mn.setChannel(channel); - } - }}}); + channelBox.addActionListener(tl); add(channelBox); JPanel checkboxes = new JPanel(); @@ -106,33 +97,21 @@ public class MooTrackTitle extends JPanel { mute.setSelected(false); Moosique.setTrackMute(track, false); mute.setFont(Moosique.getGUI().FONT); - mute.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent event){ - boolean selected = mute.isSelected(); - if (selected){ - solo.setSelected(false); - Moosique.setTrackSolo(track, false); - } - Moosique.setTrackMute(track, selected); - - }}); + mute.addActionListener(tl); checkboxes.add(mute); solo = new JCheckBox("Solo"); solo.setSelected(false); Moosique.setTrackSolo(track, false); solo.setFont(Moosique.getGUI().FONT); - solo.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent event){ - //setSolo - boolean selected = solo.isSelected(); - if (selected){ - mute.setSelected(false); - Moosique.setTrackMute(track, false); - } - Moosique.setTrackSolo(track, selected); - }}); + solo.addActionListener(tl); checkboxes.add(solo); + + record = new JButton("Record"); + record.setFont(Moosique.getGUI().FONT); + record.addActionListener(tl); + checkboxes.add(record); + add(checkboxes); } @@ -144,6 +123,14 @@ public class MooTrackTitle extends JPanel { return channel; } + /** + * Sets the track view this title should update after recording. + * @param the track view + */ + public void setTrackView(MooTrackView tv) { + mtv = tv; + } + /** * Checks if the focus is lost. */ @@ -152,4 +139,55 @@ public class MooTrackTitle extends JPanel { // Update the MidiEvent containing the title of this track } } + + /** + * Takes the appropriate action when a user selects an item on the popup menu. + */ + class TitleListener implements ActionListener { + public void actionPerformed(ActionEvent e) { + Object source = e.getSource(); + if (source == channelBox) { + channel = channelBox.getSelectedIndex(); + MidiEvent me; + MooNote mn; + instruments.setChannel(channel); + // Query the user before rechannelling??? + for (int j = 0; j < track.size(); j++) { + me = track.get(j); + if (me instanceof MooNote){ + mn = (MooNote)me; + mn.setChannel(channel); + } + } + } else if (source == solo) { + boolean selected = mute.isSelected(); + if (selected){ + solo.setSelected(false); + Moosique.setTrackSolo(track, false); + } + Moosique.setTrackMute(track, selected); + } else if (source == mute) { + boolean selected = solo.isSelected(); + if (selected){ + mute.setSelected(false); + Moosique.setTrackMute(track, false); + } + Moosique.setTrackSolo(track, selected); + } else if (source == record) { + Sequencer sequencer = Moosique.getSequencer(); + if (record.getText() == "Record") { + record.setText("Stop"); + mtv.enableKeyboardRecording(); + sequencer.recordEnable(track, channel); + sequencer.startRecording(); + } else { + record.setText("Record"); + mtv.disableKeyboardRecording(); + sequencer.stopRecording(); + sequencer.recordDisable(track); + mtv.placeNoteElements(); + } + } + } + } }