private Sequence seq;
+ private MooToolbar toolbar;
private JPanel trackPanel;
private MooTrackView[] trackViews;
private JLabel statusBar;
this.seq = seq;
Container pane = getContentPane();
- pane.setLayout(new BorderLayout());
+ pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));
// Adds menu bar.
setJMenuBar(new MooMenu());
// Adds toolbar.
- pane.add(new MooToolbar(), BorderLayout.NORTH);
+ toolbar = new MooToolbar();
+ pane.add(toolbar, BorderLayout.NORTH);
// Adds tracks.
trackPanel = new JPanel(true);
addWindowListener(new MooGUICloser());
pack();
Dimension bounds = Toolkit.getDefaultToolkit().getScreenSize();
- setSize(bounds.width,bounds.height - 60);
+ setSize(bounds.width,bounds.height - 40);
setLocation(0, 0);
// setResizable(false);
setBackground(Color.white);
statusBar.setText(text);
}
+ /**
+ * Fills the track panel with track views for all tracks in the current sequence.
+ */
private void createTrackViews() {
trackPanel.removeAll();
Track[] tracks = seq.getTracks();
}
trackPanel.validate();
}
-
+
class MooGUICloser extends WindowAdapter {
public void windowClosing(WindowEvent e) {Moosique.quit();}
}
import javax.swing.*;
-import java.awt.event.*;
import java.awt.*;
+import java.awt.event.*;
import javax.sound.midi.*;
/**
* Creates the toolbar.
*/
- public MooToolbar() {
+ public MooToolbar() {
mouseAdapter = new MooMouseAdapter();
rewind = createButton("images/rewind.gif", "Rewind");
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
+import javax.sound.midi.*;
/**
* The title bar for each track with track name, channel, instrument etc.
* @version 1
*/
-public class MooTrackTitle extends JPanel{
+public class MooTrackTitle extends JPanel {
+ private JTextField title;
private MooInstrumentList instruments;
private JComboBox channel;
private JCheckBox mute;
/**
* Creates the title bar.
*/
- public MooTrackTitle () {
- setLayout(new GridLayout(3,1));
+ public MooTrackTitle (Track track) {
+ setLayout(new GridLayout(4,1));
+
+ title = new JTextField(); // JTextField(String text, int columns)
+ title.addFocusListener(new TitleFocusListener());
+ add(title);
+
instruments = new MooInstrumentList();
add(instruments);
checkboxes.add(solo);
add(checkboxes);
}
-}
+
+ class TitleFocusListener extends FocusAdapter {
+ public void focusLost(FocusEvent e) {
+ // Update the MidiEvent containing the title of this track
+ }
+ }
+}
\ No newline at end of file
import javax.swing.*;
-import java.awt.event.*;
import java.awt.*;
+import java.awt.event.*;
import javax.sound.midi.*;
/**
private JPopupMenu popup;
private JMenuItem menuItem;
- private static final int NOTEVIEW_HEIGHT = 200;
-
public MooTrackView (Track track) {
+ setPreferredSize(new Dimension(200, 200));
setLayout(new BorderLayout());
this.setBorder(BorderFactory.createLineBorder(Color.black));
- title = new MooTrackTitle();
+ title = new MooTrackTitle(track);
title.setBorder(BorderFactory.createLineBorder(Color.black));
add(title, BorderLayout.NORTH);
}
}
+ /**
+ * Returns the GUI.
+ * @return the GUI
+ */
+ public static MooGUI getGUI() {
+ return gui;
+ }
+
/**
* Returns the current sequence.
* @return the current sequence
Einar: Moosique(4), MooNote(4)
Micke: MooGUI(4), MooTrackTitle(2), MooNoteElement(6), MooNoteProp(4)
-Björn: MooMenu(8), MooToolbar(3), MooView(2), MooViewCounter(1)
+Björn: MooMenu(8), MooToolbar(3), MooViewCounter(1)
Rolle: MooTrackView(16)
\f
-Fixa en progress indicator till filladdningen om den tänker ta så lång tid.
+VIKTIGT! Implementera playfunktionens beteende. När play aktiveras ska följande loop köras:
+
+ while(sequencer.isRunning()) {
+ Moosique.getGUI().update();
+ }
+
+ i GUI:
+
+ public void update() {
+ // Calls on each track view to update itself.
+ for (int i = 0; i < trackViews.length; i++) {
+ trackViews[i].update();
+ }
+ // Calls on the toolbar to update the progress indicator.
+ toolbar.updateProgInd();
+ }
+
+ När låten är slut återställes play-knappen.
+
+ Göra detta som en tråd?!?
+
+\f
+x Fixa en progress indicator till filladdningen om den tänker ta så lång tid.
\f
MooMenu