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.DefaultNameFormatter; 010import org.openstreetmap.josm.data.osm.OsmPrimitive; 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 // Explicit default constructor is needed for instantiation via reflection 024 } 025 026 protected void renderPrimitive(OsmPrimitive primitive, Dimension cellSize) { 027 // Make icon the full height of the table cell. Icon background is square. 028 int size = Math.min(cellSize.width, cellSize.height); 029 setIcon(ImageProvider.getPadded(primitive, new Dimension(size, size))); 030 setText(primitive.getDisplayName(DefaultNameFormatter.getInstance())); 031 setToolTipText(DefaultNameFormatter.getInstance().buildDefaultToolTip(primitive)); 032 } 033 034 @Override 035 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, 036 int row, int column) { 037 038 reset(); 039 if (value == null) 040 return this; 041 042 Dimension cellSize = table.getCellRect(row, column, false).getSize(); 043 044 OsmPrimitive primitive = (OsmPrimitive) value; 045 renderBackgroundForeground(getModel(table), primitive, isSelected); 046 renderPrimitive(primitive, cellSize); 047 return this; 048 } 049}