001 // License: GPL. For details, see LICENSE file. 002 package org.openstreetmap.josm.gui.dialogs.changeset; 003 004 import static org.openstreetmap.josm.tools.I18n.tr; 005 006 import java.awt.Component; 007 008 import javax.swing.JLabel; 009 import javax.swing.JTable; 010 import javax.swing.UIManager; 011 import javax.swing.table.TableCellRenderer; 012 013 import org.openstreetmap.josm.data.osm.ChangesetDataSet.ChangesetModificationType; 014 import 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 OsmPrimitivRenderer}. 019 * 020 */ 021 public 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 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, 058 int row, int column) { 059 if (value == null) 060 return this; 061 reset(); 062 renderColors(isSelected); 063 switch(column) { 064 case 0: 065 ChangesetModificationType type = (ChangesetModificationType)value; 066 renderModificationType(type); 067 break; 068 case 1: 069 HistoryOsmPrimitive primitive = (HistoryOsmPrimitive)value; 070 renderId(primitive); 071 break; 072 default: 073 /* do nothing */ 074 } 075 return this; 076 } 077 }