001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.dialogs.changeset; 003 004import static org.openstreetmap.josm.tools.I18n.trc; 005 006import java.awt.Component; 007import java.awt.Font; 008 009import javax.swing.JTable; 010import javax.swing.UIManager; 011 012import org.openstreetmap.josm.data.osm.Changeset; 013 014/** 015 * The cell renderer for the changeset table 016 * @since 2689 017 */ 018public class ChangesetCacheTableCellRenderer extends AbstractCellRenderer { 019 020 protected void renderUploadComment(Changeset cs) { 021 String comment = cs.get("comment"); 022 if (comment == null || comment.trim().isEmpty()) { 023 setText(trc("changeset.upload-comment", "empty")); 024 setFont(UIManager.getFont("Table.font").deriveFont(Font.ITALIC)); 025 } else { 026 setText(comment); 027 setToolTipText(comment); 028 setFont(UIManager.getFont("Table.font")); 029 } 030 } 031 032 protected void renderOpen(Changeset cs) { 033 if (cs.isOpen()) { 034 setText(trc("changeset.state", "Open")); 035 } else { 036 setText(trc("changeset.state", "Closed")); 037 } 038 setToolTipText(null); 039 } 040 041 protected void renderDiscussions(Changeset cs) { 042 setText(Integer.toString(cs.getCommentsCount())); 043 setToolTipText(null); 044 } 045 046 @Override 047 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, 048 int row, int column) { 049 if (value == null) 050 return this; 051 reset(); 052 renderColors(isSelected); 053 Changeset cs = (Changeset) value; 054 switch(column) { 055 case 0: /* id */ renderId(cs.getId()); break; 056 case 1: /* upload comment */ renderUploadComment(cs); break; 057 case 2: /* open/closed */ renderOpen(cs); break; 058 case 3: /* user */ renderUser(cs.getUser()); break; 059 case 4: /* created at */ renderDate(cs.getCreatedAt()); break; 060 case 5: /* closed at */ renderDate(cs.getClosedAt()); break; 061 case 6: /* discussions */ renderDiscussions(cs); break; 062 } 063 return this; 064 } 065}