// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.corrector;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
public abstract class CorrectionTable<TM extends CorrectionTableModel<?>>
extends JTable {
private static final int MAX_VISIBLE_LINES = 10;
public static class BoldRenderer extends JLabel implements
TableCellRenderer {
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
Font f = getFont();
setFont(new Font(f.getName(), f.getStyle() | Font.BOLD, f.getSize()));
setText((String)value);
return this;
}
}
private static BoldRenderer boldRenderer = null;
protected CorrectionTable(TM correctionTableModel) {
super(correctionTableModel);
final int correctionsSize = correctionTableModel.getCorrections().size();
final int lines = correctionsSize > MAX_VISIBLE_LINES ? MAX_VISIBLE_LINES
: correctionsSize;
setPreferredScrollableViewportSize(new Dimension(400, lines
* getRowHeight()));
getColumnModel().getColumn(correctionTableModel.getApplyColumn())
.setPreferredWidth(40);
setRowSelectionAllowed(false);
}
public TableCellRenderer getCellRenderer(int row, int column) {
if (getCorrectionTableModel().isBoldCell(row, column)) {
if (boldRenderer == null)
boldRenderer = new BoldRenderer();
return boldRenderer;
}
return super.getCellRenderer(row, column);
}
@SuppressWarnings("unchecked")
public TM getCorrectionTableModel() {
return (TM)getModel();
}
}