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

Contents of /jsampler/trunk/src/org/jsampler/view/fantasia/InstrumentsDbFrame.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1540 - (show annotations) (download)
Mon Dec 3 23:22:02 2007 UTC (16 years, 3 months ago) by iliev
File size: 25162 byte(s)
* Fantasia: by default the volume values are now shown in decibels
* Implemented support for retrieving instrument information
  from instrument files
* Some bugfixes and enhancements

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

  ViewVC Help
Powered by ViewVC