/[svn]/jsampler/trunk/src/org/jsampler/view/std/JSInstrumentChooser.java
ViewVC logotype

Diff of /jsampler/trunk/src/org/jsampler/view/std/JSInstrumentChooser.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1286 by iliev, Fri Aug 10 20:24:23 2007 UTC revision 1480 by iliev, Wed Nov 14 21:39:45 2007 UTC
# Line 47  import javax.swing.JOptionPane; Line 47  import javax.swing.JOptionPane;
47  import javax.swing.JPanel;  import javax.swing.JPanel;
48  import javax.swing.JRadioButton;  import javax.swing.JRadioButton;
49  import javax.swing.JSpinner;  import javax.swing.JSpinner;
 import javax.swing.JTextField;  
50  import javax.swing.SpinnerNumberModel;  import javax.swing.SpinnerNumberModel;
51    
52  import javax.swing.event.ChangeEvent;  import javax.swing.event.ChangeEvent;
# Line 62  import net.sf.juife.event.TaskListener; Line 61  import net.sf.juife.event.TaskListener;
61    
62  import org.jsampler.CC;  import org.jsampler.CC;
63  import org.jsampler.Instrument;  import org.jsampler.Instrument;
64    import org.jsampler.JSPrefs;
65  import org.jsampler.OrchestraModel;  import org.jsampler.OrchestraModel;
66    
67  import org.jsampler.task.InstrumentsDb;  import org.jsampler.task.InstrumentsDb;
68    
69  import static org.jsampler.view.std.StdI18n.i18n;  import static org.jsampler.view.std.StdI18n.i18n;
70    import static org.linuxsampler.lscp.Parser.*;
71    
72  /**  /**
73   *   *
# Line 91  public class JSInstrumentChooser extends Line 92  public class JSInstrumentChooser extends
92          private final JComboBox cbInstruments = new JComboBox();          private final JComboBox cbInstruments = new JComboBox();
93                    
94                    
95          private final JTextField tfDbInstrument = new JTextField();          private final JComboBox cbDbInstrument = createComboBox();
96          private final JButton btnBrowseDb;          private final JButton btnBrowseDb;
97                    
98          private final JLabel lFilename = new JLabel(i18n.getLabel("JSInstrumentChooser.lFilename"));          private final JLabel lFilename = new JLabel(i18n.getLabel("JSInstrumentChooser.lFilename"));
99          private final JLabel lIndex = new JLabel(i18n.getLabel("JSInstrumentChooser.lIndex"));          private final JLabel lIndex = new JLabel(i18n.getLabel("JSInstrumentChooser.lIndex"));
100                    
101          private final JTextField tfFilename = new JTextField();          private final JComboBox cbFilename = createComboBox();
102          private final JSpinner spinnerIndex = new JSpinner(new SpinnerNumberModel(0, 0, 500, 1));          private final JSpinner spinnerIndex = new JSpinner(new SpinnerNumberModel(0, 0, 500, 1));
103                    
104          private final JButton btnBrowse;          private final JButton btnBrowse;
# Line 130  public class JSInstrumentChooser extends Line 131  public class JSInstrumentChooser extends
131                  cbOrchestras.addFocusListener(getHandler());                  cbOrchestras.addFocusListener(getHandler());
132                  cbInstruments.addFocusListener(getHandler());                  cbInstruments.addFocusListener(getHandler());
133                                    
134                  tfDbInstrument.addFocusListener(getHandler());                  cbDbInstrument.addFocusListener(getHandler());
135                  tfDbInstrument.getDocument().addDocumentListener(getHandler());                  cbDbInstrument.addActionListener(getHandler());
136                    cbDbInstrument.addActionListener(new ActionListener() {
137                            public void
138                            actionPerformed(ActionEvent e) {
139                                    if(!rbSelectFromDb.isSelected()) rbSelectFromDb.doClick(0);
140                            }
141                    });
142                    cbDbInstrument.setEditable(true);
143                    
144                    String[] instrs = preferences().getStringListProperty("recentDbInstruments");
145                    for(String s : instrs) cbDbInstrument.addItem(s);
146                    cbDbInstrument.setSelectedItem(null);
147                    
148                    cbFilename.addFocusListener(getHandler());
149                    cbFilename.addActionListener(getHandler());
150                    cbFilename.addActionListener(new ActionListener() {
151                            public void
152                            actionPerformed(ActionEvent e) {
153                                    if(!rbSelectFromFile.isSelected()) rbSelectFromFile.doClick(0);
154                            }
155                    });
156                    cbFilename.setEditable(true);
157                                    
158                  tfFilename.addFocusListener(getHandler());                  String[] files = preferences().getStringListProperty("recentInstrumentFiles");
159                  tfFilename.getDocument().addDocumentListener(getHandler());                  for(String s : files) cbFilename.addItem(s);
160                    cbFilename.setSelectedItem(null);
161                                    
162                  spinnerIndex.addChangeListener(new ChangeListener() {                  spinnerIndex.addChangeListener(new ChangeListener() {
163                          public void                          public void
# Line 171  public class JSInstrumentChooser extends Line 194  public class JSInstrumentChooser extends
194                                    
195                  if(!CC.getSamplerModel().getServerInfo().hasInstrumentsDbSupport()) {                  if(!CC.getSamplerModel().getServerInfo().hasInstrumentsDbSupport()) {
196                          rbSelectFromDb.setEnabled(false);                          rbSelectFromDb.setEnabled(false);
197                          tfDbInstrument.setEnabled(false);                          cbDbInstrument.setEnabled(false);
198                          btnBrowseDb.setEnabled(false);                          btnBrowseDb.setEnabled(false);
199                  } else {                  } else {
200                          btnBrowseDb.requestFocusInWindow();                          btnBrowseDb.requestFocusInWindow();
201                  }                  }
202                    
203                    int i = preferences().getIntProperty("lastUsedOrchestraIndex", 0);
204                    if(CC.getOrchestras().getOrchestraCount() > i) {
205                            cbOrchestras.setSelectedIndex(i);
206                            i = preferences().getIntProperty("lastUsedOrchestraInstrumentIndex", 0);
207                            if(cbInstruments.getItemCount() > i) cbInstruments.setSelectedIndex(i);
208                    }
209                    
210                    String s = preferences().getStringProperty("lastUsedInstrumentSelectionMethod");
211                    if("fromOrchestra".equals(s)) {
212                            if(!rbSelectFromOrchestra.isSelected()) rbSelectFromOrchestra.doClick(0);
213                            cbInstruments.requestFocusInWindow();
214                    } else if("fromDb".equals(s)) {
215                            if(!rbSelectFromDb.isSelected()) rbSelectFromDb.doClick(0);
216                    } else if("fromFile".equals(s)) {
217                            if(!rbSelectFromFile.isSelected()) rbSelectFromFile.doClick(0);
218                            btnBrowse.requestFocusInWindow();
219                    } else {
220                            if(!rbSelectFromOrchestra.isSelected()) rbSelectFromOrchestra.doClick(0);
221                    }
222                    
223                    updateState();
224          }          }
225                    
226          private JPanel          private JPanel
# Line 235  public class JSInstrumentChooser extends Line 280  public class JSInstrumentChooser extends
280                  return p;                  return p;
281          }          }
282                    
283            protected JComboBox
284            createComboBox() { return new JComboBox(); }
285            
286            protected JSPrefs
287            preferences() { return CC.getViewConfig().preferences(); }
288            
289          private void          private void
290          orchestraChanged() {          orchestraChanged() {
291                  OrchestraModel om = (OrchestraModel)cbOrchestras.getSelectedItem();                  OrchestraModel om = (OrchestraModel)cbOrchestras.getSelectedItem();
# Line 271  public class JSInstrumentChooser extends Line 322  public class JSInstrumentChooser extends
322          createDbPane() {          createDbPane() {
323                  JPanel p = new JPanel();                  JPanel p = new JPanel();
324                  p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));                  p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
325                  p.add(tfDbInstrument);                  p.add(cbDbInstrument);
326                  p.add(Box.createRigidArea(new Dimension(6, 0)));                  p.add(Box.createRigidArea(new Dimension(6, 0)));
327                  btnBrowseDb.setMargin(new Insets(0, 0, 0, 0));                  btnBrowseDb.setMargin(new Insets(0, 0, 0, 0));
328                  p.add(btnBrowseDb);                  p.add(btnBrowseDb);
329                  //p.setMaximumSize(new Dimension(Short.MAX_VALUE, p.getPreferredSize().height));                  
330                    
331                    
332                    cbDbInstrument.setPreferredSize (
333                            new Dimension(200, cbDbInstrument.getPreferredSize().height)
334                    );
335                                    
336                  btnBrowseDb.addActionListener(new ActionListener() {                  btnBrowseDb.addActionListener(new ActionListener() {
337                          public void                          public void
338                          actionPerformed(ActionEvent e) {                          actionPerformed(ActionEvent e) { onBrowseDb(); }
                                 if(!rbSelectFromDb.isSelected()) rbSelectFromDb.doClick(0);  
                                 JSDbInstrumentChooser dlg;  
                                 dlg = new JSDbInstrumentChooser(JSInstrumentChooser.this);  
                                 String s = tfDbInstrument.getText();  
                                 if(s.length() > 0) dlg.setSelectedInstrument(s);  
                                 else dlg.setSelectedDirectory("/");  
                                 dlg.setVisible(true);  
                                 if(dlg.isCancelled()) return;  
                                 tfDbInstrument.setText(dlg.getSelectedInstrument());  
                                 tfDbInstrument.requestFocus();  
                         }  
339                  });                  });
340                                    
341                  p.setAlignmentX(LEFT_ALIGNMENT);                  p.setAlignmentX(LEFT_ALIGNMENT);
# Line 333  public class JSInstrumentChooser extends Line 378  public class JSInstrumentChooser extends
378                  c.gridy = 0;                  c.gridy = 0;
379                  c.weightx = 1.0;                  c.weightx = 1.0;
380                  c.anchor = GridBagConstraints.WEST;                  c.anchor = GridBagConstraints.WEST;
381                  gridbag.setConstraints(tfFilename, c);                  gridbag.setConstraints(cbFilename, c);
382                  filePane.add(tfFilename);                  filePane.add(cbFilename);
383                                                    
384                  c.gridx = 1;                  c.gridx = 1;
385                  c.gridy = 1;                  c.gridy = 1;
386                  gridbag.setConstraints(spinnerIndex, c);                  gridbag.setConstraints(spinnerIndex, c);
387                  filePane.add(spinnerIndex);                  filePane.add(spinnerIndex);
388                                    
389                  tfFilename.setPreferredSize (                  cbFilename.setPreferredSize (
390                          new Dimension(200, tfFilename.getPreferredSize().height)                          new Dimension(200, cbFilename.getPreferredSize().height)
391                  );                  );
392                                    
393                  btnBrowse.addActionListener(new ActionListener() {                  btnBrowse.addActionListener(new ActionListener() {
# Line 357  public class JSInstrumentChooser extends Line 402  public class JSInstrumentChooser extends
402          protected void          protected void
403          onOk() {          onOk() {
404                  if(!btnOk.isEnabled()) return;                  if(!btnOk.isEnabled()) return;
405                    
406                    String s = "lastUsedInstrumentSelectionMethod";
407                    
408                  if(rbSelectFromOrchestra.isSelected()) {                  if(rbSelectFromOrchestra.isSelected()) {
409                          Instrument instr = (Instrument)cbInstruments.getSelectedItem();                          Instrument instr = (Instrument)cbInstruments.getSelectedItem();
410                          instrumentFile = instr.getPath();                          instrumentFile = instr.getPath();
411                          instrumentIndex = instr.getInstrumentIndex();                          instrumentIndex = instr.getInstrumentIndex();
412                          engine = instr.getEngine();                          engine = instr.getEngine();
413                          setVisible(false);                          setVisible(false);
414                            
415                            int i = cbOrchestras.getSelectedIndex();
416                            if(i >= 0) preferences().setIntProperty("lastUsedOrchestraIndex", i);
417                            
418                            i = cbInstruments.getSelectedIndex();
419                            if(i >= 0) {
420                                    preferences().setIntProperty("lastUsedOrchestraInstrumentIndex", i);
421                            }
422                            
423                            preferences().setStringProperty(s, "fromOrchestra");
424                            
425                          return;                          return;
426                  }                  }
427                                    
428                  if(rbSelectFromFile.isSelected()) {                  if(rbSelectFromFile.isSelected()) {
429                          instrumentFile = tfFilename.getText();                          instrumentFile = cbFilename.getSelectedItem().toString();
430                          instrumentIndex = Integer.parseInt(spinnerIndex.getValue().toString());                          instrumentIndex = Integer.parseInt(spinnerIndex.getValue().toString());
431                            
432                            StdUtils.updateRecentElements("recentInstrumentFiles", instrumentFile);
433                            preferences().setStringProperty(s, "fromFile");
434                          setVisible(false);                          setVisible(false);
435                          return;                          return;
436                  }                  }
437                                    
438                  if(!rbSelectFromDb.isSelected()) return;                  if(!rbSelectFromDb.isSelected()) return;
439                                    
440                  String instr = tfDbInstrument.getText();                  preferences().setStringProperty(s, "fromDb");
441                    
442                    String instr = cbDbInstrument.getSelectedItem().toString();
443                    preferences().setStringProperty("lastUsedDbInstrument", instr);
444                  final InstrumentsDb.GetInstrument t = new InstrumentsDb.GetInstrument(instr);                  final InstrumentsDb.GetInstrument t = new InstrumentsDb.GetInstrument(instr);
445                                    
446                    StdUtils.updateRecentElements("recentDbInstruments", instr);
447                    
448                  t.addTaskListener(new TaskListener() {                  t.addTaskListener(new TaskListener() {
449                          public void                          public void
450                          taskPerformed(TaskEvent e) {                          taskPerformed(TaskEvent e) {
# Line 401  public class JSInstrumentChooser extends Line 468  public class JSInstrumentChooser extends
468          private void          private void
469          onBrowse() {          onBrowse() {
470                  if(!rbSelectFromFile.isSelected()) rbSelectFromFile.doClick(0);                  if(!rbSelectFromFile.isSelected()) rbSelectFromFile.doClick(0);
471                  JFileChooser fc = new JFileChooser();                  String s = preferences().getStringProperty("lastInstrumentLocation");
472                    JFileChooser fc = new JFileChooser(s);
473                  int result = fc.showOpenDialog(this);                  int result = fc.showOpenDialog(this);
474                  if(result == JFileChooser.APPROVE_OPTION) {                  if(result != JFileChooser.APPROVE_OPTION) return;
475                          tfFilename.setText(fc.getSelectedFile().getPath());                  
476                          btnOk.requestFocusInWindow();                  String path = fc.getSelectedFile().getAbsolutePath();
477                    if(java.io.File.separatorChar == '\\') {
478                            path.replace('\\', '/');
479                    }
480                    cbFilename.setSelectedItem(toEscapedString(path));
481                    btnOk.requestFocusInWindow();
482                    
483                    path = fc.getCurrentDirectory().getAbsolutePath();
484                    preferences().setStringProperty("lastInstrumentLocation", path);
485            }
486            
487            private void
488            onBrowseDb() {
489                    if(!rbSelectFromDb.isSelected()) rbSelectFromDb.doClick(0);
490                    JSDbInstrumentChooser dlg;
491                    dlg = new JSDbInstrumentChooser(JSInstrumentChooser.this);
492                    Object o = cbDbInstrument.getSelectedItem();
493                    if(o != null && o.toString().length() > 0) dlg.setSelectedInstrument(o.toString());
494                    else {
495                            String s = preferences().getStringProperty("lastUsedDbInstrument", "");
496                            if(s.length() > 0) dlg.setSelectedInstrument(s);
497                            else dlg.setSelectedDirectory("/");
498                  }                  }
499                    dlg.setVisible(true);
500                    if(dlg.isCancelled()) return;
501                    cbDbInstrument.setSelectedItem(dlg.getSelectedInstrument());
502                    cbDbInstrument.requestFocus();
503          }          }
504                    
505          /**          /**
# Line 432  public class JSInstrumentChooser extends Line 525  public class JSInstrumentChooser extends
525                  if(rbSelectFromOrchestra.isSelected()) {                  if(rbSelectFromOrchestra.isSelected()) {
526                          b = cbInstruments.getSelectedItem() != null;                          b = cbInstruments.getSelectedItem() != null;
527                  } else if(rbSelectFromDb.isSelected()) {                  } else if(rbSelectFromDb.isSelected()) {
528                          b = tfDbInstrument.getText().length() > 0;                          Object o = cbDbInstrument.getSelectedItem();
529                            b = o != null && o.toString().length() > 0;
530                  } else if(rbSelectFromFile.isSelected()) {                  } else if(rbSelectFromFile.isSelected()) {
531                          b = tfFilename.getText().length() > 0;                          Object o = cbFilename.getSelectedItem();
532                            if(o == null) b = false;
533                            else b = o.toString().length() > 0;
534                  }                  }
535                                    
536                  btnOk.setEnabled(b);                  btnOk.setEnabled(b);
# Line 471  public class JSInstrumentChooser extends Line 567  public class JSInstrumentChooser extends
567                                  if(!rbSelectFromOrchestra.isSelected()) {                                  if(!rbSelectFromOrchestra.isSelected()) {
568                                          rbSelectFromOrchestra.doClick(0);                                          rbSelectFromOrchestra.doClick(0);
569                                  }                                  }
570                          } else if(src == tfDbInstrument) {                          } else if(src == cbDbInstrument) {
571                                  if(!rbSelectFromDb.isSelected()) rbSelectFromDb.doClick(0);                                  if(!rbSelectFromDb.isSelected()) rbSelectFromDb.doClick(0);
572                          } else if(src == tfFilename) {                          } else if(src == cbFilename) {
573                                  if(!rbSelectFromFile.isSelected()) rbSelectFromFile.doClick(0);                                  if(!rbSelectFromFile.isSelected()) rbSelectFromFile.doClick(0);
574                          }                          }
575                  }                  }

Legend:
Removed from v.1286  
changed lines
  Added in v.1480

  ViewVC Help
Powered by ViewVC