Subversion Repositories svn.mios

Rev

Rev 628 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 628 Rev 721
Line 48... Line 48...
48
import org.midibox.midi.MidiUtils;
48
import org.midibox.midi.MidiUtils;
49
49
50
public class MidiParameterProperties extends JPanel implements Observer,
50
public class MidiParameterProperties extends JPanel implements Observer,
51
        ActionListener, ListSelectionListener, ChangeListener {
51
        ActionListener, ListSelectionListener, ChangeListener {
52
52
53
    protected MidiParameter midiParameter;
53
    protected MidiParameterControl midiParameterControl;
54
54
55
    protected JToggleButton midiLearn;
55
    protected JToggleButton midiLearn;
56
56
57
    protected JSpinner channelSpinner;
57
    protected JSpinner channelSpinner;
58
58
Line 80... Line 80...
80
80
81
    protected JPanel numberPanel;
81
    protected JPanel numberPanel;
82
82
83
    protected boolean update = true;
83
    protected boolean update = true;
84
84
85
    public MidiParameterProperties(MidiParameter midiParameter) {
85
    public MidiParameterProperties(MidiParameterControl midiParameterControl) {
86
        super(new BorderLayout());
86
        super(new BorderLayout());
87
        this.midiParameter = midiParameter;
87
        this.midiParameterControl = midiParameterControl;
88
        midiParameter.addObserver(this);
88
        midiParameterControl.addObserver(this);
89
89
90
        add(createMainPanel(), BorderLayout.CENTER);
90
        add(createMainPanel(), BorderLayout.CENTER);
91
91
92
        midiLearnPanel = new JPanel(new BorderLayout());
92
        midiLearnPanel = new JPanel(new BorderLayout());
93
93
Line 138... Line 138...
138
138
139
        defaultValueLabel = new JLabel("Channel Pressure Value: ", JLabel.LEFT);
139
        defaultValueLabel = new JLabel("Channel Pressure Value: ", JLabel.LEFT);
140
        defaultPanel.add(defaultValueLabel);
140
        defaultPanel.add(defaultValueLabel);
141
141
142
        defaultValueSpinner = new JSpinner(new SpinnerNumberModel(0, 0,
142
        defaultValueSpinner = new JSpinner(new SpinnerNumberModel(0, 0,
143
                midiParameter.getMidiMaxValue(), 1));
143
                midiParameterControl.getMidiMaxValue(), 1));
144
        defaultValueSpinner.addChangeListener(this);
144
        defaultValueSpinner.addChangeListener(this);
145
        defaultPanel.add(defaultValueSpinner);
145
        defaultPanel.add(defaultValueSpinner);
146
146
147
        defaultPanel.setBorder(BorderFactory
147
        defaultPanel.setBorder(BorderFactory
148
                .createTitledBorder("Default \"On\" Value"));
148
                .createTitledBorder("Default \"On\" Value"));
Line 189... Line 189...
189
        return mainPanel;
189
        return mainPanel;
190
    }
190
    }
191
191
192
    public void updateControls() {
192
    public void updateControls() {
193
193
194
        boolean isLearn = midiParameter.isLearn();
194
        boolean isLearn = midiParameterControl.isLearn();
195
195
196
        midiLearn.setSelected(isLearn);
196
        midiLearn.setSelected(isLearn);
197
197
198
        int status = midiParameter.getMidiStatus();
198
        int status = midiParameterControl.getMidiStatus();
199
199
200
        statusComboBox
200
        statusComboBox
201
                .setSelectedIndex((midiParameter.getMidiStatus() >> 4) - 9);
201
                .setSelectedIndex((midiParameterControl.getMidiStatus() >> 4) - 9);
202
        statusComboBox.setEnabled(!isLearn);
202
        statusComboBox.setEnabled(!isLearn);
203
203
204
        String[] listData = new String[128];
204
        String[] listData = new String[128];
205
205
206
        for (int i = 0; i < listData.length; i++) {
206
        for (int i = 0; i < listData.length; i++) {
Line 217... Line 217...
217
217
218
        } else if (status == MidiParameter.CONTROL_CHANGE) {
218
        } else if (status == MidiParameter.CONTROL_CHANGE) {
219
            nameList.setEnabled(true && !isLearn);
219
            nameList.setEnabled(true && !isLearn);
220
            nameScrollPane.setEnabled(true && !isLearn);
220
            nameScrollPane.setEnabled(true && !isLearn);
221
221
222
            if (midiParameter.isHighResolution()) {
222
            if (midiParameterControl.isHighResolution()) {
223
                for (int i = 0; i < listData.length; i++) {
223
                for (int i = 0; i < listData.length; i++) {
224
                    listData[i] = i + ": " + MidiUtils.cc14BitNames[i];
224
                    listData[i] = i + ": " + MidiUtils.cc14BitNames[i];
225
                }
225
                }
226
            } else {
226
            } else {
227
                for (int i = 0; i < listData.length; i++) {
227
                for (int i = 0; i < listData.length; i++) {
Line 240... Line 240...
240
            nameList.setEnabled(false);
240
            nameList.setEnabled(false);
241
            nameScrollPane.setEnabled(false);
241
            nameScrollPane.setEnabled(false);
242
        }
242
        }
243
243
244
        nameList.setListData(listData);
244
        nameList.setListData(listData);
245
        nameList.setSelectedIndex(midiParameter.getMidiNumber());
245
        nameList.setSelectedIndex(midiParameterControl.getMidiNumber());
246
        nameList.ensureIndexIsVisible(midiParameter.getMidiNumber());
246
        nameList.ensureIndexIsVisible(midiParameterControl.getMidiNumber());
247
247
248
        if (status == MidiParameter.NOTE_ON) {
248
        if (status == MidiParameter.NOTE_ON) {
249
            defaultValueLabel.setText("Note On Velocity:       ");
249
            defaultValueLabel.setText("Note On Velocity:       ");
250
250
251
        } else if (status == MidiParameter.AFTERTOUCH) {
251
        } else if (status == MidiParameter.AFTERTOUCH) {
Line 263... Line 263...
263
        } else if (status == MidiParameter.PITCH_BEND) {
263
        } else if (status == MidiParameter.PITCH_BEND) {
264
            defaultValueLabel.setText("Pitch Bend Value:       ");
264
            defaultValueLabel.setText("Pitch Bend Value:       ");
265
        }
265
        }
266
266
267
        channelSpinner.getModel().setValue(
267
        channelSpinner.getModel().setValue(
268
                new Integer(midiParameter.getMidiChannel() + 1));
268
                new Integer(midiParameterControl.getMidiChannel() + 1));
269
        channelSpinner.setEnabled(!isLearn);
269
        channelSpinner.setEnabled(!isLearn);
270
270
271
        ((SpinnerNumberModel) defaultValueSpinner.getModel())
271
        ((SpinnerNumberModel) defaultValueSpinner.getModel())
272
                .setValue(new Integer(midiParameter.getMidiDefaultValue()));
272
                .setValue(new Integer(midiParameterControl.getMidiDefaultValue()));
273
        ((SpinnerNumberModel) defaultValueSpinner.getModel())
273
        ((SpinnerNumberModel) defaultValueSpinner.getModel())
274
                .setMaximum(new Integer(midiParameter.getMidiMaxValue()));
274
                .setMaximum(new Integer(midiParameterControl.getMidiMaxValue()));
275
        defaultValueSpinner.setEnabled(!isLearn);
275
        defaultValueSpinner.setEnabled(!isLearn);
276
276
277
        highResolution.setSelected(((MidiParameterControl) midiParameter)
277
        highResolution.setSelected(((MidiParameterControl) midiParameterControl)
278
                .isHighResolution());
278
                .isHighResolution());
279
        highResolution
279
        highResolution
280
                .setEnabled(!((MidiParameterControl) midiParameter).isLearn()
280
                .setEnabled(!((MidiParameterControl) midiParameterControl).isLearn()
281
                        && ((MidiParameterControl) midiParameter)
281
                        && ((MidiParameterControl) midiParameterControl)
282
                                .getMidiStatus() == MidiParameterControl.CONTROL_CHANGE);
282
                                .getMidiStatus() == MidiParameterControl.CONTROL_CHANGE);
283
    }
283
    }
284
284
285
    public void stateChanged(ChangeEvent ce) {
285
    public void stateChanged(ChangeEvent ce) {
286
        if (update) {
286
        if (update) {
287
            update = false;
287
            update = false;
288
            Object source = ce.getSource();
288
            Object source = ce.getSource();
289
289
290
            if (source == channelSpinner) {
290
            if (source == channelSpinner) {
291
                midiParameter.setMidiChannel(((Integer) channelSpinner
291
                midiParameterControl.setMidiChannel(((Integer) channelSpinner
292
                        .getModel().getValue()).intValue() - 1);
292
                        .getModel().getValue()).intValue() - 1);
293
            }
293
            }
294
            if (source == defaultValueSpinner) {
294
            if (source == defaultValueSpinner) {
295
                midiParameter
295
                midiParameterControl
296
                        .setMidiDefaultValue(((Integer) defaultValueSpinner
296
                        .setMidiDefaultValue(((Integer) defaultValueSpinner
297
                                .getModel().getValue()).intValue());
297
                                .getModel().getValue()).intValue());
298
            }
298
            }
299
            update = true;
299
            update = true;
300
        }
300
        }
Line 302... Line 302...
302
302
303
    public void valueChanged(ListSelectionEvent lse) {
303
    public void valueChanged(ListSelectionEvent lse) {
304
        if (update) {
304
        if (update) {
305
            update = false;
305
            update = false;
306
            if (nameList.getSelectedIndex() >= 0) {
306
            if (nameList.getSelectedIndex() >= 0) {
307
                midiParameter.setMidiNumber(nameList.getSelectedIndex());
307
                midiParameterControl.setMidiNumber(nameList.getSelectedIndex());
308
            }
308
            }
309
            update = true;
309
            update = true;
310
        }
310
        }
311
    }
311
    }
312
312
313
    public void update(Observable observable, Object object) {
313
    public void update(Observable observable, Object object) {
314
        if (observable == midiParameter) {
314
        if (observable == midiParameterControl) {
315
            if (object != MidiParameter.VALUE) {
315
            if (object != MidiParameter.VALUE) {
316
                updateControls();
316
                updateControls();
317
            }
317
            }
318
        }
318
        }
319
    }
319
    }
Line 323... Line 323...
323
            update = false;
323
            update = false;
324
324
325
            Object source = ae.getSource();
325
            Object source = ae.getSource();
326
326
327
            if (source == statusComboBox) {
327
            if (source == statusComboBox) {
328
                midiParameter
328
                midiParameterControl
329
                        .setMidiStatus((statusComboBox.getSelectedIndex() + 9) << 4);
329
                        .setMidiStatus((statusComboBox.getSelectedIndex() + 9) << 4);
330
            } else if (source == midiLearn) {
330
            } else if (source == midiLearn) {
331
                midiParameter.setLearn(midiLearn.isSelected());
331
                midiParameterControl.setLearn(midiLearn.isSelected());
332
            } else if (source == highResolution) {
332
            } else if (source == highResolution) {
333
                midiParameter.setHighResolution(highResolution.isSelected());
333
                midiParameterControl.setHighResolution(highResolution.isSelected());
334
            }
334
            }
335
            update = true;
335
            update = true;
336
        }
336
        }
337
    }
337
    }
338
}
338
}