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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1308 - (hide annotations) (download)
Tue Aug 28 17:00:19 2007 UTC (16 years, 8 months ago) by iliev
File size: 6931 byte(s)
* A lists of recently used instrument files, directories,
  database instruments, database directories are now available
  for quick access, where appropriate.

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     import java.awt.Dimension;
26     import java.awt.GridBagConstraints;
27     import java.awt.GridBagLayout;
28     import java.awt.Insets;
29    
30     import java.awt.event.ActionEvent;
31     import java.awt.event.ActionListener;
32    
33     import javax.swing.JButton;
34 iliev 1308 import javax.swing.JComboBox;
35 iliev 1286 import javax.swing.JFileChooser;
36     import javax.swing.JLabel;
37     import javax.swing.JPanel;
38     import javax.swing.JSpinner;
39     import javax.swing.JTextField;
40     import javax.swing.SpinnerNumberModel;
41    
42     import javax.swing.event.DocumentEvent;
43     import javax.swing.event.DocumentListener;
44    
45     import net.sf.juife.OkCancelDialog;
46    
47     import org.jsampler.CC;
48     import org.jsampler.Instrument;
49 iliev 1304 import org.jsampler.JSPrefs;
50 iliev 1286
51     import static org.jsampler.view.std.StdI18n.i18n;
52    
53    
54     /**
55     *
56     * @author Grigor Iliev
57     */
58     public class JSAddOrEditInstrumentDlg extends OkCancelDialog {
59     private final JLabel lName = new JLabel(i18n.getLabel("JSAddOrEditInstrumentDlg.lName"));
60     private final JLabel lDesc = new JLabel(i18n.getLabel("JSAddOrEditInstrumentDlg.lDesc"));
61     private final JLabel lPath = new JLabel(i18n.getLabel("JSAddOrEditInstrumentDlg.lPath"));
62     private final JLabel lIndex = new JLabel(i18n.getLabel("JSAddOrEditInstrumentDlg.lIndex"));
63    
64     private final JButton btnBrowse =
65     new JButton(i18n.getButtonLabel("browse"));
66    
67     private final JTextField tfName = new JTextField();
68     private final JTextField tfDesc = new JTextField();
69 iliev 1308 private final JComboBox cbPath = new JComboBox();
70 iliev 1286 private final JSpinner spinnerIndex = new JSpinner(new SpinnerNumberModel(0, 0, 500, 1));
71    
72     private Instrument instrument;
73    
74    
75     /**
76     * Creates a new instance of <code>JSAddOrEditInstrumentDlg</code>.
77     */
78     public JSAddOrEditInstrumentDlg() { this(new Instrument()); }
79    
80     /**
81     * Creates a new instance of <code>JSAddOrEditInstrumentDlg</code>.
82     *
83     * @param instr The instrument to modify.
84     */
85     public JSAddOrEditInstrumentDlg(Instrument instr) {
86     super(CC.getMainFrame(), i18n.getLabel("JSAddOrEditInstrumentDlg.title"));
87    
88     instrument = instr;
89    
90 iliev 1308 cbPath.setEditable(true);
91     String[] files = preferences().getStringListProperty("recentInstrumentFiles");
92     for(String s : files) cbPath.addItem(s);
93     cbPath.setSelectedItem(null);
94    
95     cbPath.setPreferredSize (
96     new Dimension(200, cbPath.getPreferredSize().height)
97     );
98    
99 iliev 1286 JPanel p = new JPanel();
100    
101     GridBagLayout gridbag = new GridBagLayout();
102     GridBagConstraints c = new GridBagConstraints();
103    
104     p.setLayout(gridbag);
105    
106     c.fill = GridBagConstraints.NONE;
107    
108     c.gridx = 0;
109     c.gridy = 0;
110     c.anchor = GridBagConstraints.EAST;
111     c.insets = new Insets(3, 3, 3, 3);
112     gridbag.setConstraints(lName, c);
113     p.add(lName);
114    
115     c.gridx = 0;
116     c.gridy = 1;
117     gridbag.setConstraints(lDesc, c);
118     p.add(lDesc);
119    
120     c.gridx = 0;
121     c.gridy = 2;
122     gridbag.setConstraints(lPath, c);
123     p.add(lPath);
124    
125     c.gridx = 2;
126     c.gridy = 2;
127     gridbag.setConstraints(btnBrowse, c);
128     p.add(btnBrowse);
129    
130     c.gridx = 0;
131     c.gridy = 3;
132     gridbag.setConstraints(lIndex, c);
133     p.add(lIndex);
134    
135     c.fill = GridBagConstraints.HORIZONTAL;
136     c.gridx = 1;
137     c.gridy = 0;
138     c.weightx = 1.0;
139     c.gridwidth = 2;
140     c.anchor = GridBagConstraints.WEST;
141     gridbag.setConstraints(tfName, c);
142     p.add(tfName);
143    
144     c.gridx = 1;
145     c.gridy = 1;
146     gridbag.setConstraints(tfDesc, c);
147     p.add(tfDesc);
148    
149     c.gridx = 1;
150     c.gridy = 2;
151     c.gridwidth = 1;
152 iliev 1308 gridbag.setConstraints(cbPath, c);
153     p.add(cbPath);
154 iliev 1286
155     c.gridx = 1;
156     c.gridy = 3;
157     c.gridwidth = 2;
158     gridbag.setConstraints(spinnerIndex, c);
159     p.add(spinnerIndex);
160    
161     setMainPane(p);
162    
163     int w = getPreferredSize().width;
164     Dimension d = new Dimension(w > 500 ? w : 500, getPreferredSize().height);
165     setPreferredSize(d);
166     pack();
167    
168     setLocationRelativeTo(getOwner());
169    
170     tfName.getDocument().addDocumentListener(getHandler());
171     btnBrowse.addActionListener(getHandler());
172 iliev 1308 cbPath.addActionListener(new ActionListener() {
173     public void
174     actionPerformed(ActionEvent e) { updateState(); }
175     });
176 iliev 1286
177     updateInfo();
178     updateState();
179     }
180    
181 iliev 1304 protected JSPrefs
182     preferences() { return CC.getViewConfig().preferences(); }
183    
184 iliev 1286 private void
185     updateInfo() {
186     tfName.setText(getInstrument().getName());
187     tfDesc.setText(getInstrument().getDescription());
188 iliev 1308 cbPath.setSelectedItem(getInstrument().getPath());
189 iliev 1286 spinnerIndex.setValue(getInstrument().getInstrumentIndex());
190     }
191    
192     private void
193     updateState() {
194     boolean b = true;
195     if(tfName.getText().length() == 0) b = false;
196 iliev 1308 Object o = cbPath.getSelectedItem();
197     if(o == null || o.toString().length() == 0) b = false;
198 iliev 1286
199     btnOk.setEnabled(b);
200     }
201    
202     protected void
203     onOk() {
204     if(!btnOk.isEnabled()) return;
205    
206     instrument.setName(tfName.getText());
207     instrument.setDescription(tfDesc.getText());
208 iliev 1308 instrument.setPath(cbPath.getSelectedItem().toString());
209 iliev 1286 int idx = Integer.parseInt(spinnerIndex.getValue().toString());
210     instrument.setInstrumentIndex(idx);
211    
212 iliev 1308 StdUtils.updateRecentElements("recentInstrumentFiles", instrument.getPath());
213    
214 iliev 1286 setVisible(false);
215     setCancelled(false);
216     }
217    
218     protected void
219     onCancel() {
220     setVisible(false);
221     }
222    
223     /**
224     * Gets the created/modified orchestra.
225     * @return The created/modified orchestra.
226     */
227     public Instrument
228     getInstrument() { return instrument; }
229    
230    
231     private final Handler eventHandler = new Handler();
232    
233     private Handler
234     getHandler() { return eventHandler; }
235    
236     private class Handler implements DocumentListener, ActionListener {
237     // DocumentListener
238     public void
239     insertUpdate(DocumentEvent e) { updateState(); }
240    
241     public void
242     removeUpdate(DocumentEvent e) { updateState(); }
243    
244     public void
245     changedUpdate(DocumentEvent e) { updateState(); }
246    
247     // ActionListener
248     public void
249     actionPerformed(ActionEvent e) {
250 iliev 1304 String path = preferences().getStringProperty("lastInstrumentLocation");
251     JFileChooser fc = new JFileChooser(path);
252 iliev 1286 int result = fc.showOpenDialog(JSAddOrEditInstrumentDlg.this);
253     if(result != JFileChooser.APPROVE_OPTION) return;
254    
255 iliev 1308 cbPath.setSelectedItem(fc.getSelectedFile().getAbsolutePath());
256 iliev 1304 path = fc.getCurrentDirectory().getAbsolutePath();
257     preferences().setStringProperty("lastInstrumentLocation", path);
258 iliev 1286 }
259     }
260     }

  ViewVC Help
Powered by ViewVC