OSDN Git Service

・文字コード判定方法の改善
[midichordhelper/MIDIChordHelper.git] / src / camidion / chordhelper / midieditor / MidiProgramFamilySelecter.java
1 package camidion.chordhelper.midieditor;
2
3 import java.awt.event.ActionEvent;
4 import java.awt.event.ActionListener;
5
6 import javax.swing.JComboBox;
7
8 import camidion.chordhelper.music.MIDISpec;
9
10 /**
11  * MIDI Instrument (Program) Family - 音色ファミリーの選択
12  */
13 public class MidiProgramFamilySelecter extends JComboBox<String> implements ActionListener {
14         private MidiProgramSelecter programSelecter = null;
15         public MidiProgramFamilySelecter() { this(null); }
16         public MidiProgramFamilySelecter( MidiProgramSelecter mps ) {
17                 programSelecter = mps;
18                 setMaximumRowCount(17);
19                 addItem("Program:");
20                 for( int i=0; i < MIDISpec.instrumentFamilyNames.length; i++ ) {
21                         addItem( (i*8) + "-" + (i*8+7) + ": " + MIDISpec.instrumentFamilyNames[i] );
22                 }
23                 setSelectedIndex(0);
24                 addActionListener(this);
25         }
26         public void actionPerformed(ActionEvent event) {
27                 if( programSelecter == null ) return;
28                 int i = getSelectedIndex();
29                 programSelecter.setFamily( i < 0 ? i : i-1 );
30         }
31         public int getProgram() {
32                 int i = getSelectedIndex();
33                 if( i <= 0 ) return -1;
34                 else return (i-1)*8;
35         }
36         public String getProgramFamilyName() { return (String)( getSelectedItem() ); }
37         public void setProgram( int programNumber ) {
38                 if( programNumber < 0 ) programNumber = 0;
39                 else programNumber = programNumber / 8 + 1;
40                 setSelectedIndex( programNumber );
41         }
42 }