001 // License: GPL. For details, see LICENSE file. 002 package org.openstreetmap.josm.gui.dialogs.changeset; 003 004 import static org.openstreetmap.josm.tools.I18n.tr; 005 006 import java.awt.Component; 007 008 import javax.swing.JLabel; 009 import javax.swing.JList; 010 import javax.swing.ListCellRenderer; 011 import javax.swing.UIManager; 012 013 import org.openstreetmap.josm.data.osm.Changeset; 014 import org.openstreetmap.josm.tools.ImageProvider; 015 016 public class ChangesetListCellRenderer extends JLabel implements ListCellRenderer{ 017 018 public ChangesetListCellRenderer() { 019 setOpaque(true); 020 setIcon(ImageProvider.get("data", "changeset")); 021 } 022 023 protected void renderColors(boolean selected) { 024 if (selected) { 025 setForeground(UIManager.getColor("List.selectionForeground")); 026 setBackground(UIManager.getColor("List.selectionBackground")); 027 } else { 028 setForeground(UIManager.getColor("List.foreground")); 029 setBackground(UIManager.getColor("List.background")); 030 } 031 } 032 033 protected void renderLabel(Changeset cs) { 034 StringBuffer sb = new StringBuffer(); 035 if (cs.isIncomplete()) { 036 sb.append(tr("{0} [incomplete]", cs.getId())); 037 } else { 038 String comment = cs.get("comment"); 039 sb.append(cs.getId()); 040 sb.append(" - "); 041 sb.append(cs.isOpen() ? tr("open") : tr("closed")); 042 if (comment != null) { 043 sb.append(" - ").append("'").append(comment).append("'"); 044 } 045 } 046 setText(sb.toString()); 047 } 048 049 public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, 050 boolean cellHasFocus) { 051 Changeset cs = (Changeset)value; 052 renderColors(isSelected); 053 renderLabel(cs); 054 return this; 055 } 056 }