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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1743 - (hide annotations) (download)
Sat May 31 23:04:01 2008 UTC (15 years, 11 months ago) by iliev
File size: 7809 byte(s)
* Renamed the column labels in the Channel Routing dialog: The column
  representing the sampler channel's audio channels is "Audio In" and
  the column representing the audio device's channels is "Audio Out"
* Remember the last used tab in the Preferences dialog
* Fantasia: The sampler channels are now referenced by their position
  in the list, not by their ID
* Fantasia: Implemented options to show the channel number and/or the MIDI
  input port/channel on the sampler channel screen when using Small View
  (choose Edit/Preferences, then click the `Channels' tab)
* Fantasia: Migrated to substance 5

1 iliev 1286 /*
2     * JSampler - a java front-end for LinuxSampler
3     *
4     * Copyright (C) 2005-2007 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    
26     import java.awt.BorderLayout;
27     import java.awt.Dialog;
28     import java.awt.Dimension;
29     import java.awt.Frame;
30    
31     import java.awt.event.ActionEvent;
32     import java.awt.event.ActionListener;
33     import java.awt.event.WindowAdapter;
34     import java.awt.event.WindowEvent;
35    
36     import javax.swing.BorderFactory;
37     import javax.swing.Box;
38     import javax.swing.BoxLayout;
39     import javax.swing.JButton;
40     import javax.swing.JComboBox;
41     import javax.swing.JLabel;
42     import javax.swing.JOptionPane;
43     import javax.swing.JPanel;
44     import javax.swing.JScrollPane;
45    
46     import net.sf.juife.EnhancedDialog;
47     import net.sf.juife.JuifeUtils;
48    
49     import net.sf.juife.event.TaskEvent;
50     import net.sf.juife.event.TaskListener;
51    
52     import org.jsampler.CC;
53 iliev 1315 import org.jsampler.JSPrefs;
54    
55 iliev 1327 import org.jsampler.event.ParameterEvent;
56     import org.jsampler.event.ParameterListener;
57    
58 iliev 1286 import org.jsampler.task.Midi;
59     import org.jsampler.view.ParameterTable;
60    
61     import org.linuxsampler.lscp.MidiInputDriver;
62 iliev 1327 import org.linuxsampler.lscp.Parameter;
63 iliev 1286
64     import static org.jsampler.view.std.StdI18n.i18n;
65 iliev 1315 import static org.jsampler.view.std.StdPrefs.*;
66 iliev 1286
67    
68     /**
69     *
70     * @author Grigor Iliev
71     */
72     public class JSNewMidiDeviceDlg extends EnhancedDialog {
73 iliev 1445 private final Pane mainPane = new Pane();
74 iliev 1286
75     /**
76     * Creates a new instance of JSNewMidiDeviceDlg
77     */
78     public JSNewMidiDeviceDlg(Frame owner) {
79     super(owner, i18n.getLabel("JSNewMidiDeviceDlg.title"));
80    
81     initNewMidiDeviceDlg();
82     }
83    
84     /**
85     * Creates a new instance of JSNewMidiDeviceDlg
86     */
87     public JSNewMidiDeviceDlg(Dialog owner) {
88     super(owner, i18n.getLabel("JSNewMidiDeviceDlg.title"));
89    
90     initNewMidiDeviceDlg();
91     }
92    
93     private void
94     initNewMidiDeviceDlg() {
95 iliev 1445 mainPane.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
96 iliev 1286 mainPane.setPreferredSize (
97 iliev 1445 JuifeUtils.getUnionSize(mainPane.getMinimumSize(), new Dimension(250, 230))
98 iliev 1286 );
99     add(mainPane);
100     pack();
101    
102     setLocation(JuifeUtils.centerLocation(this, getOwner()));
103    
104 iliev 1445 mainPane.btnCancel.addActionListener(new ActionListener() {
105 iliev 1286 public void
106     actionPerformed(ActionEvent e) { onCancel(); }
107     });
108    
109 iliev 1445 mainPane.btnCreate.addActionListener(new ActionListener() {
110 iliev 1286 public void
111     actionPerformed(ActionEvent e) { onOk(); }
112     });
113    
114     addWindowListener(new WindowAdapter() {
115     public void
116 iliev 1445 windowActivated(WindowEvent e) { mainPane.btnCreate.requestFocusInWindow(); }
117 iliev 1286 });
118     }
119    
120     protected void
121     onOk() {
122 iliev 1445 MidiInputDriver driver = mainPane.getSelectedDriver();
123     if(driver == null) {
124 iliev 1286 JOptionPane.showMessageDialog (
125     this, i18n.getMessage("JSNewMidiDeviceDlg.selectDriver!"),
126     "",
127     JOptionPane.INFORMATION_MESSAGE
128     );
129    
130     return;
131     }
132    
133 iliev 1445 mainPane.btnCreate.setEnabled(false);
134 iliev 1286
135     final Midi.CreateDevice cmd =
136 iliev 1467 new Midi.CreateDevice(driver.getName(), mainPane.getParameters());
137 iliev 1286
138     cmd.addTaskListener(new TaskListener() {
139     public void
140     taskPerformed(TaskEvent e) {
141 iliev 1445 mainPane.btnCreate.setEnabled(true);
142 iliev 1286 setVisible(false);
143     }
144     });
145    
146     CC.getTaskQueue().add(cmd);
147     }
148    
149     protected void
150     onCancel() { setVisible(false); }
151 iliev 1315
152     private static JSPrefs
153     preferences() { return CC.getViewConfig().preferences(); }
154 iliev 1445
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 iliev 1743 parameterTable.setFillsViewportHeight(true);
177 iliev 1445
178     parameterTable.getModel().addParameterListener(new ParameterListener() {
179     public void
180     parameterChanged(ParameterEvent e) {
181     updateParameters();
182     }
183     });
184    
185     cbDrivers.addActionListener(new ActionListener() {
186     public void
187     actionPerformed(ActionEvent e) {
188     MidiInputDriver d = (MidiInputDriver)cbDrivers.getSelectedItem();
189     if(d == null) return;
190    
191     cbDrivers.setToolTipText(d.getDescription());
192     parameterTable.getModel().setParameters(d.getParameters());
193     updateParameters();
194     }
195     });
196    
197     MidiInputDriver[] drivers = CC.getSamplerModel().getMidiInputDrivers();
198     if(drivers != null) {
199     for(MidiInputDriver d : drivers) cbDrivers.addItem(d);
200    
201     String s = preferences().getStringProperty(DEFAULT_MIDI_DRIVER);
202     for(MidiInputDriver d : drivers) {
203     if(d.getName().equals(s)) {
204     cbDrivers.setSelectedItem(d);
205     break;
206     }
207     }
208     }
209    
210     cbDrivers.setMaximumSize(cbDrivers.getPreferredSize());
211     p.add(Box.createRigidArea(new Dimension(5, 0)));
212     p.add(cbDrivers);
213    
214     p.setAlignmentX(LEFT_ALIGNMENT);
215     mainPane.add(p);
216    
217     mainPane.add(Box.createRigidArea(new Dimension(0, 12)));
218    
219     //parameterTable.setModel(new ParameterTableModel(CC.getSamplerModel().));
220     JScrollPane sp = new JScrollPane(parameterTable);
221     sp.setAlignmentX(LEFT_ALIGNMENT);
222     mainPane.add(sp);
223    
224     add(mainPane);
225    
226     JPanel btnPane = new JPanel();
227     btnPane.setLayout(new BoxLayout(btnPane, BoxLayout.X_AXIS));
228     btnPane.add(Box.createGlue());
229     btnPane.add(btnCreate);
230     btnPane.add(Box.createRigidArea(new Dimension(5, 0)));
231     btnPane.add(btnCancel);
232    
233     btnPane.setBorder(BorderFactory.createEmptyBorder(17, 0, 0, 0));
234     add(btnPane, BorderLayout.SOUTH);
235     }
236    
237     public MidiInputDriver
238     getSelectedDriver() {
239     return (MidiInputDriver)cbDrivers.getSelectedItem();
240     }
241    
242 iliev 1488 /**
243     * Stops any cell editing in progress and returns the parameters
244     */
245 iliev 1467 public Parameter[]
246 iliev 1488 getParameters() {
247     if(parameterTable.getCellEditor() != null) {
248     parameterTable.getCellEditor().stopCellEditing();
249     }
250     return parameterTable.getModel().getParameters();
251     }
252 iliev 1467
253 iliev 1445 private void
254     updateParameters() {
255     MidiInputDriver d = (MidiInputDriver)cbDrivers.getSelectedItem();
256     if(d == null) return;
257    
258     final Parameter[] parameters = parameterTable.getModel().getParameters();
259    
260     final Midi.GetDriverParametersInfo task =
261     new Midi.GetDriverParametersInfo(d.getName(), parameters);
262    
263     task.addTaskListener(new TaskListener() {
264     public void
265     taskPerformed(TaskEvent e) {
266     if(task.doneWithErrors()) return;
267     for(Parameter p : parameters) {
268     for(Parameter p2 : task.getResult()) {
269     if(p2.getName().equals(p.getName())) {
270     p2.setValue(p.getValue());
271     if(p2.getValue() == null) {
272     p2.setValue(p2.getDefault());
273     }
274     break;
275     }
276     }
277     }
278    
279     parameterTable.getModel().setParameters(task.getResult());
280     }
281     });
282    
283     CC.getTaskQueue().add(task);
284     }
285     }
286 iliev 1286 }

  ViewVC Help
Powered by ViewVC