/[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 1304 - (hide annotations) (download)
Sun Aug 26 14:19:36 2007 UTC (16 years, 8 months ago) by iliev
File size: 6392 byte(s)
* The locations of the last scanned instrument/directory and last
  added instrument to orchestra are now saved for the next session

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

  ViewVC Help
Powered by ViewVC