source: josm/trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetListCellRenderer.java@ 12494

Last change on this file since 12494 was 12494, checked in by Don-vip, 7 years ago

add Changeset.getComment()

  • Property svn:eol-style set to native
File size: 1.9 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.dialogs.changeset;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.Component;
7
8import javax.swing.JLabel;
9import javax.swing.JList;
10import javax.swing.ListCellRenderer;
11import javax.swing.UIManager;
12
13import org.openstreetmap.josm.data.osm.Changeset;
14import org.openstreetmap.josm.tools.ImageProvider;
15
16/**
17 * This class renders the cells in a {@link ChangesetListModel}.
18 */
19public class ChangesetListCellRenderer extends JLabel implements ListCellRenderer<Changeset> {
20
21 /**
22 * Constructs a new {@code ChangesetListCellRenderer}.
23 */
24 public ChangesetListCellRenderer() {
25 setOpaque(true);
26 setIcon(ImageProvider.get("data", "changeset"));
27 }
28
29 protected void renderColors(boolean selected) {
30 if (selected) {
31 setForeground(UIManager.getColor("List.selectionForeground"));
32 setBackground(UIManager.getColor("List.selectionBackground"));
33 } else {
34 setForeground(UIManager.getColor("List.foreground"));
35 setBackground(UIManager.getColor("List.background"));
36 }
37 }
38
39 protected void renderLabel(Changeset cs) {
40 StringBuilder sb = new StringBuilder();
41 if (cs.isIncomplete()) {
42 sb.append(tr("{0} [incomplete]", cs.getId()));
43 } else {
44 String comment = cs.getComment();
45 sb.append(cs.getId())
46 .append(" - ")
47 .append(cs.isOpen() ? tr("open") : tr("closed"));
48 if (!comment.isEmpty()) {
49 sb.append(" - '").append(comment).append('\'');
50 }
51 }
52 setText(sb.toString());
53 }
54
55 @Override
56 public Component getListCellRendererComponent(JList<? extends Changeset> list, Changeset cs, int index, boolean isSelected,
57 boolean cellHasFocus) {
58 renderColors(isSelected);
59 renderLabel(cs);
60 return this;
61 }
62}
Note: See TracBrowser for help on using the repository browser.