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}