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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1286 - (show annotations) (download)
Fri Aug 10 20:24:23 2007 UTC (16 years, 9 months ago) by iliev
File size: 5555 byte(s)
- Updated to version 0.6a. The Fantasia distribution is now
  capable of controlling all features available in LinuxSampler

1 /*
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 import org.jsampler.task.Midi;
54 import org.jsampler.view.ParameterTable;
55
56 import org.linuxsampler.lscp.MidiInputDriver;
57
58 import static org.jsampler.view.std.StdI18n.i18n;
59
60
61 /**
62 *
63 * @author Grigor Iliev
64 */
65 public class JSNewMidiDeviceDlg extends EnhancedDialog {
66 private final JLabel lDriver = new JLabel(i18n.getLabel("JSNewMidiDeviceDlg.lDriver"));
67 private final JComboBox cbDrivers = new JComboBox();
68 private final ParameterTable parameterTable = new ParameterTable();
69
70 private final JButton btnCreate =
71 new JButton(i18n.getButtonLabel("JSNewMidiDeviceDlg.btnCreate"));
72 private final JButton btnCancel = new JButton(i18n.getButtonLabel("cancel"));
73
74 /**
75 * Creates a new instance of JSNewMidiDeviceDlg
76 */
77 public JSNewMidiDeviceDlg(Frame owner) {
78 super(owner, i18n.getLabel("JSNewMidiDeviceDlg.title"));
79
80 initNewMidiDeviceDlg();
81 }
82
83 /**
84 * Creates a new instance of JSNewMidiDeviceDlg
85 */
86 public JSNewMidiDeviceDlg(Dialog owner) {
87 super(owner, i18n.getLabel("JSNewMidiDeviceDlg.title"));
88
89 initNewMidiDeviceDlg();
90 }
91
92 private void
93 initNewMidiDeviceDlg() {
94 JPanel mainPane = new JPanel();
95 mainPane.setLayout(new BoxLayout(mainPane, BoxLayout.Y_AXIS));
96
97 JPanel p = new JPanel();
98 p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
99 p.add(lDriver);
100
101 parameterTable.getModel().setEditFixedParameters(true);
102
103 cbDrivers.addActionListener(new ActionListener() {
104 public void
105 actionPerformed(ActionEvent e) {
106 MidiInputDriver d = (MidiInputDriver)cbDrivers.getSelectedItem();
107 if(d == null) return;
108
109 cbDrivers.setToolTipText(d.getDescription());
110 parameterTable.getModel().setParameters(d.getParameters());
111 }
112 });
113
114 MidiInputDriver[] drivers = CC.getSamplerModel().getMidiInputDrivers();
115 if(drivers != null) {
116 for(MidiInputDriver d : drivers) cbDrivers.addItem(d);
117 }
118
119 cbDrivers.setMaximumSize(cbDrivers.getPreferredSize());
120 p.add(Box.createRigidArea(new Dimension(5, 0)));
121 p.add(cbDrivers);
122
123 p.setAlignmentX(LEFT_ALIGNMENT);
124 mainPane.add(p);
125
126 mainPane.add(Box.createRigidArea(new Dimension(0, 12)));
127
128 //parameterTable.setModel(new ParameterTableModel(CC.getSamplerModel().));
129 JScrollPane sp = new JScrollPane(parameterTable);
130 sp.setAlignmentX(LEFT_ALIGNMENT);
131 mainPane.add(sp);
132
133 mainPane.setBorder(BorderFactory.createEmptyBorder(12, 12, 17, 12));
134 mainPane.setPreferredSize (
135 JuifeUtils.getUnionSize(mainPane.getMinimumSize(), new Dimension(250, 200))
136 );
137 add(mainPane);
138
139 JPanel btnPane = new JPanel();
140 btnPane.setLayout(new BoxLayout(btnPane, BoxLayout.X_AXIS));
141 btnPane.add(Box.createGlue());
142 btnPane.add(btnCreate);
143 btnPane.add(Box.createRigidArea(new Dimension(5, 0)));
144 btnPane.add(btnCancel);
145
146 btnPane.setBorder(BorderFactory.createEmptyBorder(0, 12, 12, 12));
147 add(btnPane, BorderLayout.SOUTH);
148
149 pack();
150
151 setLocation(JuifeUtils.centerLocation(this, getOwner()));
152
153 btnCancel.addActionListener(new ActionListener() {
154 public void
155 actionPerformed(ActionEvent e) { onCancel(); }
156 });
157
158 btnCreate.addActionListener(new ActionListener() {
159 public void
160 actionPerformed(ActionEvent e) { onOk(); }
161 });
162
163 addWindowListener(new WindowAdapter() {
164 public void
165 windowActivated(WindowEvent e) { btnCreate.requestFocusInWindow(); }
166 });
167 }
168
169 protected void
170 onOk() {
171 Object obj = cbDrivers.getSelectedItem();
172 if(obj == null) {
173 JOptionPane.showMessageDialog (
174 this, i18n.getMessage("JSNewMidiDeviceDlg.selectDriver!"),
175 "",
176 JOptionPane.INFORMATION_MESSAGE
177 );
178
179 return;
180 }
181
182 btnCreate.setEnabled(false);
183
184 MidiInputDriver driver = (MidiInputDriver)obj;
185
186 final Midi.CreateDevice cmd =
187 new Midi.CreateDevice(driver.getName(), driver.getParameters());
188
189 cmd.addTaskListener(new TaskListener() {
190 public void
191 taskPerformed(TaskEvent e) {
192 btnCreate.setEnabled(true);
193 setVisible(false);
194 }
195 });
196
197 CC.getTaskQueue().add(cmd);
198 }
199
200 protected void
201 onCancel() { setVisible(false); }
202 }

  ViewVC Help
Powered by ViewVC