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}