/[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 1355 - (hide annotations) (download)
Mon Sep 17 23:55:27 2007 UTC (16 years, 7 months ago) by iliev
File size: 25157 byte(s)
* Added support for formatting the instruments database
* Now database instruments and directories can have multiline descriptions
* Fantasia: added detailed error dialog

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

  ViewVC Help
Powered by ViewVC