/[svn]/jsampler/trunk/src/org/jsampler/view/classic/AddDbInstrumentsFromFileDlg.java
ViewVC logotype

Contents of /jsampler/trunk/src/org/jsampler/view/classic/AddDbInstrumentsFromFileDlg.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1205 - (show annotations) (download)
Thu May 24 21:55:41 2007 UTC (16 years, 10 months ago) by iliev
File size: 8412 byte(s)
* upgrading to version 0.5a

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.classic;
24
25 import java.awt.Dialog;
26 import java.awt.Dimension;
27 import java.awt.Frame;
28 import java.awt.Insets;
29
30 import java.awt.event.ActionEvent;
31 import java.awt.event.ActionListener;
32
33 import javax.swing.BorderFactory;
34 import javax.swing.Box;
35 import javax.swing.BoxLayout;
36 import javax.swing.ButtonGroup;
37 import javax.swing.JButton;
38 import javax.swing.JFileChooser;
39 import javax.swing.JPanel;
40 import javax.swing.JRadioButton;
41 import javax.swing.JSpinner;
42 import javax.swing.JTextField;
43 import javax.swing.SpinnerNumberModel;
44 import javax.swing.SwingUtilities;
45
46 import javax.swing.event.DocumentEvent;
47 import javax.swing.event.DocumentListener;
48
49 import net.sf.juife.OkCancelDialog;
50 import net.sf.juife.Task;
51
52 import net.sf.juife.event.TaskEvent;
53 import net.sf.juife.event.TaskListener;
54
55 import org.jsampler.CC;
56 import org.jsampler.task.InstrumentsDb;
57
58 import static org.jsampler.view.classic.ClassicI18n.i18n;
59
60 /**
61 *
62 * @author Grigor Iliev
63 */
64 public class AddDbInstrumentsFromFileDlg extends OkCancelDialog {
65 private final JRadioButton rbAllInstruments =
66 new JRadioButton(i18n.getLabel("AddDbInstrumentsFromFileDlg.rbAllInstruments"));
67 private final JRadioButton rbIndex =
68 new JRadioButton(i18n.getLabel("AddDbInstrumentsFromFileDlg.rbIndex"));
69
70 private final JTextField tfSource = new JTextField();
71 private final JSpinner spinnerIndex = new JSpinner(new SpinnerNumberModel(0, 0, 500, 1));
72 private final JButton btnBrowse = new JButton(Res.iconFolderOpen16);
73 private final JTextField tfDest = new JTextField();
74 private final JButton btnBrowseDb = new JButton(Res.iconFolderOpen16);
75
76 /**
77 * Creates a new instance of <code>AddDbInstrumentsFromFileDlg</code>
78 */
79 public
80 AddDbInstrumentsFromFileDlg(Frame owner, String dbDir) {
81 super(owner, i18n.getLabel("AddDbInstrumentsFromFileDlg.title"));
82
83 initAddDbInstrumentsFromFileDlg(dbDir);
84 }
85
86 /**
87 * Creates a new instance of <code>AddDbInstrumentsFromFileDlg</code>
88 */
89 public
90 AddDbInstrumentsFromFileDlg(Dialog owner, String dbDir) {
91 super(owner, i18n.getLabel("AddDbInstrumentsFromFileDlg.title"));
92
93 initAddDbInstrumentsFromFileDlg(dbDir);
94 }
95
96 private void
97 initAddDbInstrumentsFromFileDlg(String dbDir) {
98 JPanel p = new JPanel();
99 p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
100
101 JPanel p2 = new JPanel();
102 p2.setLayout(new BoxLayout(p2, BoxLayout.X_AXIS));
103 p2.add(tfSource);
104 p2.add(Box.createRigidArea(new Dimension(6, 0)));
105 String s = i18n.getButtonLabel("AddDbInstrumentsFromFileDlg.btnBrowse");
106 btnBrowse.setMargin(new Insets(0, 0, 0, 0));
107 btnBrowse.setToolTipText(s);
108 p2.add(btnBrowse);
109 p2.setBorder(BorderFactory.createEmptyBorder(0, 3, 0, 3));
110 p2.setMaximumSize(new Dimension(Short.MAX_VALUE, p2.getPreferredSize().height));
111 p2.setAlignmentX(LEFT_ALIGNMENT);
112
113 p.add(p2);
114
115 p2 = new JPanel();
116 p2.setLayout(new BoxLayout(p2, BoxLayout.X_AXIS));
117 p2.add(rbAllInstruments);
118 p2.setBorder(BorderFactory.createEmptyBorder(0, 3, 0, 3));
119 p2.setAlignmentX(LEFT_ALIGNMENT);
120 p.add(p2);
121
122 p2 = new JPanel();
123 p2.setLayout(new BoxLayout(p2, BoxLayout.X_AXIS));
124 p2.add(rbIndex);
125 p2.add(Box.createRigidArea(new Dimension(6, 0)));
126 p2.add(spinnerIndex);
127 p2.setBorder(BorderFactory.createEmptyBorder(0, 3, 3, 3));
128 p2.setMaximumSize(new Dimension(Short.MAX_VALUE, p2.getPreferredSize().height));
129 p2.setAlignmentX(LEFT_ALIGNMENT);
130
131 p.add(p2);
132
133 s = i18n.getLabel("AddDbInstrumentsFromFileDlg.source");
134 p.setBorder(BorderFactory.createTitledBorder(s));
135
136 JPanel mainPane = new JPanel();
137 mainPane.setLayout(new BoxLayout(mainPane, BoxLayout.Y_AXIS));
138
139 mainPane.add(p);
140 mainPane.add(Box.createRigidArea(new Dimension(0, 6)));
141
142 p = new JPanel();
143 p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
144
145 p2 = new JPanel();
146 p2.setLayout(new BoxLayout(p2, BoxLayout.X_AXIS));
147 p2.add(tfDest);
148 p2.add(Box.createRigidArea(new Dimension(6, 0)));
149 s = i18n.getButtonLabel("AddDbInstrumentsFromFileDlg.btnBrowseDb");
150 btnBrowseDb.setMargin(new Insets(0, 0, 0, 0));
151 btnBrowseDb.setToolTipText(s);
152 p2.add(btnBrowseDb);
153 p2.setBorder(BorderFactory.createEmptyBorder(0, 3, 3, 3));
154 p2.setMaximumSize(new Dimension(Short.MAX_VALUE, p2.getPreferredSize().height));
155 p2.setAlignmentX(LEFT_ALIGNMENT);
156
157 p.add(p2);
158
159 s = i18n.getLabel("AddDbInstrumentsFromFileDlg.dest");
160 p.setBorder(BorderFactory.createTitledBorder(s));
161
162 mainPane.add(p);
163 Dimension d = mainPane.getPreferredSize();
164 mainPane.setPreferredSize(new Dimension(d.width > 300 ? d.width : 300, d.height));
165
166 setMainPane(mainPane);
167
168 setMinimumSize(this.getPreferredSize());
169 setResizable(true);
170
171 if(dbDir != null) tfDest.setText(dbDir);
172
173 ButtonGroup group = new ButtonGroup();
174 group.add(rbAllInstruments);
175 group.add(rbIndex);
176 rbAllInstruments.doClick(0);
177
178 btnOk.setEnabled(false);
179 spinnerIndex.setEnabled(false);
180
181 tfSource.getDocument().addDocumentListener(getHandler());
182 tfDest.getDocument().addDocumentListener(getHandler());
183
184 btnBrowse.addActionListener(new ActionListener() {
185 public void
186 actionPerformed(ActionEvent e) { onBrowse(); }
187 });
188
189 rbAllInstruments.addActionListener(new ActionListener() {
190 public void
191 actionPerformed(ActionEvent e) {
192 spinnerIndex.setEnabled(rbIndex.isSelected());
193 }
194 });
195
196 rbIndex.addActionListener(new ActionListener() {
197 public void
198 actionPerformed(ActionEvent e) {
199 spinnerIndex.setEnabled(rbIndex.isSelected());
200 }
201 });
202
203 btnBrowseDb.addActionListener(new ActionListener() {
204 public void
205 actionPerformed(ActionEvent e) {
206 DbDirectoryChooser dlg;
207 dlg = new DbDirectoryChooser(AddDbInstrumentsFromFileDlg.this);
208 String s = tfDest.getText();
209 if(s.length() > 0) dlg.setSelectedDirectory(s);
210 dlg.setVisible(true);
211 if(dlg.isCancelled()) return;
212 tfDest.setText(dlg.getSelectedDirectory());
213 }
214 });
215 }
216
217 private void
218 onBrowse() {
219 JFileChooser fc = new JFileChooser();
220 fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
221 int result = fc.showOpenDialog(this);
222 if(result != JFileChooser.APPROVE_OPTION) return;
223
224 tfSource.setText(fc.getSelectedFile().getPath());
225 }
226
227 private void
228 updateState() {
229 boolean b = tfSource.getText().length() != 0 && tfDest.getText().length() != 0;
230 btnOk.setEnabled(b);
231 }
232
233 protected void
234 onOk() {
235 if(!btnOk.isEnabled()) return;
236
237 btnOk.setEnabled(false);
238 String dbDir = tfDest.getText();
239 String filePath = tfSource.getText();
240 int idx = -1;
241 if(rbIndex.isSelected()) idx = Integer.parseInt(spinnerIndex.getValue().toString());
242
243 final Task<Integer> t = new InstrumentsDb.AddInstrumentsFromFile(dbDir, filePath, idx);
244 t.addTaskListener(new TaskListener() {
245 public void
246 taskPerformed(TaskEvent e) {
247 updateState();
248 if(t.doneWithErrors()) return;
249 showProgress(t.getResult());
250 }
251 });
252
253 CC.getTaskQueue().add(t);
254 }
255
256 private void
257 showProgress(int jobId) {
258 final AddDbInstrumentsProgressDlg dlg;
259 dlg = new AddDbInstrumentsProgressDlg(this, jobId);
260 SwingUtilities.invokeLater(new Runnable() {
261 public void
262 run() { dlg.setVisible(true); }
263 });
264 }
265
266 protected void
267 onCancel() { setVisible(false); }
268
269 private final Handler eventHandler = new Handler();
270
271 private Handler
272 getHandler() { return eventHandler; }
273
274 private class Handler implements DocumentListener {
275 // DocumentListener
276 public void
277 insertUpdate(DocumentEvent e) { updateState(); }
278
279 public void
280 removeUpdate(DocumentEvent e) { updateState(); }
281
282 public void
283 changedUpdate(DocumentEvent e) { updateState(); }
284 }
285 }

  ViewVC Help
Powered by ViewVC