create changelog entry
[debian/openrocket] / core / 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 import net.sf.openrocket.startup.Application;
8
9 public abstract class ColumnTableModel extends AbstractTableModel {
10         private final Column[] columns;
11         
12         public ColumnTableModel(Column... columns) {
13                 this.columns = columns;
14         }
15         
16         public void setColumnWidths(TableColumnModel model) {
17                 for (int i = 0; i < columns.length; i++) {
18                         if (columns[i].getExactWidth() > 0) {
19                                 TableColumn col = model.getColumn(i);
20                                 int w = columns[i].getExactWidth();
21                                 col.setResizable(false);
22                                 col.setMinWidth(w);
23                                 col.setMaxWidth(w);
24                                 col.setPreferredWidth(w);
25                         } else {
26                                 model.getColumn(i).setPreferredWidth(columns[i].getDefaultWidth());
27                         }
28                 }
29         }
30         
31         @Override
32         public int getColumnCount() {
33                 return columns.length;
34         }
35         
36         @Override
37         public String getColumnName(int col) {
38                 return columns[col].toString();
39         }
40         
41         @Override
42         public Class<?> getColumnClass(int col) {
43                 return columns[col].getColumnClass();
44         }
45         
46         @Override
47         public Object getValueAt(int row, int col) {
48                 if ((row < 0) || (row >= getRowCount()) ||
49                                 (col < 0) || (col >= columns.length)) {
50                         Application.getExceptionHandler().handleErrorCondition("Error:  Requested illegal column/row, col=" + col + " row=" + row);
51                         return null;
52                 }
53                 return columns[col].getValueAt(row);
54         }
55
56         @Override
57         public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
58                 columns[columnIndex].setValueAt(rowIndex, aValue);
59         }
60         
61 }