001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.dialogs.relation;
003
004import java.awt.Color;
005
006import javax.swing.JTable;
007import javax.swing.UIManager;
008import javax.swing.table.TableCellRenderer;
009
010import org.openstreetmap.josm.data.osm.OsmPrimitive;
011import org.openstreetmap.josm.gui.util.GuiHelper;
012
013/**
014 * This is the {@link TableCellRenderer} used in {@link SelectionTable}.
015 * @since 1806
016 */
017public class SelectionTableCellRenderer extends MemberTableMemberCellRenderer {
018    public static final Color BGCOLOR_SINGLE_ENTRY = BGCOLOR_IN_JOSM_SELECTION;
019
020    /**
021     * reference to the member table model; required, in order to check whether a
022     * selected primitive is already used in the member list of the currently edited relation
023     */
024    private final MemberTableModel model;
025
026    /**
027     * constructor
028     * @param model member table model
029     */
030    public SelectionTableCellRenderer(MemberTableModel model) {
031        this.model = model;
032    }
033
034    @Override
035    protected void renderBackgroundForeground(MemberTableModel model, OsmPrimitive primitive, boolean isSelected) {
036        Color bgc = UIManager.getColor("Table.background");
037        if (primitive != null && model != null && model.getNumMembersWithPrimitive(primitive) == 1) {
038            bgc = BGCOLOR_SINGLE_ENTRY;
039        } else if (primitive != null && model != null && model.getNumMembersWithPrimitive(primitive) > 1) {
040            bgc = BGCOLOR_DOUBLE_ENTRY;
041        }
042        GuiHelper.setBackgroundReadable(this, bgc);
043    }
044
045    @Override
046    protected MemberTableModel getModel(JTable table) {
047        return model;
048    }
049}