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}