/[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 1302 by iliev, Sat Aug 25 15:32:54 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 68  import org.jsampler.OrchestraModel; Line 67  import org.jsampler.OrchestraModel;
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 92  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 131  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                  tfFilename.addFocusListener(getHandler());                  String[] instrs = preferences().getStringListProperty("recentDbInstruments");
145                  tfFilename.getDocument().addDocumentListener(getHandler());                  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                    String[] files = preferences().getStringListProperty("recentInstrumentFiles");
159                    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 172  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();
# Line 184  public class JSInstrumentChooser extends Line 206  public class JSInstrumentChooser extends
206                          i = preferences().getIntProperty("lastUsedOrchestraInstrumentIndex", 0);                          i = preferences().getIntProperty("lastUsedOrchestraInstrumentIndex", 0);
207                          if(cbInstruments.getItemCount() > i) cbInstruments.setSelectedIndex(i);                          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 243  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          protected JSPrefs
287          preferences() { return CC.getViewConfig().preferences(); }          preferences() { return CC.getViewConfig().preferences(); }
288                    
# Line 282  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
# 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 358  public class JSInstrumentChooser extends Line 403  public class JSInstrumentChooser extends
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();
# Line 373  public class JSInstrumentChooser extends Line 420  public class JSInstrumentChooser extends
420                                  preferences().setIntProperty("lastUsedOrchestraInstrumentIndex", i);                                  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);                  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 415  public class JSInstrumentChooser extends Line 471  public class JSInstrumentChooser extends
471                  String s = preferences().getStringProperty("lastInstrumentLocation");                  String s = preferences().getStringProperty("lastInstrumentLocation");
472                  JFileChooser fc = new JFileChooser(s);                  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                          String path = fc.getCurrentDirectory().getAbsolutePath();                          path.replace('\\', '/');
                         preferences().setStringProperty("lastInstrumentLocation", path);  
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          private void
# Line 429  public class JSInstrumentChooser extends Line 489  public class JSInstrumentChooser extends
489                  if(!rbSelectFromDb.isSelected()) rbSelectFromDb.doClick(0);                  if(!rbSelectFromDb.isSelected()) rbSelectFromDb.doClick(0);
490                  JSDbInstrumentChooser dlg;                  JSDbInstrumentChooser dlg;
491                  dlg = new JSDbInstrumentChooser(JSInstrumentChooser.this);                  dlg = new JSDbInstrumentChooser(JSInstrumentChooser.this);
492                  String s = tfDbInstrument.getText();                  Object o = cbDbInstrument.getSelectedItem();
493                  if(s.length() > 0) dlg.setSelectedInstrument(s);                  if(o != null && o.toString().length() > 0) dlg.setSelectedInstrument(o.toString());
494                  else {                  else {
495                          s = preferences().getStringProperty("lastUsedDbInstrument", "");                          String s = preferences().getStringProperty("lastUsedDbInstrument", "");
496                          if(s.length() > 0) dlg.setSelectedInstrument(s);                          if(s.length() > 0) dlg.setSelectedInstrument(s);
497                          else dlg.setSelectedDirectory("/");                          else dlg.setSelectedDirectory("/");
498                  }                  }
499                  dlg.setVisible(true);                  dlg.setVisible(true);
500                  if(dlg.isCancelled()) return;                  if(dlg.isCancelled()) return;
501                  tfDbInstrument.setText(dlg.getSelectedInstrument());                  cbDbInstrument.setSelectedItem(dlg.getSelectedInstrument());
502                  tfDbInstrument.requestFocus();                  cbDbInstrument.requestFocus();
503          }          }
504                    
505          /**          /**
# Line 465  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 504  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.1302  
changed lines
  Added in v.1480

  ViewVC Help
Powered by ViewVC