46 |
import javax.swing.JOptionPane; |
import javax.swing.JOptionPane; |
47 |
import javax.swing.JPanel; |
import javax.swing.JPanel; |
48 |
import javax.swing.JRadioButton; |
import javax.swing.JRadioButton; |
|
import javax.swing.JSpinner; |
|
|
import javax.swing.SpinnerNumberModel; |
|
49 |
|
|
50 |
import javax.swing.event.ChangeEvent; |
import javax.swing.event.ChangeEvent; |
51 |
import javax.swing.event.ChangeListener; |
import javax.swing.event.ChangeListener; |
58 |
import net.sf.juife.event.TaskListener; |
import net.sf.juife.event.TaskListener; |
59 |
|
|
60 |
import org.jsampler.CC; |
import org.jsampler.CC; |
61 |
import org.jsampler.Instrument; |
import org.jsampler.OrchestraInstrument; |
62 |
import org.jsampler.JSPrefs; |
import org.jsampler.JSPrefs; |
63 |
import org.jsampler.OrchestraModel; |
import org.jsampler.OrchestraModel; |
64 |
|
|
65 |
|
import org.jsampler.task.Global; |
66 |
import org.jsampler.task.InstrumentsDb; |
import org.jsampler.task.InstrumentsDb; |
67 |
|
|
68 |
|
import org.linuxsampler.lscp.Instrument; |
69 |
|
|
70 |
import static org.jsampler.view.std.StdI18n.i18n; |
import static org.jsampler.view.std.StdI18n.i18n; |
71 |
import static org.linuxsampler.lscp.Parser.*; |
import static org.linuxsampler.lscp.Parser.*; |
72 |
|
|
93 |
private final JComboBox cbInstruments = new JComboBox(); |
private final JComboBox cbInstruments = new JComboBox(); |
94 |
|
|
95 |
|
|
96 |
private final JComboBox cbDbInstrument = createComboBox(); |
private final JComboBox cbDbInstrument = StdUtils.createPathComboBox(); |
97 |
private final JButton btnBrowseDb; |
private final JButton btnBrowseDb; |
98 |
|
|
99 |
private final JLabel lFilename = new JLabel(i18n.getLabel("JSInstrumentChooser.lFilename")); |
private final JLabel lFilename = new JLabel(i18n.getLabel("JSInstrumentChooser.lFilename")); |
100 |
private final JLabel lIndex = new JLabel(i18n.getLabel("JSInstrumentChooser.lIndex")); |
private final JLabel lIndex = new JLabel(i18n.getLabel("JSInstrumentChooser.lIndex")); |
101 |
|
|
102 |
private final JComboBox cbFilename = createComboBox(); |
private final JComboBox cbFilename = StdUtils.createPathComboBox(); |
103 |
private final JSpinner spinnerIndex = new JSpinner(new SpinnerNumberModel(0, 0, 500, 1)); |
private final JComboBox cbIndex = new JComboBox(); |
104 |
|
|
105 |
private final JButton btnBrowse; |
private final JButton btnBrowse; |
106 |
|
|
140 |
if(!rbSelectFromDb.isSelected()) rbSelectFromDb.doClick(0); |
if(!rbSelectFromDb.isSelected()) rbSelectFromDb.doClick(0); |
141 |
} |
} |
142 |
}); |
}); |
|
cbDbInstrument.setEditable(true); |
|
143 |
|
|
144 |
String[] instrs = preferences().getStringListProperty("recentDbInstruments"); |
String[] instrs = preferences().getStringListProperty("recentDbInstruments"); |
145 |
for(String s : instrs) cbDbInstrument.addItem(s); |
for(String s : instrs) cbDbInstrument.addItem(s); |
147 |
|
|
148 |
cbFilename.addFocusListener(getHandler()); |
cbFilename.addFocusListener(getHandler()); |
149 |
cbFilename.addActionListener(getHandler()); |
cbFilename.addActionListener(getHandler()); |
150 |
|
String[] files = preferences().getStringListProperty("recentInstrumentFiles"); |
151 |
|
for(String s : files) cbFilename.addItem(s); |
152 |
|
cbFilename.setSelectedItem(null); |
153 |
|
|
154 |
cbFilename.addActionListener(new ActionListener() { |
cbFilename.addActionListener(new ActionListener() { |
155 |
public void |
public void |
156 |
actionPerformed(ActionEvent e) { |
actionPerformed(ActionEvent e) { |
157 |
if(!rbSelectFromFile.isSelected()) rbSelectFromFile.doClick(0); |
if(!rbSelectFromFile.isSelected()) rbSelectFromFile.doClick(0); |
158 |
|
updateFileInstruments(); |
159 |
} |
} |
160 |
}); |
}); |
|
cbFilename.setEditable(true); |
|
|
|
|
|
String[] files = preferences().getStringListProperty("recentInstrumentFiles"); |
|
|
for(String s : files) cbFilename.addItem(s); |
|
|
cbFilename.setSelectedItem(null); |
|
161 |
|
|
162 |
spinnerIndex.addChangeListener(new ChangeListener() { |
cbIndex.addFocusListener(getHandler()); |
163 |
|
cbIndex.addActionListener(getHandler()); |
164 |
|
cbFilename.addActionListener(new ActionListener() { |
165 |
public void |
public void |
166 |
stateChanged(ChangeEvent e) { |
actionPerformed(ActionEvent e) { |
167 |
if(!rbSelectFromFile.isSelected()) rbSelectFromFile.doClick(0); |
if(!rbSelectFromFile.isSelected()) rbSelectFromFile.doClick(0); |
168 |
} |
} |
169 |
}); |
}); |
170 |
|
|
171 |
|
for(int i = 0; i < 101; i++) cbIndex.addItem(i); |
172 |
|
|
173 |
JPanel mainPane = new JPanel(); |
JPanel mainPane = new JPanel(); |
174 |
mainPane.setLayout(new BoxLayout(mainPane, BoxLayout.Y_AXIS)); |
mainPane.setLayout(new BoxLayout(mainPane, BoxLayout.Y_AXIS)); |
175 |
|
|
284 |
return p; |
return p; |
285 |
} |
} |
286 |
|
|
|
protected JComboBox |
|
|
createComboBox() { return new JComboBox(); } |
|
|
|
|
287 |
protected JSPrefs |
protected JSPrefs |
288 |
preferences() { return CC.getViewConfig().preferences(); } |
preferences() { return CC.getViewConfig().preferences(); } |
289 |
|
|
309 |
|
|
310 |
private void |
private void |
311 |
instrumentChanged() { |
instrumentChanged() { |
312 |
Instrument instr = (Instrument)cbInstruments.getSelectedItem(); |
OrchestraInstrument instr = (OrchestraInstrument)cbInstruments.getSelectedItem(); |
313 |
String s = instr == null ? null : instr.getDescription(); |
String s = instr == null ? null : instr.getDescription(); |
314 |
if(s != null && s.length() == 0) s = null; |
if(s != null && s.length() == 0) s = null; |
315 |
cbInstruments.setToolTipText(s); |
cbInstruments.setToolTipText(s); |
384 |
|
|
385 |
c.gridx = 1; |
c.gridx = 1; |
386 |
c.gridy = 1; |
c.gridy = 1; |
387 |
gridbag.setConstraints(spinnerIndex, c); |
gridbag.setConstraints(cbIndex, c); |
388 |
filePane.add(spinnerIndex); |
filePane.add(cbIndex); |
389 |
|
|
390 |
cbFilename.setPreferredSize ( |
cbFilename.setPreferredSize ( |
391 |
new Dimension(200, cbFilename.getPreferredSize().height) |
new Dimension(200, cbFilename.getPreferredSize().height) |
407 |
String s = "lastUsedInstrumentSelectionMethod"; |
String s = "lastUsedInstrumentSelectionMethod"; |
408 |
|
|
409 |
if(rbSelectFromOrchestra.isSelected()) { |
if(rbSelectFromOrchestra.isSelected()) { |
410 |
Instrument instr = (Instrument)cbInstruments.getSelectedItem(); |
OrchestraInstrument instr = (OrchestraInstrument)cbInstruments.getSelectedItem(); |
411 |
instrumentFile = instr.getPath(); |
instrumentFile = instr.getFilePath(); |
412 |
instrumentIndex = instr.getInstrumentIndex(); |
instrumentIndex = instr.getInstrumentIndex(); |
413 |
engine = instr.getEngine(); |
engine = instr.getEngine(); |
414 |
setVisible(false); |
setVisible(false); |
428 |
|
|
429 |
if(rbSelectFromFile.isSelected()) { |
if(rbSelectFromFile.isSelected()) { |
430 |
instrumentFile = cbFilename.getSelectedItem().toString(); |
instrumentFile = cbFilename.getSelectedItem().toString(); |
431 |
instrumentIndex = Integer.parseInt(spinnerIndex.getValue().toString()); |
instrumentIndex = cbIndex.getSelectedIndex(); |
432 |
|
|
433 |
StdUtils.updateRecentElements("recentInstrumentFiles", instrumentFile); |
StdUtils.updateRecentElements("recentInstrumentFiles", instrumentFile); |
434 |
preferences().setStringProperty(s, "fromFile"); |
preferences().setStringProperty(s, "fromFile"); |
532 |
Object o = cbFilename.getSelectedItem(); |
Object o = cbFilename.getSelectedItem(); |
533 |
if(o == null) b = false; |
if(o == null) b = false; |
534 |
else b = o.toString().length() > 0; |
else b = o.toString().length() > 0; |
535 |
|
o = cbIndex.getSelectedItem(); |
536 |
|
if(o == null || o.toString().length() == 0) b = false; |
537 |
} |
} |
538 |
|
|
539 |
btnOk.setEnabled(b); |
btnOk.setEnabled(b); |
540 |
} |
} |
541 |
|
|
542 |
|
private void |
543 |
|
updateFileInstruments() { |
544 |
|
Object o = cbFilename.getSelectedItem(); |
545 |
|
if(o == null) return; |
546 |
|
String s = o.toString(); |
547 |
|
final Global.GetFileInstruments t = new Global.GetFileInstruments(s); |
548 |
|
|
549 |
|
t.addTaskListener(new TaskListener() { |
550 |
|
public void |
551 |
|
taskPerformed(TaskEvent e) { |
552 |
|
Instrument[] instrs = t.getResult(); |
553 |
|
if(instrs == null) { |
554 |
|
cbIndex.removeAllItems(); |
555 |
|
for(int i = 0; i < 101; i++) cbIndex.addItem(i); |
556 |
|
return; |
557 |
|
} |
558 |
|
|
559 |
|
cbIndex.removeAllItems(); |
560 |
|
for(int i = 0; i < instrs.length; i++) { |
561 |
|
cbIndex.addItem(i + " - " + instrs[i].getName()); |
562 |
|
} |
563 |
|
} |
564 |
|
}); |
565 |
|
|
566 |
|
CC.getTaskQueue().add(t); |
567 |
|
} |
568 |
|
|
569 |
private final EventHandler eventHandler = new EventHandler(); |
private final EventHandler eventHandler = new EventHandler(); |
570 |
|
|
571 |
private EventHandler |
private EventHandler |
599 |
} |
} |
600 |
} else if(src == cbDbInstrument) { |
} else if(src == cbDbInstrument) { |
601 |
if(!rbSelectFromDb.isSelected()) rbSelectFromDb.doClick(0); |
if(!rbSelectFromDb.isSelected()) rbSelectFromDb.doClick(0); |
602 |
} else if(src == cbFilename) { |
} else if(src == cbFilename || src == cbIndex) { |
603 |
if(!rbSelectFromFile.isSelected()) rbSelectFromFile.doClick(0); |
if(!rbSelectFromFile.isSelected()) rbSelectFromFile.doClick(0); |
604 |
} |
} |
605 |
} |
} |