OSDN Git Service

MIDIイベントテーブル、MIDIシーケンス自動生成時の
[midichordhelper/MIDIChordHelper.git] / src / camidion / chordhelper / midieditor / TimeSignatureSelecter.java
index 2c213ec..57f96be 100644 (file)
-package camidion.chordhelper.midieditor;\r
-\r
-import javax.sound.midi.MetaEventListener;\r
-import javax.sound.midi.MetaMessage;\r
-import javax.swing.JComboBox;\r
-import javax.swing.JLabel;\r
-import javax.swing.JPanel;\r
-import javax.swing.JSpinner;\r
-import javax.swing.SpinnerNumberModel;\r
-import javax.swing.SwingUtilities;\r
-\r
-/**\r
- * 拍子選択ビュー\r
- */\r
-public class TimeSignatureSelecter extends JPanel implements MetaEventListener {\r
-       SpinnerNumberModel upperTimesigSpinnerModel = new SpinnerNumberModel(4, 1, 32, 1);\r
-       private JSpinner upperTimesigSpinner = new JSpinner(\r
-               upperTimesigSpinnerModel\r
-       ) {\r
-               {\r
-                       setToolTipText("Time signature (upper digit) - 拍子の分子");\r
-               }\r
-       };\r
-       JComboBox<String> lowerTimesigCombobox = new JComboBox<String>() {\r
-               {\r
-                       setToolTipText("Time signature (lower digit) - 拍子の分母");\r
-                       for( int i=0; i<6; i++ ) addItem( "/" + (1<<i) );\r
-                       setSelectedIndex(2);\r
-               }\r
-       };\r
-       private class SetValueRunnable implements Runnable {\r
-               byte[] qpm;\r
-               public SetValueRunnable(byte[] qpm) { this.qpm = qpm; }\r
-               @Override\r
-               public void run() { setValue(qpm);}\r
-       }\r
-       @Override\r
-       public void meta(MetaMessage msg) {\r
-               switch(msg.getType()) {\r
-               case 0x58: // Time signature (4 bytes) - 拍子\r
-                       if( ! SwingUtilities.isEventDispatchThread() ) {\r
-                               SwingUtilities.invokeLater(new SetValueRunnable(msg.getData()));\r
-                               break;\r
-                       }\r
-                       setValue(msg.getData());\r
-                       break;\r
-               }\r
-       }\r
-       private class TimeSignatureLabel extends JLabel {\r
-               private byte upper = -1;\r
-               private byte lower_index = -1;\r
-               {\r
-                       setToolTipText("Time signature - 拍子");\r
-               }\r
-               public void setTimeSignature(byte upper, byte lower_index) {\r
-                       if( this.upper == upper && this.lower_index == lower_index ) {\r
-                               return;\r
-                       }\r
-                       setText("<html><font size=\"+1\">" + upper + "/" + (1 << lower_index) + "</font></html>");\r
-               }\r
-       }\r
-       private TimeSignatureLabel timesigValueLabel = new TimeSignatureLabel();\r
-       private boolean editable;\r
-       public TimeSignatureSelecter() {\r
-               add(upperTimesigSpinner);\r
-               add(lowerTimesigCombobox);\r
-               add(timesigValueLabel);\r
-               setEditable(true);\r
-       }\r
-       public void clear() {\r
-               upperTimesigSpinnerModel.setValue(4);\r
-               lowerTimesigCombobox.setSelectedIndex(2);\r
-       }\r
-       public int getUpperValue() {\r
-               return upperTimesigSpinnerModel.getNumber().intValue();\r
-       }\r
-       public byte getUpperByte() {\r
-               return upperTimesigSpinnerModel.getNumber().byteValue();\r
-       }\r
-       public int getLowerValueIndex() {\r
-               return lowerTimesigCombobox.getSelectedIndex();\r
-       }\r
-       public byte getLowerByte() {\r
-               return (byte)getLowerValueIndex();\r
-       }\r
-       public byte[] getByteArray() {\r
-               byte[] data = new byte[4];\r
-               data[0] = getUpperByte();\r
-               data[1] = getLowerByte();\r
-               data[2] = (byte)( 96 >> getLowerValueIndex() );\r
-               data[3] = 8;\r
-               return data;\r
-       }\r
-       public void setValue(byte upper, byte lowerIndex) {\r
-               upperTimesigSpinnerModel.setValue( upper );\r
-               lowerTimesigCombobox.setSelectedIndex( lowerIndex );\r
-               timesigValueLabel.setTimeSignature( upper, lowerIndex );\r
-       }\r
-       public void setValue(byte[] data) {\r
-               if(data == null)\r
-                       clear();\r
-               else\r
-                       setValue(data[0], data[1]);\r
-       }\r
-       public boolean isEditable() { return editable; }\r
-       public void setEditable( boolean editable ) {\r
-               this.editable = editable;\r
-               upperTimesigSpinner.setVisible(editable);\r
-               lowerTimesigCombobox.setVisible(editable);\r
-               timesigValueLabel.setVisible(!editable);\r
-               if( !editable ) {\r
-                       timesigValueLabel.setTimeSignature(getUpperByte(), getLowerByte());\r
-               }\r
-       }\r
+package camidion.chordhelper.midieditor;
+
+import javax.sound.midi.MetaEventListener;
+import javax.sound.midi.MetaMessage;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JSpinner;
+import javax.swing.SpinnerNumberModel;
+import javax.swing.SwingUtilities;
+
+/**
+ * 拍子選択ビュー
+ */
+public class TimeSignatureSelecter extends JPanel implements MetaEventListener {
+       SpinnerNumberModel upperTimesigSpinnerModel = new SpinnerNumberModel(4, 1, 32, 1);
+       private JSpinner upperTimesigSpinner = new JSpinner(
+               upperTimesigSpinnerModel
+       ) {
+               {
+                       setToolTipText("Time signature (upper digit) - 拍子の分子");
+               }
+       };
+       JComboBox<String> lowerTimesigCombobox = new JComboBox<String>() {
+               {
+                       setToolTipText("Time signature (lower digit) - 拍子の分母");
+                       for( int i=0; i<6; i++ ) addItem( "/" + (1<<i) );
+                       setSelectedIndex(2);
+               }
+       };
+       private class SetValueRunnable implements Runnable {
+               byte[] timesig;
+               public SetValueRunnable(byte[] timesig) { this.timesig = timesig; }
+               @Override
+               public void run() { setValue(timesig);}
+       }
+       @Override
+       public void meta(MetaMessage msg) {
+               switch(msg.getType()) {
+               case 0x58: // Time signature (4 bytes) - 拍子
+                       if( SwingUtilities.isEventDispatchThread() ) {
+                               setValue(msg.getData());
+                       } else {
+                               SwingUtilities.invokeLater(new SetValueRunnable(msg.getData()));
+                       }
+                       break;
+               }
+       }
+       private class TimeSignatureLabel extends JLabel {
+               private byte upper = -1;
+               private byte lower_index = -1;
+               {
+                       setToolTipText("Time signature - 拍子");
+               }
+               public void setTimeSignature(byte upper, byte lower_index) {
+                       if( this.upper == upper && this.lower_index == lower_index ) {
+                               return;
+                       }
+                       setText("<html><font size=\"+1\">" + upper + "/" + (1 << lower_index) + "</font></html>");
+               }
+       }
+       private TimeSignatureLabel timesigValueLabel = new TimeSignatureLabel();
+       private boolean editable;
+       public TimeSignatureSelecter() {
+               add(upperTimesigSpinner);
+               add(lowerTimesigCombobox);
+               add(timesigValueLabel);
+               setEditable(true);
+       }
+       public void clear() {
+               upperTimesigSpinnerModel.setValue(4);
+               lowerTimesigCombobox.setSelectedIndex(2);
+       }
+       public int getUpperValue() {
+               return upperTimesigSpinnerModel.getNumber().intValue();
+       }
+       public byte getUpperByte() {
+               return upperTimesigSpinnerModel.getNumber().byteValue();
+       }
+       public int getLowerValueIndex() {
+               return lowerTimesigCombobox.getSelectedIndex();
+       }
+       public byte getLowerByte() {
+               return (byte)getLowerValueIndex();
+       }
+       public byte[] getByteArray() {
+               byte[] data = new byte[4];
+               data[0] = getUpperByte();
+               data[1] = getLowerByte();
+               data[2] = (byte)( 96 >> getLowerValueIndex() );
+               data[3] = 8;
+               return data;
+       }
+       public void setValue(byte upper, byte lowerIndex) {
+               upperTimesigSpinnerModel.setValue( upper );
+               lowerTimesigCombobox.setSelectedIndex( lowerIndex );
+               timesigValueLabel.setTimeSignature( upper, lowerIndex );
+       }
+       public void setValue(byte[] data) {
+               if(data == null)
+                       clear();
+               else
+                       setValue(data[0], data[1]);
+       }
+       public boolean isEditable() { return editable; }
+       public void setEditable( boolean editable ) {
+               this.editable = editable;
+               upperTimesigSpinner.setVisible(editable);
+               lowerTimesigCombobox.setVisible(editable);
+               timesigValueLabel.setVisible(!editable);
+               if( !editable ) {
+                       timesigValueLabel.setTimeSignature(getUpperByte(), getLowerByte());
+               }
+       }
 }
\ No newline at end of file