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}