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 }