package org.activityinfo.geoadmin;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import org.activityinfo.geoadmin.model.AdminEntity;
/**
* A TableCellRenderer for the import view which colors rows according to the
* quality of their match to an existing parent.
*/
public class ImportTableCellRenderer extends DefaultTableCellRenderer {
private static final Color FOREST_GREEN = Color.decode("#4AA02C");
private static final Color FIREBRICK3 = Color.decode("#C11B17");
private static final Color PINK = Color.decode("#F660AB");
private ParentGuesser scorer;
private ImportTableModel tableModel;
public ImportTableCellRenderer(ImportTableModel tableModel, ParentGuesser scorer) {
super();
this.tableModel = tableModel;
this.scorer = scorer;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (!isSelected) {
int featureIndex = table.convertRowIndexToModel(row);
if (tableModel.getParent(row) != null) {
AdminEntity parent = tableModel.getParent(featureIndex);
ImportFeature feature = tableModel.getFeatureAt(featureIndex);
switch (scorer.quality(feature, parent)) {
case OK:
c.setBackground(FOREST_GREEN);
break;
case WARNING:
c.setBackground(PINK);
break;
case SEVERE:
c.setBackground(FIREBRICK3);
c.setForeground(Color.WHITE);
break;
}
}
}
return c;
}
}