source: josm/trunk/src/org/openstreetmap/josm/gui/history/RelationMemberListTableCellRenderer.java@ 13041

Last change on this file since 13041 was 10216, checked in by Don-vip, 8 years ago

findbugs - SF_SWITCH_NO_DEFAULT + various sonar fixes

  • Property svn:eol-style set to native
File size: 3.1 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.history;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.Component;
7import java.util.EnumMap;
8import java.util.Map;
9
10import javax.swing.ImageIcon;
11import javax.swing.JLabel;
12import javax.swing.JTable;
13import javax.swing.table.TableCellRenderer;
14
15import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
16import org.openstreetmap.josm.data.osm.RelationMemberData;
17import org.openstreetmap.josm.gui.history.TwoColumnDiff.Item;
18import org.openstreetmap.josm.gui.util.GuiHelper;
19import org.openstreetmap.josm.tools.ImageProvider;
20
21/**
22 * The {@link TableCellRenderer} for a list of relation members in {@link HistoryBrowser}.
23 * @since 1709
24 */
25public class RelationMemberListTableCellRenderer extends JLabel implements TableCellRenderer {
26
27 private final transient Map<OsmPrimitiveType, ImageIcon> icons;
28
29 /**
30 * Constructs a new {@code RelationMemberListTableCellRenderer}.
31 */
32 public RelationMemberListTableCellRenderer() {
33 setOpaque(true);
34 icons = new EnumMap<>(OsmPrimitiveType.class);
35 icons.put(OsmPrimitiveType.NODE, ImageProvider.get("data", "node"));
36 icons.put(OsmPrimitiveType.WAY, ImageProvider.get("data", "way"));
37 icons.put(OsmPrimitiveType.RELATION, ImageProvider.get("data", "relation"));
38 }
39
40 protected void renderIcon(RelationMemberData member) {
41 if (member == null) {
42 setIcon(null);
43 } else {
44 setIcon(icons.get(member.getMemberType()));
45 }
46 }
47
48 protected void renderRole(Item diffItem) {
49 RelationMemberData member = (RelationMemberData) diffItem.value;
50 String text = member == null ? "" : member.getRole();
51 setText(text);
52 setToolTipText(text);
53 GuiHelper.setBackgroundReadable(this, diffItem.state.getColor());
54 }
55
56 protected void renderPrimitive(Item diffItem) {
57 String text = "";
58 RelationMemberData member = (RelationMemberData) diffItem.value;
59 if (member != null) {
60 switch(member.getMemberType()) {
61 case NODE: text = tr("Node {0}", member.getMemberId()); break;
62 case WAY: text = tr("Way {0}", member.getMemberId()); break;
63 case RELATION: text = tr("Relation {0}", member.getMemberId()); break;
64 default: throw new AssertionError();
65 }
66 }
67 setText(text);
68 setToolTipText(text);
69 GuiHelper.setBackgroundReadable(this, diffItem.state.getColor());
70 }
71
72 // Warning: The model pads with null-rows to match the size of the opposite table. 'value' could be null
73 @Override
74 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
75 int row, int column) {
76
77 if (value == null) return this;
78 Item member = (TwoColumnDiff.Item) value;
79 renderIcon((RelationMemberData) member.value);
80 switch(column) {
81 case 0:
82 renderRole(member);
83 break;
84 case 1:
85 renderPrimitive(member);
86 break;
87 default: // Do nothing
88 }
89
90 return this;
91 }
92}
Note: See TracBrowser for help on using the repository browser.