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.Font;
007import java.text.DateFormat;
008import java.util.Date;
009
010import javax.swing.JComponent;
011import javax.swing.JLabel;
012import javax.swing.UIManager;
013import javax.swing.table.TableCellRenderer;
014
015import org.openstreetmap.josm.data.osm.User;
016import org.openstreetmap.josm.tools.date.DateUtils;
017
018/**
019 * Superclass of changeset cell renderers.
020 * @since 7715
021 */
022public abstract class AbstractCellRenderer extends JLabel implements TableCellRenderer {
023
024    protected void reset(JComponent c, boolean tableFont) {
025        c.setBackground(UIManager.getColor("Table.background"));
026        c.setForeground(UIManager.getColor("Table.foreground"));
027        if (tableFont) {
028            c.setFont(UIManager.getFont("Table.font"));
029        }
030        c.setToolTipText(null);
031        c.setOpaque(true);
032    }
033
034    protected void reset() {
035        reset(this, true);
036    }
037
038    protected void renderColors(JComponent c, boolean isSelected) {
039        if (isSelected) {
040            c.setBackground(UIManager.getColor("Table.selectionBackground"));
041            c.setForeground(UIManager.getColor("Table.selectionForeground"));
042        } else {
043            c.setBackground(UIManager.getColor("Table.background"));
044            c.setForeground(UIManager.getColor("Table.foreground"));
045        }
046    }
047
048    protected void renderColors(boolean isSelected) {
049        renderColors(this, isSelected);
050    }
051
052    protected void renderId(long id) {
053        setText(Long.toString(id));
054        setToolTipText(null);
055    }
056
057    protected void renderUser(User user) {
058        if (user == null || user.getName().trim().isEmpty()) {
059            setFont(UIManager.getFont("Table.font").deriveFont(Font.ITALIC));
060            setText(tr("anonymous"));
061        } else {
062            setFont(UIManager.getFont("Table.font"));
063            setText(user.getName());
064            setToolTipText(user.getName());
065        }
066    }
067
068    protected void renderDate(Date d) {
069        if (d == null) {
070            setText("");
071        } else {
072            setText(DateUtils.formatDateTime(d, DateFormat.SHORT, DateFormat.SHORT));
073        }
074        setToolTipText(null);
075    }
076}