/[svn]/jsampler/trunk/src/org/jsampler/view/fantasia/PrefsDlg.java
ViewVC logotype

Annotation of /jsampler/trunk/src/org/jsampler/view/fantasia/PrefsDlg.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1540 - (hide annotations) (download)
Mon Dec 3 23:22:02 2007 UTC (16 years, 4 months ago) by iliev
File size: 9440 byte(s)
* Fantasia: by default the volume values are now shown in decibels
* Implemented support for retrieving instrument information
  from instrument files
* Some bugfixes and enhancements

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.fantasia;
24    
25     import java.awt.BorderLayout;
26     import java.awt.Color;
27     import java.awt.Dimension;
28     import java.awt.Frame;
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.JButton;
37     import javax.swing.JCheckBox;
38     import javax.swing.JPanel;
39     import javax.swing.JTabbedPane;
40    
41     import net.sf.juife.EnhancedDialog;
42     import net.sf.juife.JuifeUtils;
43    
44     import org.jsampler.CC;
45     import org.jsampler.LSConsoleModel;
46     import org.jsampler.Prefs;
47    
48     import org.jsampler.view.std.JSConnectionPropsPane;
49 iliev 1313 import org.jsampler.view.std.JSDefaultsPropsPane;
50 iliev 1286 import org.jsampler.view.std.JSGeneralProps;
51     import org.jsampler.view.std.JSLSConsolePropsPane;
52 iliev 1357 import org.jsampler.view.std.JSViewProps;
53 iliev 1286
54     import static org.jsampler.view.fantasia.FantasiaI18n.i18n;
55     import static org.jsampler.view.fantasia.FantasiaPrefs.*;
56    
57    
58     /**
59     *
60     * @author Grigor Iliev
61     */
62     public class PrefsDlg extends EnhancedDialog {
63     private final GeneralPane genPane = new GeneralPane();
64 iliev 1357 private final ViewPane viewPane = new ViewPane();
65 iliev 1286 private final ConsolePane consolePane = new ConsolePane();
66     private final JSConnectionPropsPane connectionPane = new JSConnectionPropsPane();
67 iliev 1313 private final JSDefaultsPropsPane defaultsPane;
68 iliev 1286
69     private final JButton btnApply = new JButton(i18n.getButtonLabel("apply"));
70     private final JButton btnClose = new JButton(i18n.getButtonLabel("close"));
71    
72    
73     /** Creates a new instance of <code>PrefsDlg</code> */
74     public
75     PrefsDlg(Frame owner) {
76     super(owner, i18n.getLabel("PrefsDlg.title"), true);
77    
78 iliev 1313 defaultsPane = new JSDefaultsPropsPane(this, Res.iconEdit16);
79    
80 iliev 1286 JTabbedPane tp = new JTabbedPane();
81     tp.addTab(i18n.getLabel("PrefsDlg.tabGeneral"), genPane);
82 iliev 1357 tp.addTab(i18n.getLabel("PrefsDlg.tabView"), viewPane);
83 iliev 1286 tp.addTab(i18n.getLabel("PrefsDlg.tabConsole"), consolePane);
84    
85     JPanel p = new JPanel();
86     p.setLayout(new BorderLayout());
87     p.setBorder(BorderFactory.createEmptyBorder(6, 6, 6, 6));
88     p.add(connectionPane, BorderLayout.NORTH);
89     tp.addTab(i18n.getLabel("PrefsDlg.tabConnection"), p);
90 iliev 1313 tp.addTab(i18n.getLabel("PrefsDlg.tabDefaults"), defaultsPane);
91 iliev 1286
92     tp.setAlignmentX(RIGHT_ALIGNMENT);
93    
94     // Set preferred size for Apply & Exit buttons
95     Dimension d = JuifeUtils.getUnionSize(btnApply, btnClose);
96     btnApply.setPreferredSize(d);
97     btnClose.setPreferredSize(d);
98    
99     JPanel btnPane = new JPanel();
100     btnPane.setLayout(new BoxLayout(btnPane, BoxLayout.X_AXIS));
101     btnPane.add(btnApply);
102     btnPane.add(Box.createRigidArea(new Dimension(5, 0)));
103     btnPane.add(btnClose);
104     btnPane.setAlignmentX(RIGHT_ALIGNMENT);
105    
106     JPanel mainPane = new JPanel();
107     mainPane.setLayout(new BoxLayout(mainPane, BoxLayout.Y_AXIS));
108     mainPane.add(tp);
109     mainPane.add(Box.createRigidArea(new Dimension(0, 12)));
110     mainPane.add(btnPane);
111     mainPane.setBorder(BorderFactory.createEmptyBorder(11, 12, 12, 12));
112    
113     getContentPane().add(mainPane);
114    
115     pack();
116     setResizable(false);
117     setLocation(JuifeUtils.centerLocation(this, owner));
118    
119     installListeners();
120    
121     connectionPane.setLSAddress(Prefs.getLSAddress());
122     connectionPane.setLSPort(String.valueOf(Prefs.getLSPort()));
123     }
124    
125     private void
126     installListeners() {
127     btnApply.addActionListener(new ActionListener() {
128     public void
129     actionPerformed(ActionEvent e) { onApply(); }
130     });
131    
132     btnClose.addActionListener(new ActionListener() {
133     public void
134     actionPerformed(ActionEvent e) { onExit(); }
135     });
136     }
137    
138     protected void
139     onOk() { onApply(); }
140    
141     protected void
142     onCancel() { onExit(); }
143    
144     private void
145     onApply() {
146     genPane.apply();
147 iliev 1357 viewPane.apply();
148 iliev 1286 consolePane.apply();
149     connectionPane.apply();
150 iliev 1313 defaultsPane.apply();
151 iliev 1286
152     setVisible(false);
153     }
154    
155     private void
156     onExit() { setVisible(false); }
157     }
158    
159     class GeneralPane extends JPanel {
160     private final JCheckBox checkTurnOffAnimationEffects =
161     new JCheckBox(i18n.getLabel("GeneralPane.checkTurnOffAnimationEffects"));
162    
163     private final JCheckBox checkShowLSConsoleWhenRunScript =
164     new JCheckBox(i18n.getLabel("GeneralPane.checkShowLSConsoleWhenRunScript"));
165    
166 iliev 1540 private final JCheckBox checkShowVolumesInDecibels =
167     new JCheckBox(i18n.getLabel("GeneralPane.checkShowVolumesInDecibels"));
168    
169 iliev 1357 private final JSGeneralProps.MaxVolumePane maxVolPane = new JSGeneralProps.MaxVolumePane();
170    
171 iliev 1286 private final JSGeneralProps.JSamplerHomePane jSamplerHomePane =
172     new JSGeneralProps.JSamplerHomePane();
173    
174     private final RecentScriptsPane recentScriptsPane = new RecentScriptsPane();
175    
176     public
177     GeneralPane() {
178     setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
179    
180     checkTurnOffAnimationEffects.setAlignmentX(JPanel.LEFT_ALIGNMENT);
181    
182     boolean b = !preferences().getBoolProperty(ANIMATED);
183     checkTurnOffAnimationEffects.setSelected(b);
184    
185     add(checkTurnOffAnimationEffects);
186    
187     add(Box.createRigidArea(new Dimension(0, 6)));
188    
189     checkShowLSConsoleWhenRunScript.setAlignmentX(JPanel.LEFT_ALIGNMENT);
190    
191     b = preferences().getBoolProperty(SHOW_LS_CONSOLE_WHEN_RUN_SCRIPT);
192     checkShowLSConsoleWhenRunScript.setSelected(b);
193    
194     add(checkShowLSConsoleWhenRunScript);
195    
196     add(Box.createRigidArea(new Dimension(0, 6)));
197    
198 iliev 1540 b = preferences().getBoolProperty(VOL_MEASUREMENT_UNIT_DECIBEL);
199     checkShowVolumesInDecibels.setSelected(b);
200    
201     add(checkShowVolumesInDecibels);
202    
203     add(Box.createRigidArea(new Dimension(0, 6)));
204    
205 iliev 1357 add(maxVolPane);
206    
207     add(Box.createRigidArea(new Dimension(0, 6)));
208    
209 iliev 1286 add(jSamplerHomePane);
210    
211     add(Box.createRigidArea(new Dimension(0, 6)));
212    
213     add(recentScriptsPane);
214     add(Box.createGlue());
215    
216     setBorder(BorderFactory.createEmptyBorder(6, 6, 6, 6));
217    
218    
219     }
220    
221     protected void
222     apply() {
223 iliev 1357 maxVolPane.apply();
224    
225 iliev 1286 boolean b = !checkTurnOffAnimationEffects.isSelected();
226     preferences().setBoolProperty(ANIMATED, b);
227    
228     b = checkShowLSConsoleWhenRunScript.isSelected();
229     preferences().setBoolProperty(SHOW_LS_CONSOLE_WHEN_RUN_SCRIPT, b);
230    
231 iliev 1540 b = checkShowVolumesInDecibels.isSelected();
232     preferences().setBoolProperty(VOL_MEASUREMENT_UNIT_DECIBEL, b);
233    
234 iliev 1286 int size = recentScriptsPane.getRecentScriptsSize();
235     preferences().setIntProperty(RECENT_LSCP_SCRIPTS_SIZE, size);
236     ((MainFrame)CC.getMainFrame()).updateRecentScriptsMenu();
237    
238     String s = jSamplerHomePane.getJSamplerHome();
239     if(s.length() > 0 && !s.equals(CC.getJSamplerHome())) {
240     CC.changeJSamplerHome(s);
241     }
242     }
243    
244     private class RecentScriptsPane extends JSGeneralProps.RecentScriptsPane {
245     protected void
246     clearRecentScripts() {
247     ((MainFrame)CC.getMainFrame()).clearRecentScripts();
248     }
249     }
250     }
251    
252 iliev 1357 class ViewPane extends JPanel {
253 iliev 1496 private final JCheckBox checkTurnOffCustomWindowDecoration =
254     new JCheckBox(i18n.getLabel("ViewPane.checkTurnOffCustomWindowDecoration"));
255    
256 iliev 1357 private final JSViewProps.MidiDevicesPane midiDevsPane = new JSViewProps.MidiDevicesPane();
257     private final JSViewProps.AudioDevicesPane audioDevsPane = new JSViewProps.AudioDevicesPane();
258    
259     ViewPane() {
260     setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
261 iliev 1496
262     boolean b = preferences().getBoolProperty("TurnOffCustomWindowDecoration");
263     checkTurnOffCustomWindowDecoration.setSelected(b);
264     checkTurnOffCustomWindowDecoration.setAlignmentX(JPanel.LEFT_ALIGNMENT);
265     add(checkTurnOffCustomWindowDecoration);
266     add(Box.createRigidArea(new Dimension(0, 6)));
267 iliev 1357 add(midiDevsPane);
268     add(audioDevsPane);
269     }
270    
271     protected void
272     apply() {
273 iliev 1496 String s = "TurnOffCustomWindowDecoration";
274     preferences().setBoolProperty(s, checkTurnOffCustomWindowDecoration.isSelected());
275    
276 iliev 1357 midiDevsPane.apply();
277     audioDevsPane.apply();
278     }
279     }
280    
281 iliev 1286 class ConsolePane extends JSLSConsolePropsPane {
282     protected void
283     clearConsoleHistory() {
284     MainFrame mainFrame = (MainFrame)CC.getMainFrame();
285     mainFrame.getLSConsoleModel().clearCommandHistory();
286     }
287    
288     protected void
289     apply() {
290     super.apply();
291    
292     MainFrame mainFrame = (MainFrame)CC.getMainFrame();
293    
294     LSConsoleModel model = mainFrame.getLSConsoleModel();
295     model.setCommandHistorySize(preferences().getIntProperty(LS_CONSOLE_HISTSIZE));
296    
297     LSConsolePane console = mainFrame.getLSConsolePane();
298    
299     int c = preferences().getIntProperty(LS_CONSOLE_TEXT_COLOR);
300     console.setTextColor(new Color(c));
301    
302     c = preferences().getIntProperty(LS_CONSOLE_BACKGROUND_COLOR);
303     console.setBackgroundColor(new Color(c));
304    
305     c = preferences().getIntProperty(LS_CONSOLE_NOTIFY_COLOR);
306     console.setNotifyColor(new Color(c));
307    
308     c = preferences().getIntProperty(LS_CONSOLE_WARNING_COLOR);
309     console.setWarningColor(new Color(c));
310    
311     c = preferences().getIntProperty(LS_CONSOLE_ERROR_COLOR);
312     console.setErrorColor(new Color(c));
313     }
314     }

  ViewVC Help
Powered by ViewVC