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

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

  ViewVC Help
Powered by ViewVC