package gui.views; import javax.swing.event.TableModelListener; import javax.swing.table.TableModel; import controller.Feature; /** * DetailTableModel prepares the selection details to be visualized by a JTable. */ public class DetailTableModel implements TableModel { /** * Actual data. */ private final float[][] floatData; /** * Currently active features. */ private final Feature[] features; /** * Column names. */ private final String[] columnNames; /** * Validity flag of the values. */ private final boolean validValues; /** * Constructs a new detail table model. * * @param features * list of features. * @param floatData * the calculated detail data. * @param columnNames * column names. * @param validValues * true if data is valid. */ public DetailTableModel(Feature[] features, float[][] floatData, String[] columnNames, boolean validValues) { this.floatData = floatData; this.features = features; this.columnNames = columnNames; this.validValues = validValues; } @Override public void addTableModelListener(TableModelListener arg0) { // not needed } @Override public Class<?> getColumnClass(int columnIndex) { return getValueAt(0, columnIndex).getClass(); } @Override public int getColumnCount() { return this.columnNames.length; } @Override public String getColumnName(int columnIndex) { return columnNames[columnIndex]; } @Override public int getRowCount() { return floatData.length; } @Override public Object getValueAt(int row, int column) { if (column == 0) { return features[row].getName(); } if (!validValues) { return "-"; } return floatData[row][column - 1]; } @Override public boolean isCellEditable(int arg0, int arg1) { return false; } @Override public void removeTableModelListener(TableModelListener arg0) { } @Override public void setValueAt(Object arg0, int arg1, int arg2) { // No editable cells } }