/[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 1688 - (hide annotations) (download)
Thu Feb 14 16:52:36 2008 UTC (16 years, 2 months ago) by iliev
File size: 25576 byte(s)
* Implemented a backend list with option to manually choose a backend
  to connect on startup(Edit/Preferences, then click the `Backend' tab)
  and option to change the backend without restarting JSampler
  (Actions/Change Backend or Ctrl + B)

* Added confirmation messages for removing sampler channels and
  audio/MIDI devices (Edit/Preferences, then click the `View' tab)

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

  ViewVC Help
Powered by ViewVC