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

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

  ViewVC Help
Powered by ViewVC