// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.gui.dialogs.relation; import java.awt.Color; import java.awt.Component; import javax.swing.JLabel; import javax.swing.JTable; import javax.swing.UIManager; import javax.swing.table.TableCellRenderer; import org.openstreetmap.josm.data.osm.OsmPrimitive; /** * This is the {@see TableCellRenderer} used in the tables of {@see RelationMemberMerger}. * */ public abstract class MemberTableCellRenderer extends JLabel implements TableCellRenderer { public final static Color BGCOLOR_EMPTY_ROW = new Color(234, 234, 234); public final static Color BGCOLOR_IN_JOSM_SELECTION = new Color(235,255,177); public final static Color BGCOLOR_NOT_IN_OPPOSITE = new Color(255, 197, 197); public final static Color BGCOLOR_DOUBLE_ENTRY = new Color(254,226,214); /** * constructor */ public MemberTableCellRenderer() { setIcon(null); setOpaque(true); } /** * reset the renderer */ protected void reset() { setBackground(UIManager.getColor("Table.background")); setForeground(UIManager.getColor("Table.foreground")); setBorder(null); setIcon(null); setToolTipText(null); } protected void renderBackground(MemberTableModel model, OsmPrimitive primitive, boolean isSelected) { Color bgc = UIManager.getColor("Table.background"); if (isSelected) { bgc = UIManager.getColor("Table.selectionBackground"); } else if (primitive != null && model.isInJosmSelection(primitive)) { bgc = BGCOLOR_IN_JOSM_SELECTION; } else if (primitive != null && model.getNumMembersWithPrimitive(primitive) > 1) { bgc = BGCOLOR_DOUBLE_ENTRY; } setBackground(bgc); } protected void renderForeground(boolean isSelected) { Color fgc; if (isSelected) { fgc = UIManager.getColor("Table.selectionForeground"); } else { fgc = UIManager.getColor("Table.foreground"); } setForeground(fgc); } abstract public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column); /** * replies the model * @param table the table * @return the table model */ protected MemberTableModel getModel(JTable table) { return (MemberTableModel) table.getModel(); } }