001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.dialogs.changeset; 003 004import static org.openstreetmap.josm.tools.I18n.tr; 005 006import java.awt.Component; 007 008import javax.swing.JLabel; 009import javax.swing.JTable; 010import javax.swing.UIManager; 011import javax.swing.table.TableCellRenderer; 012 013import org.openstreetmap.josm.data.osm.ChangesetDataSet.ChangesetModificationType; 014import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive; 015 016/** 017 * The table cell renderer used in the changeset content table, except for the "name" 018 * column in which we use a {@link org.openstreetmap.josm.gui.OsmPrimitivRenderer}. 019 * 020 */ 021public class ChangesetContentTableCellRenderer extends JLabel implements TableCellRenderer{ 022 023 public ChangesetContentTableCellRenderer() { 024 setOpaque(true); 025 } 026 027 protected void reset() { 028 setBackground(UIManager.getColor("Table.background")); 029 setForeground(UIManager.getColor("Table.foreground")); 030 setFont(UIManager.getFont("Table.font")); 031 } 032 033 protected void renderColors(boolean isSelected) { 034 if (isSelected) { 035 setBackground(UIManager.getColor("Table.selectionBackground")); 036 setForeground(UIManager.getColor("Table.selectionForeground")); 037 } else { 038 setBackground(UIManager.getColor("Table.background")); 039 setForeground(UIManager.getColor("Table.foreground")); 040 } 041 } 042 043 protected void renderId(HistoryOsmPrimitive primitive) { 044 setText(Long.toString(primitive.getId())); 045 setToolTipText(""); 046 } 047 048 protected void renderModificationType(ChangesetModificationType type) { 049 switch(type) { 050 case CREATED: setText(tr("Created")); break; 051 case UPDATED: setText(tr("Updated")); break; 052 case DELETED: setText(tr("Deleted")); break; 053 } 054 setToolTipText(""); 055 } 056 057 @Override 058 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, 059 int row, int column) { 060 if (value == null) 061 return this; 062 reset(); 063 renderColors(isSelected); 064 switch(column) { 065 case 0: 066 ChangesetModificationType type = (ChangesetModificationType)value; 067 renderModificationType(type); 068 break; 069 case 1: 070 HistoryOsmPrimitive primitive = (HistoryOsmPrimitive)value; 071 renderId(primitive); 072 break; 073 default: 074 /* do nothing */ 075 } 076 return this; 077 } 078}