// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.corrector; import static org.openstreetmap.josm.tools.I18n.tr; import java.util.Arrays; import java.util.List; import javax.swing.table.AbstractTableModel; public abstract class CorrectionTableModel<C extends Correction> extends AbstractTableModel { private List<C> corrections; private boolean[] apply; private int applyColumn; public CorrectionTableModel(List<C> corrections) { super(); this.corrections = corrections; apply = new boolean[this.corrections.size()]; Arrays.fill(apply, true); applyColumn = getColumnCount() - 1; } abstract public int getColumnCount(); abstract protected boolean isBoldCell(int row, int column); abstract public String getCorrectionColumnName(int colIndex); abstract public Object getCorrectionValueAt(int rowIndex, int colIndex); public List<C> getCorrections() { return corrections; } public int getApplyColumn() { return applyColumn; } public boolean getApply(int i) { return apply[i]; } public int getRowCount() { return corrections.size(); } @Override public Class<?> getColumnClass(int columnIndex) { if (columnIndex == applyColumn) return Boolean.class; return String.class; } @Override public String getColumnName(int columnIndex) { if (columnIndex == applyColumn) return tr("Apply?"); return getCorrectionColumnName(columnIndex); } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return columnIndex == applyColumn; } @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { if (columnIndex == applyColumn && aValue instanceof Boolean) apply[rowIndex] = (Boolean)aValue; } public Object getValueAt(int rowIndex, int colIndex) { if (colIndex == applyColumn) return apply[rowIndex]; return getCorrectionValueAt(rowIndex, colIndex); } }