/[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 1286 - (hide annotations) (download)
Fri Aug 10 20:24:23 2007 UTC (16 years, 8 months ago) by iliev
File size: 6080 byte(s)
- Updated to version 0.6a. The Fantasia distribution is now
  capable of controlling all features available in LinuxSampler

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

  ViewVC Help
Powered by ViewVC