/[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 1540 - (hide annotations) (download)
Mon Dec 3 23:22:02 2007 UTC (16 years, 4 months ago) by iliev
File size: 25125 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 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.JSI18n;
77    
78     import org.jsampler.task.InstrumentsDb;
79    
80     import org.jsampler.view.DbDirectoryTreeNode;
81     import org.jsampler.view.InstrumentsDbTableModel;
82 iliev 1285 import org.jsampler.view.InstrumentsDbTableView;
83     import org.jsampler.view.std.JSInstrumentsDbTable;
84     import org.jsampler.view.std.JSInstrumentsDbTree;
85 iliev 1205
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.classic.ClassicI18n.i18n;
91 iliev 1285 import static org.jsampler.view.classic.ClassicPrefs.preferences;
92 iliev 1205
93     /**
94     *
95     * @author Grigor Iliev
96     */
97     public class InstrumentsDbFrame extends JFrame {
98     private final JMenuBar menuBar = new JMenuBar();
99 iliev 1285 private final JSInstrumentsDbTree instrumentsDbTree;
100 iliev 1205 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.appIcon != null) setIconImage(Res.appIcon.getImage());
121    
122 iliev 1285 instrumentsDbTree = new JSInstrumentsDbTree(CC.getInstrumentsDbTreeModel());
123 iliev 1205
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 1205 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     ClassicPrefs.setWindowMaximized("InstrumentsDbFrame", 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     ClassicPrefs.setWindowSizeAndLocation("InstrumentsDbFrame", sb.toString());
311     int i = splitPane.getDividerLocation();
312 iliev 1285 preferences().setIntProperty("InstrumentsDbFrame.dividerLocation", i);
313 iliev 1205
314     mainPane.getInstrumentsTable().saveColumnsVisibleState();
315     mainPane.getInstrumentsTable().saveColumnWidths();
316     }
317    
318     private void
319     setDefaultSize() {
320     Dimension dimension = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
321     double width = dimension.getWidth();
322     double height = dimension.getHeight();
323     setBounds(100, 100, (int) width - 200, (int) height - 200);
324     }
325    
326     private void
327     setSavedSize() {
328     String s = ClassicPrefs.getWindowSizeAndLocation("InstrumentsDbFrame");
329     if(s == null) {
330     setDefaultSize();
331     return;
332     }
333    
334     try {
335     int i = s.indexOf(',');
336     int x = Integer.parseInt(s.substring(0, i));
337    
338     s = s.substring(i + 1);
339     i = s.indexOf(',');
340     int y = Integer.parseInt(s.substring(0, i));
341    
342     s = s.substring(i + 1);
343     i = s.indexOf(',');
344     int width = Integer.parseInt(s.substring(0, i));
345    
346     s = s.substring(i + 1);
347     int height = Integer.parseInt(s);
348    
349     setBounds(x, y, width, height);
350    
351 iliev 1285 i = preferences().getIntProperty("InstrumentsDbFrame.dividerLocation");
352 iliev 1205 if(i != 0) splitPane.setDividerLocation(i);
353    
354     } catch(Exception x) {
355     String msg = "Parsing of window size and location string failed";
356     CC.getLogger().log(Level.INFO, msg, x);
357     setDefaultSize();
358     }
359    
360     if(ClassicPrefs.getWindowMaximized("InstrumentsDbFrame"))
361     setExtendedState(getExtendedState() | MAXIMIZED_BOTH);
362     }
363    
364     private void
365     addSidePane() {
366     getContentPane().remove(mainPane);
367     splitPane.setRightComponent(mainPane);
368     getContentPane().add(splitPane);
369 iliev 1285 int i = preferences().getIntProperty("InstrumentsDbFrame.dividerLocation");
370 iliev 1205 if(i != 0) splitPane.setDividerLocation(i);
371     }
372    
373     private void
374     removeSidePane() {
375     int i = splitPane.getDividerLocation();
376 iliev 1285 preferences().setIntProperty("InstrumentsDbFrame.dividerLocation", i);
377 iliev 1205 getContentPane().remove(splitPane);
378     getContentPane().add(mainPane);
379     }
380    
381     private class GoUp extends AbstractAction implements TreeSelectionListener {
382     GoUp() {
383     super(i18n.getMenuLabel("instrumentsdb.go.up"));
384    
385     String s = i18n.getMenuLabel("instrumentsdb.go.up.tt");
386     putValue(SHORT_DESCRIPTION, s);
387     putValue(Action.SMALL_ICON, Res.iconGoUp22);
388     setEnabled(false);
389     }
390    
391     public void
392     actionPerformed(ActionEvent e) {
393     DbDirectoryTreeNode node = instrumentsDbTree.getSelectedDirectoryNode();
394     if(node == null) return;
395     instrumentsDbTree.setSelectedDirectoryNode(node.getParent());
396     }
397    
398     public void
399     valueChanged(TreeSelectionEvent e) {
400     DbDirectoryTreeNode n = instrumentsDbTree.getSelectedDirectoryNode();
401     if(n == null) {
402     setEnabled(false);
403     return;
404     }
405    
406     setEnabled(n.getParent() != null);
407     }
408     }
409    
410     private class GoBack extends AbstractAction {
411     GoBack() {
412     super(i18n.getMenuLabel("instrumentsdb.go.back"));
413    
414     String s = i18n.getMenuLabel("instrumentsdb.go.back.tt");
415     putValue(SHORT_DESCRIPTION, s);
416     putValue(Action.SMALL_ICON, Res.iconGoBack22);
417     setEnabled(false);
418     }
419    
420     public void
421     actionPerformed(ActionEvent e) {
422     navigationHistoryModel.goBack();
423     }
424     }
425    
426     private class GoForward extends AbstractAction {
427     GoForward() {
428     super(i18n.getMenuLabel("instrumentsdb.go.forward"));
429    
430     String s = i18n.getMenuLabel("instrumentsdb.go.forward.tt");
431     putValue(SHORT_DESCRIPTION, s);
432     putValue(Action.SMALL_ICON, Res.iconGoForward22);
433     setEnabled(false);
434     }
435    
436     public void
437     actionPerformed(ActionEvent e) {
438     navigationHistoryModel.goForward();
439     }
440     }
441    
442     class ToolbarBar extends JToolBar {
443     private final ToggleButton btnFolders = new ToggleButton();
444     private final ToggleButton btnFind = new ToggleButton();
445    
446     private final ToolbarButton btnGoUp = new ToolbarButton(goUp);
447     private final ToolbarButton btnGoBack = new ToolbarButton(goBack);
448     private final ToolbarButton btnGoForward = new ToolbarButton(goForward);
449     private final ToolbarButton btnReload =
450     new ToolbarButton(mainPane.getInstrumentsTable().reloadAction);
451    
452     private final ToolbarButton btnPreferences = new ToolbarButton();
453    
454     public ToolbarBar() {
455     super(i18n.getLabel("InstrumentsDbFrame.ToolbarBar.name"));
456     setFloatable(false);
457    
458     btnFolders.setIcon(Res.iconFolderOpen22);
459     btnFolders.doClick(0);
460     btnFind.setIcon(Res.iconFind22);
461     btnPreferences.setIcon(Res.iconPreferences22);
462    
463     add(btnFolders);
464     add(btnFind);
465     addSeparator();
466     add(btnGoBack);
467     add(btnGoForward);
468     add(btnGoUp);
469     add(btnReload);
470     addSeparator();
471     add(btnPreferences);
472    
473    
474     btnFolders.addActionListener(new ActionListener() {
475     public void
476     actionPerformed(ActionEvent e) {
477     if(!btnFolders.isSelected() && !btnFind.isSelected()) {
478     removeSidePane();
479     }
480    
481     if(!btnFolders.isSelected()) return;
482    
483     if(btnFind.isSelected()) btnFind.doClick(0);
484     else addSidePane();
485    
486     sidePane.showFoldersPage();
487     }
488     });
489    
490     btnFind.addActionListener(new ActionListener() {
491     public void
492     actionPerformed(ActionEvent e) {
493     if(!btnFolders.isSelected() && !btnFind.isSelected()) {
494     removeSidePane();
495     }
496    
497     if(!btnFind.isSelected()) return;
498    
499     if(btnFolders.isSelected()) btnFolders.doClick(0);
500     else addSidePane();
501    
502     sidePane.showSearchPage();
503     }
504     });
505    
506     btnPreferences.addActionListener(new ActionListener() {
507     public void
508     actionPerformed(ActionEvent e) {
509     new PreferencesDlg().setVisible(true);
510     }
511     });
512     }
513     }
514    
515     class ToggleButton extends JToggleButton {
516     ToggleButton() {
517     setBorderPainted(false);
518     setContentAreaFilled(false);
519     setFocusPainted(false);
520    
521     addActionListener(new ActionListener() {
522     public void
523     actionPerformed(ActionEvent e) {
524     setBorderPainted(isSelected());
525     }
526     });
527     }
528     }
529    
530     private class NavigationHistoryModel
531     extends DefaultNavigationHistoryModel<DbDirectoryTreeNode>
532     implements TreeSelectionListener, ActionListener {
533    
534     private boolean lock = false;
535    
536     NavigationHistoryModel() {
537     addActionListener(this);
538     }
539    
540     public DbDirectoryTreeNode
541     goBack() {
542     lock = true;
543     DbDirectoryTreeNode node = selectDirectory(super.goBack());
544     lock = false;
545     return node;
546     }
547    
548     public DbDirectoryTreeNode
549     goForward() {
550     lock = true;
551     DbDirectoryTreeNode node = selectDirectory(super.goForward());
552     lock = false;
553     return node;
554     }
555    
556     private DbDirectoryTreeNode
557     selectDirectory(DbDirectoryTreeNode node) {
558     if(node == null) return null;
559    
560     if(node == mainPane.getSearchResultsNode()) {
561     mainPane.showSearchResultsNode();
562     return node;
563     }
564    
565     String path = node.getInfo().getDirectoryPath();
566     if(CC.getInstrumentsDbTreeModel().getNodeByPath(path) != null) {
567     getInstrumentsDbTree().setSelectedDirectory(path);
568     return node;
569     }
570    
571     removePage();
572     fireActionPerformed();
573     String s = i18n.getMessage("InstrumentsDbFrame.unknownDirectory!", path);
574     HF.showErrorMessage(s, InstrumentsDbFrame.this);
575     return node;
576     }
577    
578     public void
579     addPage(DbDirectoryTreeNode node) {
580     if(lock) return;
581     if(node == null) return;
582     super.addPage(node);
583     }
584    
585     public void
586     valueChanged(TreeSelectionEvent e) {
587     addPage(instrumentsDbTree.getSelectedDirectoryNode());
588     }
589    
590     public void
591     actionPerformed(ActionEvent e) {
592     goBack.setEnabled(hasBack());
593     goForward.setEnabled(hasForward());
594     }
595     }
596    
597 iliev 1285 public JSInstrumentsDbTree
598 iliev 1205 getInstrumentsDbTree() { return instrumentsDbTree; }
599    
600     public void
601     setSearchResults(DbDirectoryInfo[] directories) {
602     setSearchResults(directories, null);
603     }
604    
605     public void
606     setSearchResults(DbInstrumentInfo[] instruments) {
607     setSearchResults(null, instruments);
608     }
609    
610     public void
611     setSearchResults(DbDirectoryInfo[] directories, DbInstrumentInfo[] instruments) {
612     DbDirectoryTreeNode node = mainPane.getSearchResultsNode();
613     node.removeAllDirectories();
614     node.removeAllInstruments();
615    
616     if(instruments != null) {
617     for(DbInstrumentInfo i : instruments) i.setShowAbsolutePath(true);
618     node.addInstruments(instruments);
619     }
620    
621     if(directories != null) {
622     DbDirectoryTreeNode[] nodeS = new DbDirectoryTreeNode[directories.length];
623     for(int i = 0; i < directories.length; i++) {
624     DbDirectoryInfo d = directories[i];
625     d.setShowAbsolutePath(true);
626     nodeS[i] = new DbDirectoryTreeNode(d);
627    
628    
629     }
630     node.addDirectories(nodeS);
631     }
632    
633     mainPane.showSearchResultsNode();
634     }
635    
636     class MainPane extends JPanel {
637 iliev 1285 private final JSInstrumentsDbTable instrumentsTable =
638     new JSInstrumentsDbTable(instrumentsDbTree);
639 iliev 1205
640     private final DbDirectoryTreeNode searchResultsNode = new DbDirectoryTreeNode(null);
641    
642     MainPane() {
643     setLayout(new BorderLayout());
644     JScrollPane sp = new JScrollPane(instrumentsTable);
645     add(sp);
646 iliev 1285 instrumentsTable.reloadAction.putValue(Action.SMALL_ICON, Res.iconReload22);
647    
648     instrumentsTable.createDirectoryAction.putValue (
649     Action.SMALL_ICON, Res.iconNew16
650     );
651    
652 iliev 1205 instrumentsTable.getParent().setBackground(instrumentsTable.getBackground());
653     instrumentsTable.getRowSorter().toggleSortOrder(0);
654     searchResultsNode.setDetached(true);
655     }
656    
657 iliev 1285 public JSInstrumentsDbTable
658 iliev 1205 getInstrumentsTable() { return instrumentsTable; }
659    
660     public DbDirectoryTreeNode
661     getSearchResultsNode() { return searchResultsNode; }
662    
663     public void
664     showSearchResultsNode() {
665     instrumentsDbTree.clearSelection();
666     instrumentsTable.setParentDirectoryNode(searchResultsNode);
667     navigationHistoryModel.addPage(searchResultsNode);
668     }
669     }
670    
671    
672     class SidePane extends NavigationPane {
673     private final NavigationPage foldersPage = new NavigationPage();
674     private final DbSearchPage searchPage = new DbSearchPage(InstrumentsDbFrame.this);
675    
676     SidePane() {
677     setTitlebarVisiblie(false);
678    
679     foldersPage.setTitle(i18n.getLabel("InstrumentsDbFrame.folders"));
680     foldersPage.setLayout(new BorderLayout());
681     foldersPage.add(new JScrollPane(instrumentsDbTree));
682    
683     NavigationPage[] pages = { foldersPage, searchPage };
684     setPages(pages);
685     showFoldersPage();
686     }
687    
688     /** Shows the folders page in the left pane. */
689     public void
690     showFoldersPage() { getModel().addPage(foldersPage); }
691    
692     /** Shows the search page in the left pane. */
693     public void
694     showSearchPage() { getModel().addPage(searchPage); }
695     }
696    
697     private final EventHandler eventHandler = new EventHandler();
698    
699     private EventHandler
700     getHandler() { return eventHandler; }
701    
702     private class EventHandler implements ListSelectionListener {
703     public void
704     valueChanged(ListSelectionEvent e) {
705    
706     }
707     }
708    
709     class PreferencesDlg extends InformationDialog implements ItemListener {
710     private final JCheckBox checkShowSizeColumn =
711     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.SIZE"));
712    
713     private final JCheckBox checkShowFormatFamilyColumn =
714     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.FORMAT_FAMILY"));
715    
716     private final JCheckBox checkShowFormatVersionColumn =
717     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.FORMAT_VERSION"));
718    
719     private final JCheckBox checkShowIsDrumColumn =
720     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.IS_DRUM"));
721    
722     private final JCheckBox checkShowCreatedColumn =
723     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.CREATED"));
724    
725     private final JCheckBox checkShowModifiedColumn =
726     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.MODIFIED"));
727    
728     private final JCheckBox checkShowProductColumn =
729     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.PRODUCT"));
730    
731     private final JCheckBox checkShowArtistsColumn =
732     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.ARTISTS"));
733    
734     private final JCheckBox checkShowInstrumentFileColumn
735     = new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.INSTRUMENT_FILE"));
736    
737     private final JCheckBox checkShowInstrumentNrColumn =
738     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.INSTRUMENT_NR"));
739    
740     private final JCheckBox checkShowKeywordsColumn =
741     new JCheckBox(JSI18n.i18n.getLabel("InstrumentsDbTableModel.KEYWORDS"));
742    
743     PreferencesDlg() {
744     super(InstrumentsDbFrame.this);
745     InstrumentsDbTableModel m = mainPane.instrumentsTable.getModel();
746    
747     checkShowSizeColumn.setSelected(m.getShowSizeColumn());
748     checkShowFormatFamilyColumn.setSelected(m.getShowFormatFamilyColumn());
749     checkShowFormatVersionColumn.setSelected(m.getShowFormatVersionColumn());
750     checkShowIsDrumColumn.setSelected(m.getShowIsDrumColumn());
751     checkShowCreatedColumn.setSelected(m.getShowCreatedColumn());
752     checkShowModifiedColumn.setSelected(m.getShowModifiedColumn());
753     checkShowProductColumn.setSelected(m.getShowProductColumn());
754     checkShowArtistsColumn.setSelected(m.getShowArtistsColumn());
755     checkShowInstrumentFileColumn.setSelected(m.getShowInstrumentFileColumn());
756     checkShowInstrumentNrColumn.setSelected(m.getShowInstrumentNrColumn());
757     checkShowKeywordsColumn.setSelected(m.getShowKeywordsColumn());
758    
759     checkShowSizeColumn.addItemListener(this);
760     checkShowFormatFamilyColumn.addItemListener(this);
761     checkShowFormatVersionColumn.addItemListener(this);
762     checkShowIsDrumColumn.addItemListener(this);
763     checkShowCreatedColumn.addItemListener(this);
764     checkShowModifiedColumn.addItemListener(this);
765     checkShowProductColumn.addItemListener(this);
766     checkShowArtistsColumn.addItemListener(this);
767     checkShowInstrumentFileColumn.addItemListener(this);
768     checkShowInstrumentNrColumn.addItemListener(this);
769     checkShowKeywordsColumn.addItemListener(this);
770    
771     JPanel p = new JPanel();
772     p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
773     p.add(checkShowSizeColumn);
774     p.add(checkShowFormatFamilyColumn);
775     p.add(checkShowFormatVersionColumn);
776     p.add(checkShowIsDrumColumn);
777     p.add(checkShowCreatedColumn);
778     p.add(checkShowModifiedColumn);
779     p.add(checkShowProductColumn);
780     p.add(checkShowArtistsColumn);
781     p.add(checkShowInstrumentFileColumn);
782     p.add(checkShowInstrumentNrColumn);
783     p.add(checkShowKeywordsColumn);
784     String s = i18n.getLabel("InstrumentsDbFrame.columns");
785     p.setBorder(BorderFactory.createTitledBorder(s));
786    
787     setMainPane(p);
788     }
789    
790     public void
791     itemStateChanged(ItemEvent e) {
792     mainPane.getInstrumentsTable().saveColumnWidths();
793    
794     InstrumentsDbTableModel m = mainPane.instrumentsTable.getModel();
795    
796     Object source = e.getItemSelectable();
797     if(source == checkShowSizeColumn) {
798     m.setShowSizeColumn(checkShowSizeColumn.isSelected());
799     } else if(source == checkShowFormatFamilyColumn) {
800     boolean b = checkShowFormatFamilyColumn.isSelected();
801     m.setShowFormatFamilyColumn(b);
802     } else if(source == checkShowFormatVersionColumn) {
803     boolean b = checkShowFormatVersionColumn.isSelected();
804     m.setShowFormatVersionColumn(b);
805     } else if(source == checkShowIsDrumColumn) {
806     m.setShowIsDrumColumn(checkShowIsDrumColumn.isSelected());
807     } else if(source == checkShowCreatedColumn) {
808     m.setShowCreatedColumn(checkShowCreatedColumn.isSelected());
809     } else if(source == checkShowModifiedColumn) {
810     m.setShowModifiedColumn(checkShowModifiedColumn.isSelected());
811     } else if(source == checkShowProductColumn) {
812     m.setShowProductColumn(checkShowProductColumn.isSelected());
813     } else if(source == checkShowArtistsColumn) {
814     m.setShowArtistsColumn(checkShowArtistsColumn.isSelected());
815     } else if(source == checkShowInstrumentFileColumn) {
816     boolean b = checkShowInstrumentFileColumn.isSelected();
817     m.setShowInstrumentFileColumn(b);
818     } else if(source == checkShowInstrumentNrColumn) {
819     boolean b = checkShowInstrumentNrColumn.isSelected();
820     m.setShowInstrumentNrColumn(b);
821     } else if(source == checkShowKeywordsColumn) {
822     m.setShowKeywordsColumn(checkShowKeywordsColumn.isSelected());
823     }
824    
825     mainPane.getInstrumentsTable().loadColumnWidths();
826     mainPane.getInstrumentsTable().getRowSorter().toggleSortOrder(0);
827     }
828     }
829     }

  ViewVC Help
Powered by ViewVC