001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.dialogs.relation;
003
004import java.awt.Component;
005import java.awt.Rectangle;
006
007import javax.swing.JTable;
008
009import org.openstreetmap.josm.data.osm.OsmPrimitive;
010import org.openstreetmap.josm.gui.DefaultNameFormatter;
011import org.openstreetmap.josm.tools.ImageProvider;
012
013/**
014 * "Refers to" column in relation editor's member list.
015 */
016public class MemberTableMemberCellRenderer extends MemberTableCellRenderer {
017
018    /**
019     * Constructs a new {@code MemberTableMemberCellRenderer}.
020     */
021    public MemberTableMemberCellRenderer() {
022        super();
023    }
024
025    protected void renderPrimitive(OsmPrimitive primitive, Rectangle cellSize) {
026        // Make icon the full height of the table cell. Icon background is square.
027        setIcon(ImageProvider.getPadded(primitive, cellSize));
028        setText(primitive.getDisplayName(DefaultNameFormatter.getInstance()));
029        setToolTipText(DefaultNameFormatter.getInstance().buildDefaultToolTip(primitive));
030    }
031
032    @Override
033    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
034            int row, int column) {
035
036        reset();
037        if (value == null)
038            return this;
039
040        Rectangle cellSize = table.getCellRect(row, column, false);
041
042        renderForeground(isSelected);
043        OsmPrimitive primitive = (OsmPrimitive) value;
044        renderBackground(getModel(table), primitive, isSelected);
045        renderPrimitive(primitive, cellSize);
046        return this;
047    }
048}