-import javax.swing.*;
-import java.awt.*;
-import java.awt.event.*;
-import java.beans.*;
-
-/**
- * Graphical representation of a MIDI note.
- *
- * @author Andersson, Andreen, Lanneskog, Pehrson
- * @version 1
- */
-
-public class MooNoteProp extends JDialog{
-
- private MooNote note;
- private JOptionPane optionPane;
- private JTextField pitch;
- private JTextField velocity;
- private JTextField length;
-
- /**
- * Creates a new note preference dialog.
- * @param mn The note that will be graphically represented
- */
- public MooNoteProp(MooNote mn) {
- super((JFrame)null, true);
- note = mn;
- setTitle("Note properties");
-
- pitch = new JTextField(new Integer(note.getPitch()).toString(),3);
- JPanel pitchpanel = new JPanel();
- pitchpanel.add(new Label("Pitch: "));
- pitchpanel.add(pitch);
-
-
- velocity = new JTextField(new Integer(note.getVelocity()).toString(),3);
- JPanel velocitypanel = new JPanel();
- velocitypanel.add(new Label("Velocity: "));
- velocitypanel.add(velocity);
-
- length = new JTextField(new Integer(note.getDuration()).toString(),5);
- JPanel lengthpanel = new JPanel();
- lengthpanel.add(new Label("Length: "));
- lengthpanel.add(length);
-
- Object[] array = {"Set the note properties",
- pitchpanel,
- velocitypanel,
- lengthpanel};
-
- final String btnString1 = "Enter";
- final String btnString2 = "Cancel";
- Object[] options = {btnString1, btnString2};
-
- optionPane = new JOptionPane(array,
- JOptionPane.QUESTION_MESSAGE,
- JOptionPane.YES_NO_OPTION,
- null,
- options,
- options[0]);
- setContentPane(optionPane);
- setDefaultCloseOperation(DISPOSE_ON_CLOSE);
-
- ActionListener intValidator = new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- if (e.getSource() instanceof JTextField){
- JTextField s = (JTextField)e.getSource();
- int num = Integer.parseInt(s.getText());
- if (num < 0)
- num = 0;
- else if (num > 127 && s != length)
- num = 127;
- s.setText(new Integer(num).toString());
- }
- }
- };
- pitch.addActionListener(intValidator);
- velocity.addActionListener(intValidator);
- length.addActionListener(intValidator);
-
- optionPane.addPropertyChangeListener(new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent e) {
- String prop = e.getPropertyName();
-
- if (isVisible()
- && (e.getSource() == optionPane)
- && (prop.equals(JOptionPane.VALUE_PROPERTY) ||
- prop.equals(JOptionPane.INPUT_VALUE_PROPERTY))) {
- Object value = optionPane.getValue();
-
- if (value == JOptionPane.UNINITIALIZED_VALUE) {
- //ignore reset
- return;
- }
-
- // Reset the JOptionPane's value.
- // If you don't do this, then if the user
- // presses the same button next time, no
- // property change event will be fired.
- optionPane.setValue(
- JOptionPane.UNINITIALIZED_VALUE);
-
- if (value.equals(btnString1)) {
- note.setPitch(Integer.parseInt(pitch.getText()));
- note.setVelocity(Integer.parseInt(velocity.getText()));
- note.setDuration(Integer.parseInt(length.getText()));
-
- setVisible(false);
- } else { // user closed dialog or clicked cancel
- setVisible(false);
- }
- }
- }
- });
- pack();
- }
-
- public static void main(String[] args){
-
- MooNote n = new MooNote(0,0,10,20,0,30);
- MooNoteProp prop = new MooNoteProp(n);
- prop.setVisible(true);
- prop = new MooNoteProp(n);
- prop.setVisible(true);
-
- }
-}