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

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

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

revision 1444 by iliev, Fri Sep 7 12:09:59 2007 UTC revision 1445 by iliev, Mon Oct 15 20:55:33 2007 UTC
# Line 70  import static org.jsampler.view.std.StdP Line 70  import static org.jsampler.view.std.StdP
70   * @author Grigor Iliev   * @author Grigor Iliev
71   */   */
72  public class JSNewMidiDeviceDlg extends EnhancedDialog {  public class JSNewMidiDeviceDlg extends EnhancedDialog {
73          private final JLabel lDriver = new JLabel(i18n.getLabel("JSNewMidiDeviceDlg.lDriver"));          private final Pane mainPane = new Pane();
         private final JComboBox cbDrivers = new JComboBox();  
         private final ParameterTable parameterTable = new ParameterTable();  
           
         private final JButton btnCreate =  
                 new JButton(i18n.getButtonLabel("JSNewMidiDeviceDlg.btnCreate"));  
         private final JButton btnCancel = new JButton(i18n.getButtonLabel("cancel"));  
74                    
75          /**          /**
76           * Creates a new instance of JSNewMidiDeviceDlg           * Creates a new instance of JSNewMidiDeviceDlg
# Line 98  public class JSNewMidiDeviceDlg extends Line 92  public class JSNewMidiDeviceDlg extends
92                    
93          private void          private void
94          initNewMidiDeviceDlg() {          initNewMidiDeviceDlg() {
95                  JPanel mainPane = new JPanel();                  mainPane.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
                 mainPane.setLayout(new BoxLayout(mainPane, BoxLayout.Y_AXIS));  
                   
                 JPanel p = new JPanel();  
                 p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));  
                 p.add(lDriver);  
                   
                 parameterTable.getModel().setEditFixedParameters(true);  
                   
                 parameterTable.getModel().addParameterListener(new ParameterListener() {  
                         public void  
                         parameterChanged(ParameterEvent e) {  
                                 updateParameters();  
                         }  
                 });  
                   
                 cbDrivers.addActionListener(new ActionListener() {  
                         public void  
                         actionPerformed(ActionEvent e) {  
                                 MidiInputDriver d = (MidiInputDriver)cbDrivers.getSelectedItem();  
                                 if(d == null) return;  
                                   
                                 cbDrivers.setToolTipText(d.getDescription());  
                                 parameterTable.getModel().setParameters(d.getParameters());  
                                 updateParameters();  
                         }  
                 });  
                   
                 MidiInputDriver[] drivers = CC.getSamplerModel().getMidiInputDrivers();  
                 if(drivers != null) {  
                         for(MidiInputDriver d : drivers) cbDrivers.addItem(d);  
                           
                         String s = preferences().getStringProperty(DEFAULT_MIDI_DRIVER);  
                         for(MidiInputDriver d : drivers) {  
                                 if(d.getName().equals(s)) {  
                                         cbDrivers.setSelectedItem(d);  
                                         break;  
                                 }  
                         }  
                 }  
                   
                 cbDrivers.setMaximumSize(cbDrivers.getPreferredSize());  
                 p.add(Box.createRigidArea(new Dimension(5, 0)));  
                 p.add(cbDrivers);  
                   
                 p.setAlignmentX(LEFT_ALIGNMENT);  
                 mainPane.add(p);  
                   
                 mainPane.add(Box.createRigidArea(new Dimension(0, 12)));  
                   
                 //parameterTable.setModel(new ParameterTableModel(CC.getSamplerModel().));  
                 JScrollPane sp = new JScrollPane(parameterTable);  
                 sp.setAlignmentX(LEFT_ALIGNMENT);  
                 mainPane.add(sp);  
                   
                 mainPane.setBorder(BorderFactory.createEmptyBorder(12, 12, 17, 12));  
96                  mainPane.setPreferredSize (                  mainPane.setPreferredSize (
97                          JuifeUtils.getUnionSize(mainPane.getMinimumSize(), new Dimension(250, 200))                          JuifeUtils.getUnionSize(mainPane.getMinimumSize(), new Dimension(250, 230))
98                  );                  );
99                  add(mainPane);                  add(mainPane);
                   
                 JPanel btnPane = new JPanel();  
                 btnPane.setLayout(new BoxLayout(btnPane, BoxLayout.X_AXIS));  
                 btnPane.add(Box.createGlue());  
                 btnPane.add(btnCreate);  
                 btnPane.add(Box.createRigidArea(new Dimension(5, 0)));  
                 btnPane.add(btnCancel);  
                   
                 btnPane.setBorder(BorderFactory.createEmptyBorder(0, 12, 12, 12));  
                 add(btnPane, BorderLayout.SOUTH);  
                   
100                  pack();                  pack();
101                                    
102                  setLocation(JuifeUtils.centerLocation(this, getOwner()));                  setLocation(JuifeUtils.centerLocation(this, getOwner()));
103                                    
104                  btnCancel.addActionListener(new ActionListener() {                  mainPane.btnCancel.addActionListener(new ActionListener() {
105                          public void                          public void
106                          actionPerformed(ActionEvent e) { onCancel(); }                          actionPerformed(ActionEvent e) { onCancel(); }
107                  });                  });
108                                    
109                  btnCreate.addActionListener(new ActionListener() {                  mainPane.btnCreate.addActionListener(new ActionListener() {
110                          public void                          public void
111                          actionPerformed(ActionEvent e) { onOk(); }                          actionPerformed(ActionEvent e) { onOk(); }
112                  });                  });
113                                    
114                  addWindowListener(new WindowAdapter() {                  addWindowListener(new WindowAdapter() {
115                          public void                          public void
116                          windowActivated(WindowEvent e) { btnCreate.requestFocusInWindow(); }                          windowActivated(WindowEvent e) { mainPane.btnCreate.requestFocusInWindow(); }
117                  });                  });
118          }          }
119                    
         private void  
         updateParameters() {  
                 MidiInputDriver d = (MidiInputDriver)cbDrivers.getSelectedItem();  
                 if(d == null) return;  
                   
                 final Parameter[] parameters = parameterTable.getModel().getParameters();  
                   
                 final Midi.GetDriverParametersInfo task =  
                         new Midi.GetDriverParametersInfo(d.getName(), parameters);  
                   
                 task.addTaskListener(new TaskListener() {  
                         public void  
                         taskPerformed(TaskEvent e) {  
                                 if(task.doneWithErrors()) return;  
                                 for(Parameter p : parameters) {  
                                         for(Parameter p2 : task.getResult()) {  
                                                 if(p2.getName().equals(p.getName())) {  
                                                         p2.setValue(p.getValue());  
                                                         if(p2.getValue() == null) {  
                                                                 p2.setValue(p2.getDefault());  
                                                         }  
                                                         break;  
                                                 }  
                                                   
                                         }  
                                 }  
                                   
                                 parameterTable.getModel().setParameters(task.getResult());  
                         }  
                 });  
                   
                 CC.getTaskQueue().add(task);  
         }  
           
120          protected void          protected void
121          onOk() {          onOk() {
122                  Object obj = cbDrivers.getSelectedItem();                  MidiInputDriver driver = mainPane.getSelectedDriver();
123                  if(obj == null) {                  if(driver == null) {
124                          JOptionPane.showMessageDialog (                          JOptionPane.showMessageDialog (
125                                  this, i18n.getMessage("JSNewMidiDeviceDlg.selectDriver!"),                                  this, i18n.getMessage("JSNewMidiDeviceDlg.selectDriver!"),
126                                  "",                                  "",
# Line 236  public class JSNewMidiDeviceDlg extends Line 130  public class JSNewMidiDeviceDlg extends
130                          return;                          return;
131                  }                  }
132                                    
133                  btnCreate.setEnabled(false);                  mainPane.btnCreate.setEnabled(false);
                   
                 MidiInputDriver driver = (MidiInputDriver)obj;  
134                                    
135                  final Midi.CreateDevice cmd =                  final Midi.CreateDevice cmd =
136                          new  Midi.CreateDevice(driver.getName(), driver.getParameters());                          new  Midi.CreateDevice(driver.getName(), driver.getParameters());
# Line 246  public class JSNewMidiDeviceDlg extends Line 138  public class JSNewMidiDeviceDlg extends
138                  cmd.addTaskListener(new TaskListener() {                  cmd.addTaskListener(new TaskListener() {
139                          public void                          public void
140                          taskPerformed(TaskEvent e) {                          taskPerformed(TaskEvent e) {
141                                  btnCreate.setEnabled(true);                                  mainPane.btnCreate.setEnabled(true);
142                                  setVisible(false);                                  setVisible(false);
143                          }                          }
144                  });                  });
# Line 259  public class JSNewMidiDeviceDlg extends Line 151  public class JSNewMidiDeviceDlg extends
151                    
152          private static JSPrefs          private static JSPrefs
153          preferences() { return CC.getViewConfig().preferences(); }          preferences() { return CC.getViewConfig().preferences(); }
154            
155            public static class Pane extends JPanel {
156                    private final JLabel lDriver = new JLabel(i18n.getLabel("JSNewMidiDeviceDlg.lDriver"));
157                    public final JComboBox cbDrivers = new JComboBox();
158                    private final ParameterTable parameterTable = new ParameterTable();
159                    
160                    public final JButton btnCreate =
161                            new JButton(i18n.getButtonLabel("JSNewMidiDeviceDlg.btnCreate"));
162                    public final JButton btnCancel = new JButton(i18n.getButtonLabel("cancel"));
163                    
164                    
165                    public
166                    Pane() {
167                            setLayout(new BorderLayout());
168                            JPanel mainPane = new JPanel();
169                            mainPane.setLayout(new BoxLayout(mainPane, BoxLayout.Y_AXIS));
170                            
171                            JPanel p = new JPanel();
172                            p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
173                            p.add(lDriver);
174                            
175                            parameterTable.getModel().setEditFixedParameters(true);
176                            
177                            parameterTable.getModel().addParameterListener(new ParameterListener() {
178                                    public void
179                                    parameterChanged(ParameterEvent e) {
180                                            updateParameters();
181                                    }
182                            });
183                            
184                            cbDrivers.addActionListener(new ActionListener() {
185                                    public void
186                                    actionPerformed(ActionEvent e) {
187                                            MidiInputDriver d = (MidiInputDriver)cbDrivers.getSelectedItem();
188                                            if(d == null) return;
189                                            
190                                            cbDrivers.setToolTipText(d.getDescription());
191                                            parameterTable.getModel().setParameters(d.getParameters());
192                                            updateParameters();
193                                    }
194                            });
195                    
196                            MidiInputDriver[] drivers = CC.getSamplerModel().getMidiInputDrivers();
197                            if(drivers != null) {
198                                    for(MidiInputDriver d : drivers) cbDrivers.addItem(d);
199                                    
200                                    String s = preferences().getStringProperty(DEFAULT_MIDI_DRIVER);
201                                    for(MidiInputDriver d : drivers) {
202                                            if(d.getName().equals(s)) {
203                                                    cbDrivers.setSelectedItem(d);
204                                                    break;
205                                            }
206                                    }
207                            }
208                            
209                            cbDrivers.setMaximumSize(cbDrivers.getPreferredSize());
210                            p.add(Box.createRigidArea(new Dimension(5, 0)));
211                            p.add(cbDrivers);
212                            
213                            p.setAlignmentX(LEFT_ALIGNMENT);
214                            mainPane.add(p);
215                            
216                            mainPane.add(Box.createRigidArea(new Dimension(0, 12)));
217                            
218                            //parameterTable.setModel(new ParameterTableModel(CC.getSamplerModel().));
219                            JScrollPane sp = new JScrollPane(parameterTable);
220                            sp.setAlignmentX(LEFT_ALIGNMENT);
221                            mainPane.add(sp);
222                            
223                            add(mainPane);
224                            
225                            JPanel btnPane = new JPanel();
226                            btnPane.setLayout(new BoxLayout(btnPane, BoxLayout.X_AXIS));
227                            btnPane.add(Box.createGlue());
228                            btnPane.add(btnCreate);
229                            btnPane.add(Box.createRigidArea(new Dimension(5, 0)));
230                            btnPane.add(btnCancel);
231                            
232                            btnPane.setBorder(BorderFactory.createEmptyBorder(17, 0, 0, 0));
233                            add(btnPane, BorderLayout.SOUTH);
234                    }
235                    
236                    public MidiInputDriver
237                    getSelectedDriver() {
238                            return (MidiInputDriver)cbDrivers.getSelectedItem();
239                    }
240                    
241                    private void
242                    updateParameters() {
243                            MidiInputDriver d = (MidiInputDriver)cbDrivers.getSelectedItem();
244                            if(d == null) return;
245                            
246                            final Parameter[] parameters = parameterTable.getModel().getParameters();
247                            
248                            final Midi.GetDriverParametersInfo task =
249                                    new Midi.GetDriverParametersInfo(d.getName(), parameters);
250                                    
251                            task.addTaskListener(new TaskListener() {
252                                    public void
253                                    taskPerformed(TaskEvent e) {
254                                            if(task.doneWithErrors()) return;
255                                            for(Parameter p : parameters) {
256                                                    for(Parameter p2 : task.getResult()) {
257                                                            if(p2.getName().equals(p.getName())) {
258                                                                    p2.setValue(p.getValue());
259                                                                    if(p2.getValue() == null) {
260                                                                            p2.setValue(p2.getDefault());
261                                                                    }
262                                                                    break;
263                                                            }
264                                                    }
265                                            }
266                                            
267                                            parameterTable.getModel().setParameters(task.getResult());
268                                    }
269                            });
270                            
271                            CC.getTaskQueue().add(task);
272                    }
273            }
274  }  }

Legend:
Removed from v.1444  
changed lines
  Added in v.1445

  ViewVC Help
Powered by ViewVC