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

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

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

  ViewVC Help
Powered by ViewVC