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}