KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > snow > sortabletable > RowHeaderExtractorWrapperSortableTableModel


1 package snow.sortabletable;
2
3
4 import java.awt.*;
5 import java.awt.event.*;
6 import javax.swing.*;
7 import javax.swing.event.*;
8 import javax.swing.table.*;
9
10 import java.util.*;
11
12
13 /** wraps around a table model to extract first column of rest
14     USE instanciate twice, one time with first=true for the headers
15     one time with first=false for the rest
16 */

17 public class RowHeaderExtractorWrapperSortableTableModel extends AbstractTableModel
18 {
19   boolean first;
20   SortableTableModel baseModel;
21   int numberOfColumnHeaders;
22
23   public RowHeaderExtractorWrapperSortableTableModel(
24               boolean _first,
25               SortableTableModel _baseModel,
26               int _numberOfColumnHeaders)
27   {
28     super();
29     this.first = _first;
30     this.baseModel = _baseModel;
31     this.numberOfColumnHeaders = _numberOfColumnHeaders;
32
33     // give the events of the bassModel to this
34
baseModel.addTableModelListener(new TableModelListener()
35     {
36        public void tableChanged(TableModelEvent e)
37        {
38          if(e.getFirstRow()==TableModelEvent.HEADER_ROW)
39          {
40            fireTableStructureChanged();
41          }
42          else
43          {
44            fireTableDataChanged();
45          }
46        }
47     });
48
49   } // Constructor
50

51
52
53   private int getColumn(int col)
54   {
55     if(first) return col;
56     return col + numberOfColumnHeaders;
57   }
58
59
60   // AbstractTableModel impl
61
//
62

63   public int getRowCount() {return baseModel.getRowCount();}
64
65   public int getColumnCount()
66   {
67     return (first?
68        numberOfColumnHeaders
69       :baseModel.getColumnCount()-numberOfColumnHeaders);
70   }
71
72
73   public Object JavaDoc getValueAt(int row, int column)
74   {
75      return baseModel.getValueAt(row, getColumn(column));
76   }
77
78   public boolean isCellEditable(int row, int col)
79   {
80      return baseModel.isCellEditable(row, getColumn(col));
81   }
82
83   public void setValueAt(Object JavaDoc val, int row, int col)
84   {
85      baseModel.setValueAt(val, row, getColumn(col));
86   }
87
88   public String JavaDoc getColumnName(int column)
89   {
90      return baseModel.getColumnName( getColumn(column) );
91
92   }
93
94   public Class JavaDoc getColumnClass(int col)
95   {
96      return baseModel.getColumnClass(getColumn(col));
97   }
98
99
100 /* public void setPreferredColumnSizesFromModel()
101   {
102     if(tableReference==null) return;
103
104     int fontSize = UIManager.getFont("Label.font").getSize();
105     for(int i=0; i<tableReference.getColumnCount(); i++)
106     {
107       int pos = this.getColumnForViewIndex(i);
108       int w = this.basicTableModel.getPreferredColumnWidth(pos);
109       if(w>0)
110       {
111         tableReference.getColumnModel().getColumn(i).setPreferredWidth(w*fontSize);
112       }
113     }
114
115   } */

116
117 } // RowHeaderExtractorWrapperSortableTableModel
Popular Tags