// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.gui.io; import static org.openstreetmap.josm.tools.I18n.tr; import java.awt.Component; import java.text.SimpleDateFormat; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.ListCellRenderer; import javax.swing.UIManager; import org.openstreetmap.josm.data.osm.Changeset; import org.openstreetmap.josm.tools.ImageProvider; /** * A {@see ListCellRenderer} for the list of changesets in the upload dialog. * * */ public class ChangesetCellRenderer extends JLabel implements ListCellRenderer { private ImageIcon icon ; public ChangesetCellRenderer() { icon = ImageProvider.get("data", "changeset"); setOpaque(true); } protected String buildToolTipText(Changeset cs) { StringBuilder sb = new StringBuilder(); sb.append("<html>"); sb.append("<strong>").append(tr("Changeset id:")).append("</strong>").append(cs.getId()).append("<br>"); if (cs.getCreatedAt() != null) { SimpleDateFormat df =new SimpleDateFormat(); sb.append("<strong>").append(tr("Created at:")).append("</strong>").append(df.format(cs.getCreatedAt())).append("<br>"); } if (cs.get("comment") != null) { sb.append("<strong>").append(tr("Changeset comment:")).append("</strong>").append(cs.get("comment")).append("<br>"); } return sb.toString(); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { Changeset cs = (Changeset)value; if (isSelected) { setForeground(UIManager.getColor("List.selectionForeground")); setBackground(UIManager.getColor("List.selectionBackground")); } else { setForeground(UIManager.getColor("List.foreground")); setBackground(UIManager.getColor("List.background")); } if (cs != null) { setIcon(icon); StringBuffer sb = new StringBuffer(); if (cs.get("comment") != null) { sb.append(cs.getId()).append(" - ").append(cs.get("comment")); } else if (cs.get("name") != null) { sb.append(cs.getId()).append(" - ").append(cs.get("name")); } else { sb.append(tr("Changeset {0}", cs.getId())); } setText(sb.toString()); setToolTipText(buildToolTipText(cs)); } else { setText(tr("No open changeset")); } return this; } }