001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.dialogs.relation;
003
004import java.awt.Component;
005import java.awt.Dimension;
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, Dimension cellSize) {
026        // Make icon the full height of the table cell. Icon background is square.
027        int size = Math.min(cellSize.width, cellSize.height);
028        setIcon(ImageProvider.getPadded(primitive, new Dimension(size, size)));
029        setText(primitive.getDisplayName(DefaultNameFormatter.getInstance()));
030        setToolTipText(DefaultNameFormatter.getInstance().buildDefaultToolTip(primitive));
031    }
032
033    @Override
034    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
035            int row, int column) {
036
037        reset();
038        if (value == null)
039            return this;
040
041        Dimension cellSize = table.getCellRect(row, column, false).getSize();
042
043        OsmPrimitive primitive = (OsmPrimitive) value;
044        renderBackgroundForeground(getModel(table), primitive, isSelected);
045        renderPrimitive(primitive, cellSize);
046        return this;
047    }
048}