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.JTable;
009
010import org.openstreetmap.josm.data.osm.ChangesetDataSet.ChangesetModificationType;
011import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
012
013/**
014 * The table cell renderer used in the changeset content table, except for the "name"
015 * column in which we use a {@link org.openstreetmap.josm.gui.PrimitiveRenderer}.
016 */
017public class ChangesetContentTableCellRenderer extends AbstractCellRenderer {
018
019    /**
020     * Renders primitive modification type.
021     * @param type modification type
022     */
023    protected void renderModificationType(ChangesetModificationType type) {
024        switch(type) {
025        case CREATED: setText(tr("Created")); break;
026        case UPDATED: setText(tr("Updated")); break;
027        case DELETED: setText(tr("Deleted")); break;
028        }
029        setToolTipText(null);
030    }
031
032    @Override
033    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
034            int row, int column) {
035        if (value == null)
036            return this;
037        reset();
038        renderColors(isSelected);
039        switch(column) {
040        case 0:
041            if (value instanceof ChangesetModificationType) {
042                renderModificationType((ChangesetModificationType) value);
043            }
044            break;
045        case 1:
046            if (value instanceof HistoryOsmPrimitive) {
047                renderId(((HistoryOsmPrimitive) value).getId());
048            }
049            break;
050        default:
051            /* do nothing */
052        }
053        return this;
054    }
055}