// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.dialogs.changeset;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.awt.Component;
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;
public class ChangesetListCellRenderer extends JLabel implements ListCellRenderer{
public ChangesetListCellRenderer() {
setOpaque(true);
setIcon(ImageProvider.get("data", "changeset"));
}
protected void renderColors(boolean selected) {
if (selected) {
setForeground(UIManager.getColor("List.selectionForeground"));
setBackground(UIManager.getColor("List.selectionBackground"));
} else {
setForeground(UIManager.getColor("List.foreground"));
setBackground(UIManager.getColor("List.background"));
}
}
protected void renderLabel(Changeset cs) {
StringBuffer sb = new StringBuffer();
if (cs.isIncomplete()) {
sb.append(tr("{0} [incomplete]", cs.getId()));
} else {
String comment = cs.get("comment");
sb.append(cs.getId());
sb.append(" - ");
sb.append(cs.isOpen() ? tr("open") : tr("closed"));
if (comment != null) {
sb.append(" - ").append("'").append(comment).append("'");
}
}
setText(sb.toString());
}
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
boolean cellHasFocus) {
Changeset cs = (Changeset)value;
renderColors(isSelected);
renderLabel(cs);
return this;
}
}