// 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<Changeset> {
/**
* Constructs a new {@code ChangesetListCellRenderer}.
*/
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) {
StringBuilder sb = new StringBuilder();
if (cs.isIncomplete()) {
sb.append(tr("{0} [incomplete]", cs.getId()));
} else {
String comment = cs.get("comment");
sb.append(cs.getId())
.append(" - ")
.append(cs.isOpen() ? tr("open") : tr("closed"));
if (comment != null) {
sb.append(" - '").append(comment).append('\'');
}
}
setText(sb.toString());
}
@Override
public Component getListCellRendererComponent(JList<? extends Changeset> list, Changeset cs, int index, boolean isSelected,
boolean cellHasFocus) {
renderColors(isSelected);
renderLabel(cs);
return this;
}
}