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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1285 - (hide annotations) (download)
Fri Aug 10 19:55:03 2007 UTC (16 years, 8 months ago) by iliev
File size: 24748 byte(s)
* Updated to version 0.6a. The Fantasia distribution is now
  capable of controlling all features available in LinuxSampler

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.BorderLayout;
26     import java.awt.Dimension;
27    
28     import java.awt.event.ActionEvent;
29     import java.awt.event.ActionListener;
30     import java.awt.event.ItemEvent;
31     import java.awt.event.ItemListener;
32     import java.awt.event.KeyEvent;
33     import java.awt.event.WindowAdapter;
34     import java.awt.event.WindowEvent;
35    
36     import java.util.logging.Level;
37    
38     import javax.swing.AbstractAction;
39     import javax.swing.Action;
40     import javax.swing.BorderFactory;
41     import javax.swing.BoxLayout;
42 iliev 1285 import javax.swing.Icon;
43 iliev 1205 import javax.swing.JCheckBox;
44     import javax.swing.JComponent;
45     import javax.swing.JFrame;
46     import javax.swing.JMenu;
47     import javax.swing.JMenuBar;
48     import javax.swing.JMenuItem;
49     import javax.swing.JPanel;
50     import javax.swing.JScrollPane;
51     import javax.swing.JSplitPane;
52     import javax.swing.JTextField;
53     import javax.swing.JToggleButton;
54     import javax.swing.JToolBar;
55     import javax.swing.KeyStroke;
56    
57     import javax.swing.event.ListSelectionEvent;
58     import javax.swing.event.ListSelectionListener;
59     import javax.swing.event.TreeSelectionEvent;
60     import javax.swing.event.TreeSelectionListener;
61    
62     import javax.swing.plaf.ToolBarUI;
63    
64     import net.sf.juife.InformationDialog;
65     import net.sf.juife.NavigationPage;
66     import net.sf.juife.NavigationPane;
67    
68     import net.sf.juife.DefaultNavigationHistoryModel;
69     import net.sf.juife.Task;
70    
71     import net.sf.juife.event.TaskEvent;
72     import net.sf.juife.event.TaskListener;
73    
74     import org.jsampler.CC;
75     import org.jsampler.HF;
76     import org.jsampler.Instrument;
77     import org.jsampler.JSI18n;
78    
79     import org.jsampler.task.InstrumentsDb;
80    
81     import org.jsampler.view.DbDirectoryTreeNode;
82     import org.jsampler.view.InstrumentsDbTableModel;
83 iliev 1285 import org.jsampler.view.InstrumentsDbTableView;
84     import org.jsampler.view.std.JSInstrumentsDbTable;
85     import org.jsampler.view.std.JSInstrumentsDbTree;
86 iliev 1205
87     import org.linuxsampler.lscp.DbDirectoryInfo;
88     import org.linuxsampler.lscp.DbInstrumentInfo;
89     import org.linuxsampler.lscp.DbSearchQuery;
90    
91     import static org.jsampler.view.classic.ClassicI18n.i18n;
92 iliev 1285 import static org.jsampler.view.classic.ClassicPrefs.preferences;
93 iliev 1205
94     /**
95     *
96     * @author Grigor Iliev
97     */
98     public class InstrumentsDbFrame extends JFrame {
99     private final JMenuBar menuBar = new JMenuBar();
100 iliev 1285 private final JSInstrumentsDbTree instrumentsDbTree;
101 iliev 1205 private final SidePane sidePane;
102     private final JSplitPane splitPane;
103     private final MainPane mainPane;
104    
105     private final GoUp goUp = new GoUp();
106     private final GoBack goBack = new GoBack();
107     private final GoForward goForward = new GoForward();
108    
109     private final NavigationHistoryModel navigationHistoryModel = new NavigationHistoryModel();
110    
111     private JMenu loadInstrumentMenu;
112     private JMenu addToMidiMapMenu;
113     private JMenu addToOrchestraMenu;
114    
115     /**
116     * Creates a new instance of <code>InstrumentsDbFrame</code>
117     */
118     public
119     InstrumentsDbFrame() {
120     setTitle(i18n.getLabel("InstrumentsDbFrame.title"));
121     if(Res.appIcon != null) setIconImage(Res.appIcon.getImage());
122    
123 iliev 1285 instrumentsDbTree = new JSInstrumentsDbTree(CC.getInstrumentsDbTreeModel());
124 iliev 1205
125     sidePane = new SidePane();
126     mainPane = new MainPane();
127    
128     instrumentsDbTree.setSelectedDirectory("/");
129    
130     getContentPane().add(new ToolbarBar(), BorderLayout.NORTH);
131    
132     splitPane = new JSplitPane (
133     JSplitPane.HORIZONTAL_SPLIT,
134     true, // continuousLayout
135     sidePane,
136     mainPane
137     );
138    
139     splitPane.setDividerSize(3);
140     splitPane.setDividerLocation(200);
141    
142     addMenu();
143    
144     pack();
145     setSavedSize();
146    
147     getContentPane().add(splitPane);
148     mainPane.getInstrumentsTable().loadColumnWidths();
149    
150     addWindowListener(new WindowAdapter() {
151     public void
152     windowClosing(WindowEvent we) { onWindowClose(); }
153     });
154    
155     instrumentsDbTree.addTreeSelectionListener(goUp);
156     instrumentsDbTree.addTreeSelectionListener(navigationHistoryModel);
157     installKeyboardListeners();
158     }
159    
160     private void
161     addMenu() {
162     JMenu m;
163     JMenuItem mi;
164    
165     setJMenuBar(menuBar);
166    
167     // Actions
168     m = new JMenu(i18n.getMenuLabel("instrumentsdb.actions"));
169     menuBar.add(m);
170    
171     mi = new JMenuItem(mainPane.getInstrumentsTable().createDirectoryAction);
172     mi.setIcon(null);
173     m.add(mi);
174    
175     mi = new JMenuItem(mainPane.getInstrumentsTable().deleteAction);
176     mi.setIcon(null);
177     mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0));
178     m.add(mi);
179    
180     JMenu addInstrumentsMenu =
181     new JMenu(i18n.getMenuLabel("instrumentsdb.actions.addInstruments"));
182     m.add(addInstrumentsMenu);
183    
184     mi = new JMenuItem(mainPane.getInstrumentsTable().addInstrumentsFromFileAction);
185     mi.setIcon(null);
186     addInstrumentsMenu.add(mi);
187    
188     mi = new JMenuItem(mainPane.getInstrumentsTable().addInstrumentsFromDirAction);
189     mi.setIcon(null);
190     addInstrumentsMenu.add(mi);
191    
192     m.addSeparator();
193    
194     loadInstrumentMenu =
195     new JMenu(i18n.getMenuLabel("instrumentsdb.actions.loadInstrument"));
196     m.add(loadInstrumentMenu);
197     mainPane.getInstrumentsTable().registerLoadInstrumentMenus(loadInstrumentMenu);
198    
199     addToMidiMapMenu =
200     new JMenu(i18n.getMenuLabel("instrumentsdb.actions.addToMidiMap"));
201     m.add(addToMidiMapMenu);
202     mainPane.getInstrumentsTable().registerAddToMidiMapMenu(addToMidiMapMenu);
203    
204     addToOrchestraMenu =
205     new JMenu(i18n.getMenuLabel("instrumentsdb.actions.addToOrchestra"));
206     m.add(addToOrchestraMenu);
207     mainPane.getInstrumentsTable().registerAddToOrchestraMenu(addToOrchestraMenu);
208    
209     m.addSeparator();
210    
211     mi = new JMenuItem(mainPane.getInstrumentsTable().reloadAction);
212     mi.setIcon(null);
213     mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0));
214     m.add(mi);
215    
216     m.addSeparator();
217    
218     mi = new JMenuItem(mainPane.getInstrumentsTable().propertiesAction);
219     mi.setIcon(null);
220     mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, KeyEvent.ALT_MASK));
221     m.add(mi);
222    
223     m = new JMenu(i18n.getMenuLabel("instrumentsdb.edit"));
224     menuBar.add(m);
225    
226     mi = new JMenuItem(mainPane.getInstrumentsTable().cutAction);
227     mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_MASK));
228     mi.setIcon(null);
229     m.add(mi);
230    
231     mi = new JMenuItem(mainPane.getInstrumentsTable().copyAction);
232     mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_MASK));
233     mi.setIcon(null);
234     m.add(mi);
235    
236     mi = new JMenuItem(mainPane.getInstrumentsTable().pasteAction);
237     mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.CTRL_MASK));
238     mi.setIcon(null);
239     m.add(mi);
240    
241     m.addSeparator();
242    
243     mi = new JMenuItem(mainPane.getInstrumentsTable().renameAction);
244     mi.setIcon(null);
245     m.add(mi);
246    
247     mi = new JMenuItem(mainPane.getInstrumentsTable().changeDescriptionAction);
248     mi.setIcon(null);
249     m.add(mi);
250    
251     m = new JMenu(i18n.getMenuLabel("instrumentsdb.go"));
252     menuBar.add(m);
253    
254     mi = new JMenuItem(goUp);
255     mi.setIcon(null);
256     mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_UP, KeyEvent.ALT_MASK));
257     m.add(mi);
258    
259     mi = new JMenuItem(goBack);
260     mi.setIcon(null);
261     mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, KeyEvent.ALT_MASK));
262     m.add(mi);
263    
264     mi = new JMenuItem(goForward);
265     mi.setIcon(null);
266     mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, KeyEvent.ALT_MASK));
267     m.add(mi);
268     }
269    
270     private void
271     installKeyboardListeners() {
272     getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put (
273     KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0),
274     "goUp"
275     );
276    
277     getRootPane().getActionMap().put ("goUp", new AbstractAction() {
278     public void
279     actionPerformed(ActionEvent e) {
280     if(!goUp.isEnabled()) return;
281     goUp.actionPerformed(null);
282     }
283     });
284     }
285    
286     /** Invoked when this window is about to close. */
287     private void
288     onWindowClose() {
289     boolean b = (getExtendedState() & MAXIMIZED_BOTH) == MAXIMIZED_BOTH;
290     ClassicPrefs.setWindowMaximized("InstrumentsDbFrame", b);
291     if(b) return;
292    
293     java.awt.Point p = getLocation();
294     Dimension d = getSize();
295     StringBuffer sb = new StringBuffer();
296     sb.append(p.x).append(',').append(p.y).append(',');
297     sb.append(d.width).append(',').append(d.height);
298     ClassicPrefs.setWindowSizeAndLocation("InstrumentsDbFrame", sb.toString());
299     int i = splitPane.getDividerLocation();
300 iliev 1285 preferences().setIntProperty("InstrumentsDbFrame.dividerLocation", i);
301 iliev 1205
302     mainPane.getInstrumentsTable().saveColumnsVisibleState();
303     mainPane.getInstrumentsTable().saveColumnWidths();
304     }
305    
306     private void
307     setDefaultSize() {
308     Dimension dimension = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
309     double width = dimension.getWidth();
310     double height = dimension.getHeight();
311     setBounds(100, 100, (int) width - 200, (int) height - 200);
312     }
313    
314     private void
315     setSavedSize() {
316     String s = ClassicPrefs.getWindowSizeAndLocation("InstrumentsDbFrame");
317     if(s == null) {
318     setDefaultSize();
319     return;
320     }
321    
322     try {
323     int i = s.indexOf(',');
324     int x = Integer.parseInt(s.substring(0, i));
325    
326     s = s.substring(i + 1);
327     i = s.indexOf(',');
328     int y = Integer.parseInt(s.substring(0, i));
329    
330     s = s.substring(i + 1);
331     i = s.indexOf(',');
332     int width = Integer.parseInt(s.substring(0, i));
333    
334     s = s.substring(i + 1);
335     int height = Integer.parseInt(s);
336    
337     setBounds(x, y, width, height);
338    
339 iliev 1285 i = preferences().getIntProperty("InstrumentsDbFrame.dividerLocation");
340 iliev 1205 if(i != 0) splitPane.setDividerLocation(i);
341    
342     } catch(Exception x) {
343     String msg = "Parsing of window size and location string failed";
344     CC.getLogger().log(Level.INFO, msg, x);
345     setDefaultSize();
346     }
347    
348     if(ClassicPrefs.getWindowMaximized("InstrumentsDbFrame"))
349     setExtendedState(getExtendedState() | MAXIMIZED_BOTH);
350     }
351    
352     private void
353     addSidePane() {
354     getContentPane().remove(mainPane);
355     splitPane.setRightComponent(mainPane);
356     getContentPane().add(splitPane);
357 iliev 1285 int i = preferences().getIntProperty("InstrumentsDbFrame.dividerLocation");
358 iliev 1205 if(i != 0) splitPane.setDividerLocation(i);
359     }
360    
361     private void
362     removeSidePane() {
363     int i = splitPane.getDividerLocation();
364 iliev 1285 preferences().setIntProperty("InstrumentsDbFrame.dividerLocation", i);
365 iliev 1205 getContentPane().remove(splitPane);
366     getContentPane().add(mainPane);
367     }
368    
369     private class GoUp extends AbstractAction implements TreeSelectionListener {
370     GoUp() {
371     super(i18n.getMenuLabel("instrumentsdb.go.up"));
372    
373     String s = i18n.getMenuLabel("instrumentsdb.go.up.tt");
374     putValue(SHORT_DESCRIPTION, s);
375     putValue(Action.SMALL_ICON, Res.iconGoUp22);
376     setEnabled(false);
377     }
378    
379     public void
380     actionPerformed(ActionEvent e) {
381     DbDirectoryTreeNode node = instrumentsDbTree.getSelectedDirectoryNode();
382     if(node == null) return;
383     instrumentsDbTree.setSelectedDirectoryNode(node.getParent());
384     }
385    
386     public void
387     valueChanged(TreeSelectionEvent e) {
388     DbDirectoryTreeNode n = instrumentsDbTree.getSelectedDirectoryNode();
389     if(n == null) {
390     setEnabled(false);
391     return;
392     }
393    
394     setEnabled(n.getParent() != null);
395     }
396     }
397    
398     private class GoBack extends AbstractAction {
399     GoBack() {
400     super(i18n.getMenuLabel("instrumentsdb.go.back"));
401    
402     String s = i18n.getMenuLabel("instrumentsdb.go.back.tt");
403     putValue(SHORT_DESCRIPTION, s);
404     putValue(Action.SMALL_ICON, Res.iconGoBack22);
405     setEnabled(false);
406     }
407    
408     public void
409     actionPerformed(ActionEvent e) {
410     navigationHistoryModel.goBack();
411     }
412     }
413    
414     private class GoForward extends AbstractAction {
415     GoForward() {
416     super(i18n.getMenuLabel("instrumentsdb.go.forward"));
417    
418     String s = i18n.getMenuLabel("instrumentsdb.go.forward.tt");
419     putValue(SHORT_DESCRIPTION, s);
420     putValue(Action.SMALL_ICON, Res.iconGoForward22);
421     setEnabled(false);
422     }
423    
424     public void
425     actionPerformed(ActionEvent e) {
426     navigationHistoryModel.goForward();
427     }
428     }
429    
430     class ToolbarBar extends JToolBar {
431     private final ToggleButton btnFolders = new ToggleButton();
432     private final ToggleButton btnFind = new ToggleButton();
433    
434     private final ToolbarButton btnGoUp = new ToolbarButton(goUp);
435     private final ToolbarButton btnGoBack = new ToolbarButton(goBack);
436     private final ToolbarButton btnGoForward = new ToolbarButton(goForward);
437     private final ToolbarButton btnReload =
438     new ToolbarButton(mainPane.getInstrumentsTable().reloadAction);
439    
440     private final ToolbarButton btnPreferences = new ToolbarButton();
441    
442     public ToolbarBar() {
443     super(i18n.getLabel("InstrumentsDbFrame.ToolbarBar.name"));
444     setFloatable(false);
445    
446     btnFolders.setIcon(Res.iconFolderOpen22);
447     btnFolders.doClick(0);
448     btnFind.setIcon(Res.iconFind22);
449     btnPreferences.setIcon(Res.iconPreferences22);
450    
451     add(btnFolders);
452     add(btnFind);
453     addSeparator();
454     add(btnGoBack);
455     add(btnGoForward);
456     add(btnGoUp);
457     add(btnReload);
458     addSeparator();
459     add(btnPreferences);
460    
461    
462     btnFolders.addActionListener(new ActionListener() {
463     public void
464     actionPerformed(ActionEvent e) {
465     if(!btnFolders.isSelected() && !btnFind.isSelected()) {
466     removeSidePane();
467     }
468    
469     if(!btnFolders.isSelected()) return;
470    
471     if(btnFind.isSelected()) btnFind.doClick(0);
472     else addSidePane();
473    
474     sidePane.showFoldersPage();
475     }
476     });
477    
478     btnFind.addActionListener(new ActionListener() {
479     public void
480     actionPerformed(ActionEvent e) {
481     if(!btnFolders.isSelected() && !btnFind.isSelected()) {
482     removeSidePane();
483     }
484    
485     if(!btnFind.isSelected()) return;
486    
487     if(btnFolders.isSelected()) btnFolders.doClick(0);
488     else addSidePane();
489    
490     sidePane.showSearchPage();
491     }
492     });
493    
494     btnPreferences.addActionListener(new ActionListener() {
495     public void
496     actionPerformed(ActionEvent e) {
497     new PreferencesDlg().setVisible(true);
498     }
499     });
500     }
501     }
502    
503     class ToggleButton extends JToggleButton {
504     ToggleButton() {
505     setBorderPainted(false);
506     setContentAreaFilled(false);
507     setFocusPainted(false);
508    
509     addActionListener(new ActionListener() {
510     public void
511     actionPerformed(ActionEvent e) {
512     setBorderPainted(isSelected());
513     }
514     });
515     }
516     }
517    
518     private class NavigationHistoryModel
519     extends DefaultNavigationHistoryModel<DbDirectoryTreeNode>
520     implements TreeSelectionListener, ActionListener {
521    
522     private boolean lock = false;
523    
524     NavigationHistoryModel() {
525     addActionListener(this);
526     }
527    
528     public DbDirectoryTreeNode
529     goBack() {
530     lock = true;
531     DbDirectoryTreeNode node = selectDirectory(super.goBack());
532     lock = false;
533     return node;
534     }
535    
536     public DbDirectoryTreeNode
537     goForward() {
538     lock = true;
539     DbDirectoryTreeNode node = selectDirectory(super.goForward());
540     lock = false;
541     return node;
542     }
543    
544     private DbDirectoryTreeNode
545     selectDirectory(DbDirectoryTreeNode node) {
546     if(node == null) return null;
547    
548     if(node == mainPane.getSearchResultsNode()) {
549     mainPane.showSearchResultsNode();
550     return node;
551     }
552    
553     String path = node.getInfo().getDirectoryPath();
554     if(CC.getInstrumentsDbTreeModel().getNodeByPath(path) != null) {
555     getInstrumentsDbTree().setSelectedDirectory(path);
556     return node;
557     }
558    
559     removePage();
560     fireActionPerformed();
561     String s = i18n.getMessage("InstrumentsDbFrame.unknownDirectory!", path);
562     HF.showErrorMessage(s, InstrumentsDbFrame.this);
563     return node;
564     }
565    
566     public void
567     addPage(DbDirectoryTreeNode node) {
568     if(lock) return;
569     if(node == null) return;
570     super.addPage(node);
571     }
572    
573     public void
574     valueChanged(TreeSelectionEvent e) {
575     addPage(instrumentsDbTree.getSelectedDirectoryNode());
576     }
577    
578     public void
579     actionPerformed(ActionEvent e) {
580     goBack.setEnabled(hasBack());
581     goForward.setEnabled(hasForward());
582     }
583     }
584    
585 iliev 1285 public JSInstrumentsDbTree
586 iliev 1205 getInstrumentsDbTree() { return instrumentsDbTree; }
587    
588     public void
589     setSearchResults(DbDirectoryInfo[] directories) {
590     setSearchResults(directories, null);
591     }
592    
593     public void
594     setSearchResults(DbInstrumentInfo[] instruments) {
595     setSearchResults(null, instruments);
596     }
597    
598     public void
599     setSearchResults(DbDirectoryInfo[] directories, DbInstrumentInfo[] instruments) {
600     DbDirectoryTreeNode node = mainPane.getSearchResultsNode();
601     node.removeAllDirectories();
602     node.removeAllInstruments();
603    
604     if(instruments != null) {
605     for(DbInstrumentInfo i : instruments) i.setShowAbsolutePath(true);
606     node.addInstruments(instruments);
607     }
608    
609     if(directories != null) {
610     DbDirectoryTreeNode[] nodeS = new DbDirectoryTreeNode[directories.length];
611     for(int i = 0; i < directories.length; i++) {
612     DbDirectoryInfo d = directories[i];
613     d.setShowAbsolutePath(true);
614     nodeS[i] = new DbDirectoryTreeNode(d);
615    
616    
617     }
618     node.addDirectories(nodeS);
619     }
620    
621     mainPane.showSearchResultsNode();
622     }
623    
624     class MainPane extends JPanel {
625 iliev 1285 private final JSInstrumentsDbTable instrumentsTable =
626     new JSInstrumentsDbTable(instrumentsDbTree);
627 iliev 1205
628     private final DbDirectoryTreeNode searchResultsNode = new DbDirectoryTreeNode(null);
629    
630     MainPane() {
631     setLayout(new BorderLayout());
632     JScrollPane sp = new JScrollPane(instrumentsTable);
633     add(sp);
634 iliev 1285 instrumentsTable.reloadAction.putValue(Action.SMALL_ICON, Res.iconReload22);
635    
636     instrumentsTable.createDirectoryAction.putValue (
637     Action.SMALL_ICON, Res.iconNew16
638     );
639    
640 iliev 1205 instrumentsTable.getParent().setBackground(instrumentsTable.getBackground());
641     instrumentsTable.getRowSorter().toggleSortOrder(0);
642     searchResultsNode.setDetached(true);
643     }
644    
645 iliev 1285 public JSInstrumentsDbTable
646 iliev 1205 getInstrumentsTable() { return instrumentsTable; }
647    
648     public DbDirectoryTreeNode
649     getSearchResultsNode() { return searchResultsNode; }
650    
651     public void
652     showSearchResultsNode() {
653     instrumentsDbTree.clearSelection();
654     instrumentsTable.setParentDirectoryNode(searchResultsNode);
655     navigationHistoryModel.addPage(searchResultsNode);
656     }
657     }
658    
659    
660     class SidePane extends NavigationPane {
661     private final NavigationPage foldersPage = new NavigationPage();
662     private final DbSearchPage searchPage = new DbSearchPage(InstrumentsDbFrame.this);
663    
664     SidePane() {
665     setTitlebarVisiblie(false);
666    
667     foldersPage.setTitle(i18n.getLabel("InstrumentsDbFrame.folders"));
668     foldersPage.setLayout(new BorderLayout());
669     foldersPage.add(new JScrollPane(instrumentsDbTree));
670    
671     NavigationPage[] pages = { foldersPage, searchPage };
672     setPages(pages);
673     showFoldersPage();
674     }
675    
676     /** Shows the folders page in the left pane. */
677     public void
678     showFoldersPage() { getModel().addPage(foldersPage); }
679    
680     /** Shows the search page in the left pane. */
681     public void
682     showSearchPage() { getModel().addPage(searchPage); }
683     }
684    
685     private final EventHandler eventHandler = new EventHandler();
686    
687     private EventHandler
688     getHandler() { return eventHandler; }
689    
690     private class EventHandler implements ListSelectionListener {
691     public void
692     valueChanged(ListSelectionEvent e) {
693    
694     }
695     }
696    
697     class PreferencesDlg extends InformationDialog implements ItemListener {
698     private final JCheckBox checkShowSizeColumn =
699     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.SIZE"));
700    
701     private final JCheckBox checkShowFormatFamilyColumn =
702     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.FORMAT_FAMILY"));
703    
704     private final JCheckBox checkShowFormatVersionColumn =
705     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.FORMAT_VERSION"));
706    
707     private final JCheckBox checkShowIsDrumColumn =
708     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.IS_DRUM"));
709    
710     private final JCheckBox checkShowCreatedColumn =
711     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.CREATED"));
712    
713     private final JCheckBox checkShowModifiedColumn =
714     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.MODIFIED"));
715    
716     private final JCheckBox checkShowProductColumn =
717     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.PRODUCT"));
718    
719     private final JCheckBox checkShowArtistsColumn =
720     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.ARTISTS"));
721    
722     private final JCheckBox checkShowInstrumentFileColumn
723     = new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.INSTRUMENT_FILE"));
724    
725     private final JCheckBox checkShowInstrumentNrColumn =
726     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.INSTRUMENT_NR"));
727    
728     private final JCheckBox checkShowKeywordsColumn =
729     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.KEYWORDS"));
730    
731     PreferencesDlg() {
732     super(InstrumentsDbFrame.this);
733     InstrumentsDbTableModel m = mainPane.instrumentsTable.getModel();
734    
735     checkShowSizeColumn.setSelected(m.getShowSizeColumn());
736     checkShowFormatFamilyColumn.setSelected(m.getShowFormatFamilyColumn());
737     checkShowFormatVersionColumn.setSelected(m.getShowFormatVersionColumn());
738     checkShowIsDrumColumn.setSelected(m.getShowIsDrumColumn());
739     checkShowCreatedColumn.setSelected(m.getShowCreatedColumn());
740     checkShowModifiedColumn.setSelected(m.getShowModifiedColumn());
741     checkShowProductColumn.setSelected(m.getShowProductColumn());
742     checkShowArtistsColumn.setSelected(m.getShowArtistsColumn());
743     checkShowInstrumentFileColumn.setSelected(m.getShowInstrumentFileColumn());
744     checkShowInstrumentNrColumn.setSelected(m.getShowInstrumentNrColumn());
745     checkShowKeywordsColumn.setSelected(m.getShowKeywordsColumn());
746    
747     checkShowSizeColumn.addItemListener(this);
748     checkShowFormatFamilyColumn.addItemListener(this);
749     checkShowFormatVersionColumn.addItemListener(this);
750     checkShowIsDrumColumn.addItemListener(this);
751     checkShowCreatedColumn.addItemListener(this);
752     checkShowModifiedColumn.addItemListener(this);
753     checkShowProductColumn.addItemListener(this);
754     checkShowArtistsColumn.addItemListener(this);
755     checkShowInstrumentFileColumn.addItemListener(this);
756     checkShowInstrumentNrColumn.addItemListener(this);
757     checkShowKeywordsColumn.addItemListener(this);
758    
759     JPanel p = new JPanel();
760     p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
761     p.add(checkShowSizeColumn);
762     p.add(checkShowFormatFamilyColumn);
763     p.add(checkShowFormatVersionColumn);
764     p.add(checkShowIsDrumColumn);
765     p.add(checkShowCreatedColumn);
766     p.add(checkShowModifiedColumn);
767     p.add(checkShowProductColumn);
768     p.add(checkShowArtistsColumn);
769     p.add(checkShowInstrumentFileColumn);
770     p.add(checkShowInstrumentNrColumn);
771     p.add(checkShowKeywordsColumn);
772     String s = i18n.getLabel("InstrumentsDbFrame.columns");
773     p.setBorder(BorderFactory.createTitledBorder(s));
774    
775     setMainPane(p);
776     }
777    
778     public void
779     itemStateChanged(ItemEvent e) {
780     mainPane.getInstrumentsTable().saveColumnWidths();
781    
782     InstrumentsDbTableModel m = mainPane.instrumentsTable.getModel();
783    
784     Object source = e.getItemSelectable();
785     if(source == checkShowSizeColumn) {
786     m.setShowSizeColumn(checkShowSizeColumn.isSelected());
787     } else if(source == checkShowFormatFamilyColumn) {
788     boolean b = checkShowFormatFamilyColumn.isSelected();
789     m.setShowFormatFamilyColumn(b);
790     } else if(source == checkShowFormatVersionColumn) {
791     boolean b = checkShowFormatVersionColumn.isSelected();
792     m.setShowFormatVersionColumn(b);
793     } else if(source == checkShowIsDrumColumn) {
794     m.setShowIsDrumColumn(checkShowIsDrumColumn.isSelected());
795     } else if(source == checkShowCreatedColumn) {
796     m.setShowCreatedColumn(checkShowCreatedColumn.isSelected());
797     } else if(source == checkShowModifiedColumn) {
798     m.setShowModifiedColumn(checkShowModifiedColumn.isSelected());
799     } else if(source == checkShowProductColumn) {
800     m.setShowProductColumn(checkShowProductColumn.isSelected());
801     } else if(source == checkShowArtistsColumn) {
802     m.setShowArtistsColumn(checkShowArtistsColumn.isSelected());
803     } else if(source == checkShowInstrumentFileColumn) {
804     boolean b = checkShowInstrumentFileColumn.isSelected();
805     m.setShowInstrumentFileColumn(b);
806     } else if(source == checkShowInstrumentNrColumn) {
807     boolean b = checkShowInstrumentNrColumn.isSelected();
808     m.setShowInstrumentNrColumn(b);
809     } else if(source == checkShowKeywordsColumn) {
810     m.setShowKeywordsColumn(checkShowKeywordsColumn.isSelected());
811     }
812    
813     mainPane.getInstrumentsTable().loadColumnWidths();
814     mainPane.getInstrumentsTable().getRowSorter().toggleSortOrder(0);
815     }
816     }
817     }

  ViewVC Help
Powered by ViewVC