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