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

Diff of /jsampler/trunk/src/org/jsampler/view/AbstractInstrumentsDbTable.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1751 by iliev, Tue Apr 29 22:22:40 2008 UTC revision 1752 by iliev, Mon Aug 11 22:51:24 2008 UTC
# Line 1  Line 1 
1  /*  /*
2   *   JSampler - a java front-end for LinuxSampler   *   JSampler - a java front-end for LinuxSampler
3   *   *
4   *   Copyright (C) 2005-2007 Grigor Iliev <grigor@grigoriliev.com>   *   Copyright (C) 2005-2008 Grigor Iliev <grigor@grigoriliev.com>
5   *   *
6   *   This file is part of JSampler.   *   This file is part of JSampler.
7   *   *
# Line 30  import java.beans.PropertyChangeEvent; Line 30  import java.beans.PropertyChangeEvent;
30  import java.beans.PropertyChangeListener;  import java.beans.PropertyChangeListener;
31    
32  import java.util.Comparator;  import java.util.Comparator;
33    import java.util.List;
34  import java.util.Vector;  import java.util.Vector;
35    
36  import javax.swing.DefaultCellEditor;  import javax.swing.DefaultCellEditor;
37  import javax.swing.JTable;  import javax.swing.JTable;
38  import javax.swing.JTextField;  import javax.swing.JTextField;
39  import javax.swing.JViewport;  import javax.swing.JViewport;
40    import javax.swing.RowSorter.SortKey;
41    import javax.swing.SortOrder;
42    
43  import javax.swing.event.ChangeEvent;  import javax.swing.event.ChangeEvent;
44  import javax.swing.event.ListSelectionEvent;  import javax.swing.event.ListSelectionEvent;
45    import javax.swing.event.RowSorterEvent;
46    import javax.swing.event.RowSorterListener;
47  import javax.swing.event.TableColumnModelEvent;  import javax.swing.event.TableColumnModelEvent;
48  import javax.swing.event.TableColumnModelListener;  import javax.swing.event.TableColumnModelListener;
49    
# Line 56  import org.linuxsampler.lscp.DbInstrumen Line 61  import org.linuxsampler.lscp.DbInstrumen
61  import org.linuxsampler.lscp.event.InstrumentsDbAdapter;  import org.linuxsampler.lscp.event.InstrumentsDbAdapter;
62  import org.linuxsampler.lscp.event.InstrumentsDbEvent;  import org.linuxsampler.lscp.event.InstrumentsDbEvent;
63    
64    import static javax.swing.event.RowSorterEvent.Type.SORT_ORDER_CHANGED;
65    
66    
67  /**  /**
68   *   *
# Line 72  public abstract class AbstractInstrument Line 79  public abstract class AbstractInstrument
79                    
80          private InstrumentsDbTableView view = null;          private InstrumentsDbTableView view = null;
81                    
82            private final String tablePrefix;
83            
84            /**
85             * Creates a new instance of <code>AbstractInstrumentsDbTable</code>
86             */
87            public
88            AbstractInstrumentsDbTable() {
89                    this("");
90            }
91            
92          /**          /**
93           * Creates a new instance of <code>AbstractInstrumentsDbTable</code>           * Creates a new instance of <code>AbstractInstrumentsDbTable</code>
94             * @param tablePrefix Used to create unique property names for storing
95             * the column preferences for different tables e.g. for DbInstrumentChooser,
96             * InstrumentsDbFrame.
97           */           */
98          public AbstractInstrumentsDbTable() {          public
99                  this(new InstrumentsDbTableModel());          AbstractInstrumentsDbTable(String tablePrefix) {
100                    this(new InstrumentsDbTableModel(), tablePrefix);
101          }          }
102                    
103          /**          /**
104           * Creates a new instance of <code>AbstractInstrumentsDbTable</code>           * Creates a new instance of <code>AbstractInstrumentsDbTable</code>
105           */           */
106          public AbstractInstrumentsDbTable(InstrumentsDbTableModel model) {          public AbstractInstrumentsDbTable(InstrumentsDbTableModel model, String tablePrefix) {
107                  super(model);                  super(model);
108                  setView(CC.getViewConfig().getInstrumentsDbTableView());                  setView(CC.getViewConfig().getInstrumentsDbTableView());
109                                    
110                  String s;                  this.tablePrefix = tablePrefix;
111                  InstrumentsDbTableModel m = getModel();                  loadColumnsVisibleState();
112                                    loadColumnWidths();
                 s = "DbInstrumentsTable.ShowSizeColumn";  
                 m.setShowSizeColumn(preferences().getBoolProperty(s));  
                 s = "DbInstrumentsTable.ShowFormatFamilyColumn";  
                 m.setShowFormatFamilyColumn(preferences().getBoolProperty(s));  
                 s = "DbInstrumentsTable.ShowFormatVersionColumn";  
                 m.setShowFormatVersionColumn(preferences().getBoolProperty(s));  
                 s = "DbInstrumentsTable.ShowIsDrumColumn";  
                 m.setShowIsDrumColumn(preferences().getBoolProperty(s));  
                 s = "DbInstrumentsTable.ShowCreatedColumn";  
                 m.setShowCreatedColumn(preferences().getBoolProperty(s));  
                 s = "DbInstrumentsTable.ShowModifiedColumn";  
                 m.setShowModifiedColumn(preferences().getBoolProperty(s));  
                 s = "DbInstrumentsTable.ShowProductColumn";  
                 m.setShowProductColumn(preferences().getBoolProperty(s));  
                 s = "DbInstrumentsTable.ShowArtistsColumn";  
                 m.setShowArtistsColumn(preferences().getBoolProperty(s));  
                 s = "DbInstrumentsTable.ShowInstrumentFileColumn";  
                 m.setShowInstrumentFileColumn(preferences().getBoolProperty(s));  
                 s = "DbInstrumentsTable.ShowInstrumentNrColumn";  
                 m.setShowInstrumentNrColumn(preferences().getBoolProperty(s));  
                 s = "DbInstrumentsTable.ShowKeywordsColumn";  
                 m.setShowKeywordsColumn(preferences().getBoolProperty(s));  
113                                    
114                  setAutoResizeMode(AUTO_RESIZE_OFF);                  setAutoResizeMode(AUTO_RESIZE_OFF);
115                                    
116                  rowSorter = new InstrumentsDbTableRowSorter(getModel());                  rowSorter = new InstrumentsDbTableRowSorter(getModel());
117                  setRowSorter(rowSorter);                  setRowSorter(rowSorter);
118                                    
119                    loadSortOrder();
120                    
121                    RowSorterListener l = new RowSorterListener() {
122                            public void
123                            sorterChanged(RowSorterEvent e) {
124                                    if(e.getType() != SORT_ORDER_CHANGED) return;
125                                    rowSorterChanged();
126                            }
127                    };
128                    
129                    getRowSorter().addRowSorterListener(l);
130                    
131                  putClientProperty("JTable.autoStartsEdit", false);                  putClientProperty("JTable.autoStartsEdit", false);
132                                    
133                  nameEditor = new DefaultCellEditor(tfEditor);                  nameEditor = new DefaultCellEditor(tfEditor);
134                  nameEditor.setClickCountToStart(5);                  nameEditor.setClickCountToStart(5);
135                                    
136                  if(m.getShowDummyColumn()) {                  if( getModel().getShowDummyColumn()) {
137                          TableColumn dummy;                          TableColumn dummy;
138                          dummy = getColumnModel().getColumn(getModel().getDummyColumnIndex());                          dummy = getColumnModel().getColumn(getModel().getDummyColumnIndex());
139                          dummy.setPreferredWidth(10);                          dummy.setPreferredWidth(10);
# Line 282  public abstract class AbstractInstrument Line 293  public abstract class AbstractInstrument
293                                    
294          public void          public void
295          loadColumnWidths() {          loadColumnWidths() {
296                  loadColumnWidths("");                  loadColumnWidths(tablePrefix);
297          }          }
298                                    
299          public void          public void
# Line 361  public abstract class AbstractInstrument Line 372  public abstract class AbstractInstrument
372                    
373          public void          public void
374          saveColumnWidths() {          saveColumnWidths() {
375                  saveColumnWidths("");                  saveColumnWidths(tablePrefix);
376          }          }
377                    
378          public void          public void
# Line 424  public abstract class AbstractInstrument Line 435  public abstract class AbstractInstrument
435          }          }
436                    
437          public void          public void
438            loadColumnsVisibleState() {
439                    loadColumnsVisibleState(tablePrefix);
440            }
441            
442            public void
443            loadColumnsVisibleState(String prefix) {
444                    String s;
445                    InstrumentsDbTableModel m = getModel();
446                    
447                    s = prefix + "DbInstrumentsTable.ShowSizeColumn";
448                    m.setShowSizeColumn(preferences().getBoolProperty(s));
449                    s = prefix + "DbInstrumentsTable.ShowFormatFamilyColumn";
450                    m.setShowFormatFamilyColumn(preferences().getBoolProperty(s));
451                    s = prefix + "DbInstrumentsTable.ShowFormatVersionColumn";
452                    m.setShowFormatVersionColumn(preferences().getBoolProperty(s));
453                    s = prefix + "DbInstrumentsTable.ShowIsDrumColumn";
454                    m.setShowIsDrumColumn(preferences().getBoolProperty(s));
455                    s = prefix + "DbInstrumentsTable.ShowCreatedColumn";
456                    m.setShowCreatedColumn(preferences().getBoolProperty(s));
457                    s = prefix + "DbInstrumentsTable.ShowModifiedColumn";
458                    m.setShowModifiedColumn(preferences().getBoolProperty(s));
459                    s = prefix + "DbInstrumentsTable.ShowProductColumn";
460                    m.setShowProductColumn(preferences().getBoolProperty(s));
461                    s = prefix + "DbInstrumentsTable.ShowArtistsColumn";
462                    m.setShowArtistsColumn(preferences().getBoolProperty(s));
463                    s = prefix + "DbInstrumentsTable.ShowInstrumentFileColumn";
464                    m.setShowInstrumentFileColumn(preferences().getBoolProperty(s));
465                    s = prefix + "DbInstrumentsTable.ShowInstrumentNrColumn";
466                    m.setShowInstrumentNrColumn(preferences().getBoolProperty(s));
467                    s = prefix + "DbInstrumentsTable.ShowKeywordsColumn";
468                    m.setShowKeywordsColumn(preferences().getBoolProperty(s));
469            }
470            
471            public void
472          saveColumnsVisibleState() {          saveColumnsVisibleState() {
473                    saveColumnsVisibleState(tablePrefix);
474            }
475            
476            public void
477            saveColumnsVisibleState(String prefix) {
478                  InstrumentsDbTableModel m = getModel();                  InstrumentsDbTableModel m = getModel();
479                                    
480                  String s = "DbInstrumentsTable.ShowSizeColumn";                  String s = prefix + "DbInstrumentsTable.ShowSizeColumn";
481                  preferences().setBoolProperty(s, m.getShowSizeColumn());                  preferences().setBoolProperty(s, m.getShowSizeColumn());
482                  s = "DbInstrumentsTable.ShowFormatFamilyColumn";                  s = prefix + "DbInstrumentsTable.ShowFormatFamilyColumn";
483                  preferences().setBoolProperty(s, m.getShowFormatFamilyColumn());                  preferences().setBoolProperty(s, m.getShowFormatFamilyColumn());
484                  s = "DbInstrumentsTable.ShowFormatVersionColumn";                  s = prefix + "DbInstrumentsTable.ShowFormatVersionColumn";
485                  preferences().setBoolProperty(s, m.getShowFormatVersionColumn());                  preferences().setBoolProperty(s, m.getShowFormatVersionColumn());
486                  s = "DbInstrumentsTable.ShowIsDrumColumn";                  s = prefix + "DbInstrumentsTable.ShowIsDrumColumn";
487                  preferences().setBoolProperty(s, m.getShowIsDrumColumn());                  preferences().setBoolProperty(s, m.getShowIsDrumColumn());
488                  s = "DbInstrumentsTable.ShowCreatedColumn";                  s = prefix + "DbInstrumentsTable.ShowCreatedColumn";
489                  preferences().setBoolProperty(s, m.getShowCreatedColumn());                  preferences().setBoolProperty(s, m.getShowCreatedColumn());
490                  s = "DbInstrumentsTable.ShowModifiedColumn";                  s = prefix + "DbInstrumentsTable.ShowModifiedColumn";
491                  preferences().setBoolProperty(s, m.getShowModifiedColumn());                  preferences().setBoolProperty(s, m.getShowModifiedColumn());
492                  s = "DbInstrumentsTable.ShowProductColumn";                  s = prefix + "DbInstrumentsTable.ShowProductColumn";
493                  preferences().setBoolProperty(s, m.getShowProductColumn());                  preferences().setBoolProperty(s, m.getShowProductColumn());
494                  s = "DbInstrumentsTable.ShowArtistsColumn";                  s = prefix + "DbInstrumentsTable.ShowArtistsColumn";
495                  preferences().setBoolProperty(s, m.getShowArtistsColumn());                  preferences().setBoolProperty(s, m.getShowArtistsColumn());
496                  s = "DbInstrumentsTable.ShowInstrumentFileColumn";                  s = prefix + "DbInstrumentsTable.ShowInstrumentFileColumn";
497                  preferences().setBoolProperty(s, m.getShowInstrumentFileColumn());                  preferences().setBoolProperty(s, m.getShowInstrumentFileColumn());
498                  s = "DbInstrumentsTable.ShowInstrumentNrColumn";                  s = prefix + "DbInstrumentsTable.ShowInstrumentNrColumn";
499                  preferences().setBoolProperty(s, m.getShowInstrumentNrColumn());                  preferences().setBoolProperty(s, m.getShowInstrumentNrColumn());
500                  s = "DbInstrumentsTable.ShowKeywordsColumn";                  s = prefix + "DbInstrumentsTable.ShowKeywordsColumn";
501                  preferences().setBoolProperty(s, m.getShowKeywordsColumn());                  preferences().setBoolProperty(s, m.getShowKeywordsColumn());
502          }          }
503                    
504            public void
505            loadSortOrder() {
506                    loadSortOrder(tablePrefix);
507            }
508                    
509            public void
510            loadSortOrder(String prefix) {
511                    int i = preferences().getIntProperty(tablePrefix + "sortOrder");
512                    boolean descending = i < 0;
513                    if(i < 0) i *= -1;
514                    i--;
515                    
516                    if(i < 0 || i >= getModel().getColumnCount()) {
517                            getRowSorter().toggleSortOrder(0);
518                            CC.getLogger().warning("Unknown table column: " + i);
519                    } else {
520                            getRowSorter().toggleSortOrder(i);
521                            if(descending) getRowSorter().toggleSortOrder(i);
522                    }
523            }
524            
525            private void
526            rowSorterChanged() {
527                    List<? extends SortKey> list = getRowSorter().getSortKeys();
528                    if(list.isEmpty()) return;
529                    SortKey k = list.get(0);
530                    int i = k.getColumn() + 1;
531                    if(k.getSortOrder() == SortOrder.UNSORTED) return;
532                    if(k.getSortOrder() == SortOrder.DESCENDING) i *= -1;
533                    preferences().setIntProperty(tablePrefix + "sortOrder", i);
534            }
535                    
536          /*public void          /*public void
537          columnMarginChanged(ChangeEvent e) {          columnMarginChanged(ChangeEvent e) {

Legend:
Removed from v.1751  
changed lines
  Added in v.1752

  ViewVC Help
Powered by ViewVC