/[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 1205 - (hide annotations) (download)
Thu May 24 21:55:41 2007 UTC (16 years, 11 months ago) by iliev
File size: 24485 byte(s)
* upgrading to version 0.5a

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

  ViewVC Help
Powered by ViewVC