Initial commit
[debian/openrocket] / src / net / sf / openrocket / gui / adaptors / ColumnTableModel.java
1 package net.sf.openrocket.gui.adaptors;
2
3 import javax.swing.table.AbstractTableModel;
4 import javax.swing.table.TableColumn;
5 import javax.swing.table.TableColumnModel;
6
7 public abstract class ColumnTableModel extends AbstractTableModel {
8         private final Column[] columns;
9         
10         public ColumnTableModel(Column... columns) {
11                 this.columns = columns;
12         }
13         
14         public void setColumnWidths(TableColumnModel model) {
15                 for (int i=0; i < columns.length; i++) {
16                         if (columns[i].getExactWidth() > 0) {
17                                 TableColumn col = model.getColumn(i);
18                                 int w = columns[i].getExactWidth();
19                                 col.setResizable(false);
20                                 col.setMinWidth(w);
21                                 col.setMaxWidth(w);
22                                 col.setPreferredWidth(w);
23                         } else {
24                                 model.getColumn(i).setPreferredWidth(columns[i].getDefaultWidth());
25                         }
26                 }
27         }
28
29         @Override
30         public int getColumnCount() {
31                 return columns.length;
32         }
33         
34         @Override
35         public String getColumnName(int col) {
36                 return columns[col].toString();
37         }
38         
39         @Override
40         public Class<?> getColumnClass(int col) {
41                 return columns[col].getColumnClass();
42         }
43
44         @Override
45         public Object getValueAt(int row, int col) {
46                 if ((row < 0) || (row >= getRowCount()) ||
47                                 (col < 0) || (col >= columns.length)) {
48                         System.err.println("Error:  Requested illegal column/row = "+col+"/"+row+".");
49                         assert(false);
50                         return null;
51                 }
52                 return columns[col].getValueAt(row);
53         }
54 }