KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > swingwtx > swing > table > DefaultTableModel


1 /*
2    SwingWT
3    Copyright(c)2003-2004, R. Rawson-Tetley
4
5    For more information on distributing and using this program, please
6    see the accompanying "COPYING" file.
7
8    Contact me by electronic mail: bobintetley@users.sourceforge.net
9
10    $Log: DefaultTableModel.java,v $
11    Revision 1.6 2004/04/20 16:36:16 bobintetley
12    Code cleanup
13
14    Revision 1.5 2004/03/30 10:42:47 bobintetley
15    Many minor bug fixes, event improvements by Dan Naab. Full swing.Icon support
16
17    Revision 1.4 2003/12/14 09:13:39 bobintetley
18    Added CVS log to source headers
19
20 */

21
22 package swingwtx.swing.table;
23
24 import swingwtx.swing.event.*;
25
26 import java.util.*;
27 import java.io.*;
28
29 public class DefaultTableModel extends AbstractTableModel implements Serializable {
30
31     protected Vector dataVector = new Vector();
32     protected Vector columnIdentifiers = new Vector();
33
34     public DefaultTableModel() {
35         this(0, 0);
36     }
37
38     public DefaultTableModel(Vector columnNames, int rowCount) {
39         setDataVector(new Vector(rowCount), columnNames);
40     }
41
42     public DefaultTableModel(Object JavaDoc[] columnNames, int rowCount) {
43         this(convertToVector(columnNames), rowCount);
44     }
45     
46     public DefaultTableModel(int rowCount, int columnCount) {
47         this(new Vector(columnCount), rowCount);
48     }
49
50     public DefaultTableModel(Vector data, Vector columnNames) {
51         setDataVector(data, columnNames);
52     }
53
54     public DefaultTableModel(Object JavaDoc[][] data, Object JavaDoc[] columnNames) {
55         setDataVector(data, columnNames);
56     }
57
58     public Vector getDataVector() {
59         return dataVector;
60     }
61
62     public void setDataVector(Vector dataVector, Vector columnIdentifiers) {
63         if (dataVector == null) dataVector = new Vector();
64         this.dataVector = dataVector;
65         this.columnIdentifiers = columnIdentifiers;
66     updateRowData(0, getRowCount());
67         fireTableStructureChanged();
68     }
69
70     public void setDataVector(Object JavaDoc[][] dataVector, Object JavaDoc[] columnIdentifiers) {
71         setDataVector(convertToVector(dataVector), convertToVector(columnIdentifiers));
72     }
73
74     public void newDataAvailable(TableModelEvent event) {
75         fireTableChanged(event);
76     }
77
78     public void newRowsAdded(TableModelEvent e) {
79         updateRowData(e.getFirstRow(), e.getLastRow() + 1);
80         fireTableChanged(e);
81     }
82
83     public void rowsRemoved(TableModelEvent event) {
84         fireTableChanged(event);
85     }
86
87     public void setNumRows(int rowCount) {
88         int old = getRowCount();
89     if (old == rowCount) {
90         return;
91     }
92     dataVector.setSize(rowCount);
93         if (rowCount <= old) {
94             fireTableRowsDeleted(rowCount, old - 1);
95         }
96         else {
97         updateRowData(old, rowCount);
98             fireTableRowsInserted(old, rowCount - 1);
99         }
100     }
101
102     public void setRowCount(int rowCount) {
103     setNumRows(rowCount);
104     }
105
106     public void addRow(Vector rowData) {
107         insertRow(getRowCount(), rowData);
108     }
109
110     public void addRow(Object JavaDoc[] rowData) {
111         addRow(convertToVector(rowData));
112     }
113
114
115     public void addColumn(Object JavaDoc columnName) {
116         addColumn(columnName, (Vector)null);
117     }
118
119     public void addColumn(Object JavaDoc columnName, Vector columnData) {
120         columnIdentifiers.addElement(columnName);
121     if (columnData != null) {
122             int columnSize = columnData.size();
123             if (columnSize > getRowCount()) {
124             dataVector.setSize(columnSize);
125             }
126         updateRowData(0, getRowCount());
127         int newColumn = getColumnCount() - 1;
128         for(int i = 0; i < columnSize; i++) {
129           Vector row = (Vector) dataVector.elementAt(i);
130           row.setElementAt(columnData.elementAt(i), newColumn);
131         }
132     }
133         else {
134         updateRowData(0, getRowCount());
135         }
136
137         fireTableStructureChanged();
138     }
139
140     public void addColumn(Object JavaDoc columnName, Object JavaDoc[] columnData) {
141         addColumn(columnName, convertToVector(columnData));
142     }
143     
144     public void insertRow(int row, Vector rowData) {
145     dataVector.insertElementAt(rowData, row);
146     updateRowData(row, row+1);
147         fireTableRowsInserted(row, row);
148     }
149
150     public void insertRow(int row, Object JavaDoc[] rowData) {
151         insertRow(row, convertToVector(rowData));
152     }
153
154     public void removeRow(int row) {
155         dataVector.removeElementAt(row);
156         fireTableRowsDeleted(row, row);
157     }
158
159     public void setColumnIdentifiers(Vector columnIdentifiers) {
160     setDataVector(dataVector, columnIdentifiers);
161     }
162
163     public void setColumnIdentifiers(Object JavaDoc[] newIdentifiers) {
164         setColumnIdentifiers(convertToVector(newIdentifiers));
165     }
166
167     public void setColumnCount(int columnCount) {
168     columnIdentifiers.setSize(columnCount);
169     updateRowData(0, getRowCount());
170     fireTableStructureChanged();
171     }
172
173     public int getRowCount() {
174         return dataVector.size();
175     }
176
177     public int getColumnCount() {
178         return columnIdentifiers.size();
179     }
180
181     public String JavaDoc getColumnName(int column) {
182         return columnIdentifiers.elementAt(column).toString();
183     }
184
185     public boolean isCellEditable(int row, int column) {
186         return true;
187     }
188
189     public Object JavaDoc getValueAt(int row, int column) {
190         Vector rowVector = (Vector)dataVector.elementAt(row);
191         return rowVector.elementAt(column);
192     }
193
194     public void setValueAt(Object JavaDoc aValue, int row, int column) {
195         Vector rowVector = (Vector)dataVector.elementAt(row);
196         rowVector.setElementAt(aValue, column);
197         fireTableCellUpdated(row, column);
198     }
199
200     protected static Vector convertToVector(Object JavaDoc[] anArray) {
201         Vector v = new Vector(anArray.length);
202         for (int i=0; i < anArray.length; i++) {
203             v.addElement(anArray[i]);
204         }
205         return v;
206     }
207
208     protected static Vector convertToVector(Object JavaDoc[][] anArray) {
209         Vector v = new Vector(anArray.length);
210         for (int i=0; i < anArray.length; i++) {
211             v.addElement(convertToVector(anArray[i]));
212         }
213         return v;
214     }
215
216     private void updateRowData(int from, int to) {
217     dataVector.setSize(getRowCount());
218         for (int i = from; i < to; i++) {
219         if (dataVector.elementAt(i) == null) {
220         dataVector.setElementAt(new Vector(), i);
221         }
222         ((Vector) dataVector.elementAt(i)).setSize(getColumnCount());
223     }
224     }
225     
226     public void addTableModelListener(swingwtx.swing.event.TableModelListener l) {
227         listenerList.add(l);
228     }
229     
230     public void removeTableModelListener(swingwtx.swing.event.TableModelListener l) {
231         listenerList.remove(l);
232     }
233     
234 }
235
Popular Tags