package net.sf.openrocket.gui.adaptors; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; import net.sf.openrocket.startup.Application; public abstract class ColumnTableModel extends AbstractTableModel { private final Column[] columns; public ColumnTableModel(Column... columns) { this.columns = columns; } public void setColumnWidths(TableColumnModel model) { for (int i = 0; i < columns.length; i++) { if (columns[i].getExactWidth() > 0) { TableColumn col = model.getColumn(i); int w = columns[i].getExactWidth(); col.setResizable(false); col.setMinWidth(w); col.setMaxWidth(w); col.setPreferredWidth(w); } else { model.getColumn(i).setPreferredWidth(columns[i].getDefaultWidth()); } } } public Column getColumn(int i) { return columns[i]; } @Override public int getColumnCount() { return columns.length; } @Override public String getColumnName(int col) { return columns[col].toString(); } @Override public Class<?> getColumnClass(int col) { return columns[col].getColumnClass(); } @Override public Object getValueAt(int row, int col) { if ((row < 0) || (row >= getRowCount()) || (col < 0) || (col >= columns.length)) { Application.getExceptionHandler().handleErrorCondition("Error: Requested illegal column/row, col=" + col + " row=" + row); return null; } return columns[col].getValueAt(row); } @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { columns[columnIndex].setValueAt(rowIndex, aValue); } }