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 }