+ public MooTrackTitle (Track aTrack, int aTrackNum) {
+ setDoubleBuffered(true);
+ track = aTrack;
+ this.trackNum = aTrackNum;
+
+ // Finds track name and program change
+ MidiMessage msg;
+ for (int i = 0; i < track.size(); i++) {
+ msg = track.get(i).getMessage();
+ if (msg.getStatus() == 255) {
+ if (((MetaMessage)msg).getType() == 3) {
+ trackNameMessage = (MetaMessage)msg;
+ trackName = new String(trackNameMessage.getData());
+ }
+ } else if (msg.getStatus() == 192) {
+ programChangeMessage = (ShortMessage)msg;
+ programChange = programChangeMessage.getData1();
+ }
+ }
+
+ MidiEvent event;
+ for (int i = 0; i < track.size(); i++) {
+ event = track.get(i);
+ if (event instanceof MooNote) {
+ channel = ((MooNote)event).getChannel();
+ break;
+ }
+ }
+
+ // Creates and places components.
+ setLayout(new GridLayout(4,1));
+ setBorder(BorderFactory.createLineBorder(Color.black));
+
+ setPreferredSize(new Dimension(MooTrackView.VIEW_WIDTH,70));
+ title = new JTextField(trackName);
+ title.setFont(Moosique.getGUI().FONT);
+ title.addFocusListener(new TitleFocusListener());
+ add(title);
+
+ channelBox = new JComboBox();
+ channelBox.setFont(Moosique.getGUI().FONT);
+ for (int i = 1; i <= 16; i++)
+ channelBox.addItem(new Integer(i));
+
+ channelBox.setSelectedIndex(channel);
+
+ instruments = new MooInstrumentList(channelBox.getSelectedIndex());
+ add(instruments);