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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

1 iliev 1205 /*
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