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

Contents of /jsampler/trunk/src/org/jsampler/view/std/JSNewAudioDeviceDlg.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1315 - (show annotations) (download)
Fri Aug 31 14:25:45 2007 UTC (16 years, 7 months ago) by iliev
File size: 5902 byte(s)
* Added support for assignment of default MIDI/audio drivers to be used
  (choose Edit/Preferences, then click the `Defaults' tab)

1 /*
2 * JSampler - a java front-end for LinuxSampler
3 *
4 * Copyright (C) 2005-2006 Grigor Iliev <grigor@grigoriliev.com>
5 *
6 * This file is part of JSampler.
7 *
8 * JSampler is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2
10 * as published by the Free Software Foundation.
11 *
12 * JSampler is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with JSampler; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
20 * MA 02111-1307 USA
21 */
22
23 package org.jsampler.view.std;
24
25 import java.awt.BorderLayout;
26 import java.awt.Dialog;
27 import java.awt.Dimension;
28 import java.awt.Frame;
29
30 import java.awt.event.ActionEvent;
31 import java.awt.event.ActionListener;
32 import java.awt.event.WindowAdapter;
33 import java.awt.event.WindowEvent;
34
35 import javax.swing.BorderFactory;
36 import javax.swing.Box;
37 import javax.swing.BoxLayout;
38 import javax.swing.JButton;
39 import javax.swing.JComboBox;
40 import javax.swing.JLabel;
41 import javax.swing.JOptionPane;
42 import javax.swing.JPanel;
43 import javax.swing.JScrollPane;
44
45 import net.sf.juife.EnhancedDialog;
46 import net.sf.juife.JuifeUtils;
47
48 import net.sf.juife.event.TaskEvent;
49 import net.sf.juife.event.TaskListener;
50
51 import org.jsampler.CC;
52 import org.jsampler.JSPrefs;
53
54 import org.jsampler.task.Audio;
55 import org.jsampler.view.ParameterTable;
56
57 import org.linuxsampler.lscp.AudioOutputDriver;
58
59 import static org.jsampler.view.std.StdI18n.i18n;
60 import static org.jsampler.view.std.StdPrefs.*;
61
62
63 /**
64 *
65 * @author Grigor Iliev
66 */
67 public class JSNewAudioDeviceDlg extends EnhancedDialog {
68 private final JLabel lDriver = new JLabel(i18n.getLabel("JSNewAudioDeviceDlg.lDriver"));
69 private final JComboBox cbDrivers = new JComboBox();
70 private final ParameterTable parameterTable = new ParameterTable();
71
72 private final JButton btnCreate =
73 new JButton(i18n.getButtonLabel("JSNewAudioDeviceDlg.btnCreate"));
74 private final JButton btnCancel = new JButton(i18n.getButtonLabel("cancel"));
75
76 /** Creates a new instance of NewMidiDeviceDlg */
77 public JSNewAudioDeviceDlg(Frame owner) {
78 super(owner, i18n.getLabel("JSNewAudioDeviceDlg.title"));
79
80 initNewAudioDeviceDlg();
81 }
82
83 /** Creates a new instance of NewMidiDeviceDlg */
84 public JSNewAudioDeviceDlg(Dialog owner) {
85 super(owner, i18n.getLabel("JSNewAudioDeviceDlg.title"));
86
87 initNewAudioDeviceDlg();
88 }
89
90 private void
91 initNewAudioDeviceDlg() {
92 JPanel mainPane = new JPanel();
93 mainPane.setLayout(new BoxLayout(mainPane, BoxLayout.Y_AXIS));
94
95 JPanel p = new JPanel();
96 p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
97 p.add(lDriver);
98
99 parameterTable.getModel().setEditFixedParameters(true);
100
101 cbDrivers.addActionListener(new ActionListener() {
102 public void
103 actionPerformed(ActionEvent e) {
104 AudioOutputDriver d =
105 (AudioOutputDriver)cbDrivers.getSelectedItem();
106 if(d == null) return;
107 cbDrivers.setToolTipText(d.getDescription());
108 parameterTable.getModel().setParameters(d.getParameters());
109 }
110 });
111
112 for(AudioOutputDriver d : CC.getSamplerModel().getAudioOutputDrivers()) {
113 cbDrivers.addItem(d);
114 }
115
116 String s = preferences().getStringProperty(DEFAULT_AUDIO_DRIVER);
117 for(AudioOutputDriver d : CC.getSamplerModel().getAudioOutputDrivers()) {
118 if(d.getName().equals(s)) {
119 cbDrivers.setSelectedItem(d);
120 break;
121 }
122 }
123
124 cbDrivers.setMaximumSize(cbDrivers.getPreferredSize());
125 p.add(Box.createRigidArea(new Dimension(5, 0)));
126 p.add(cbDrivers);
127
128 p.setAlignmentX(LEFT_ALIGNMENT);
129 mainPane.add(p);
130
131 mainPane.add(Box.createRigidArea(new Dimension(0, 12)));
132
133 //parameterTable.setModel(new ParameterTableModel(CC.getSamplerModel().));
134 JScrollPane sp = new JScrollPane(parameterTable);
135 sp.setAlignmentX(LEFT_ALIGNMENT);
136 mainPane.add(sp);
137
138 mainPane.setBorder(BorderFactory.createEmptyBorder(12, 12, 17, 12));
139 mainPane.setPreferredSize (
140 JuifeUtils.getUnionSize(mainPane.getMinimumSize(), new Dimension(250, 200))
141 );
142 add(mainPane);
143
144 JPanel btnPane = new JPanel();
145 btnPane.setLayout(new BoxLayout(btnPane, BoxLayout.X_AXIS));
146 btnPane.add(Box.createGlue());
147 btnPane.add(btnCreate);
148 btnPane.add(Box.createRigidArea(new Dimension(5, 0)));
149 btnPane.add(btnCancel);
150
151 btnPane.setBorder(BorderFactory.createEmptyBorder(0, 12, 12, 12));
152 add(btnPane, BorderLayout.SOUTH);
153
154 pack();
155
156 setLocation(JuifeUtils.centerLocation(this, getOwner()));
157
158 btnCancel.addActionListener(new ActionListener() {
159 public void
160 actionPerformed(ActionEvent e) { onCancel(); }
161 });
162
163 btnCreate.addActionListener(new ActionListener() {
164 public void
165 actionPerformed(ActionEvent e) { onOk(); }
166 });
167
168 addWindowListener(new WindowAdapter() {
169 public void
170 windowActivated(WindowEvent e) { btnCreate.requestFocusInWindow(); }
171 });
172 }
173
174 protected void
175 onOk() {
176 Object obj = cbDrivers.getSelectedItem();
177 if(obj == null) {
178 JOptionPane.showMessageDialog (
179 this, i18n.getMessage("JSNewAudioDeviceDlg.selectDriver!"),
180 "",
181 JOptionPane.INFORMATION_MESSAGE
182 );
183
184 return;
185 }
186
187 btnCreate.setEnabled(false);
188
189 AudioOutputDriver driver = (AudioOutputDriver)obj;
190
191 final Audio.CreateDevice cad =
192 new Audio.CreateDevice(driver.getName(), driver.getParameters());
193
194 cad.addTaskListener(new TaskListener() {
195 public void
196 taskPerformed(TaskEvent e) {
197 btnCreate.setEnabled(true);
198 setVisible(false);
199 }
200 });
201
202 CC.getTaskQueue().add(cad);
203 }
204
205 protected void
206 onCancel() { setVisible(false); }
207
208 private static JSPrefs
209 preferences() { return CC.getViewConfig().preferences(); }
210 }

  ViewVC Help
Powered by ViewVC