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

Last change on this file since 6267 was 6084, checked in by bastiK, 11 years ago

see #8902 - add missing @Override annotations (patch by shinigami)

  • Property svn:eol-style set to native
File size: 3.4 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.Color;
7import java.awt.Component;
8import java.util.HashMap;
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.tools.ImageProvider;
19
20/**
21 * The {@link TableCellRenderer} for a list of relation members in {@link HistoryBrowser}
22 *
23 *
24 */
25public class RelationMemberListTableCellRenderer extends JLabel implements TableCellRenderer {
26
27 public final static Color BGCOLOR_EMPTY_ROW = new Color(234,234,234);
28 public final static Color BGCOLOR_NOT_IN_OPPOSITE = new Color(255,197,197);
29 public final static Color BGCOLOR_IN_OPPOSITE = new Color(255,234,213);
30 public final static Color BGCOLOR_SELECTED = new Color(143,170,255);
31
32 private HashMap<OsmPrimitiveType, ImageIcon> icons;
33
34 public RelationMemberListTableCellRenderer(){
35 setOpaque(true);
36 icons = new HashMap<OsmPrimitiveType, ImageIcon>();
37 icons.put(OsmPrimitiveType.NODE, ImageProvider.get("data", "node"));
38 icons.put(OsmPrimitiveType.WAY, ImageProvider.get("data", "way"));
39 icons.put(OsmPrimitiveType.RELATION, ImageProvider.get("data", "relation"));
40 }
41
42 protected void renderIcon(RelationMemberData member) {
43 if (member == null) {
44 setIcon(null);
45 } else {
46 setIcon(icons.get(member.getMemberType()));
47 }
48 }
49
50 protected void renderRole(Item diffItem, int row, boolean isSelected) {
51 String text = "";
52 Color bgColor = diffItem.state.getColor();
53 RelationMemberData member = (RelationMemberData) diffItem.value;
54 text = member == null?"":member.getRole();
55 setText(text);
56 setToolTipText(text);
57 setBackground(bgColor);
58 }
59
60 protected void renderPrimitive(Item diffItem, int row, boolean isSelected) {
61 String text = "";
62 Color bgColor = diffItem.state.getColor();
63 RelationMemberData member = (RelationMemberData) diffItem.value;
64 text = "";
65 if (member != null) {
66 switch(member.getMemberType()) {
67 case NODE: text = tr("Node {0}", member.getMemberId()); break;
68 case WAY: text = tr("Way {0}", member.getMemberId()); break;
69 case RELATION: text = tr("Relation {0}", member.getMemberId()); break;
70 }
71 }
72 setText(text);
73 setToolTipText(text);
74 setBackground(bgColor);
75 }
76
77 // Warning: The model pads with null-rows to match the size of the opposite table. 'value' could be null
78 @Override
79 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
80 int row, int column) {
81
82 Item member = (TwoColumnDiff.Item)value;
83 renderIcon((RelationMemberData) member.value);
84 switch(column) {
85 case 0:
86 renderRole(member, row, isSelected);
87 break;
88 case 1:
89 renderPrimitive(member, row, isSelected);
90 break;
91 }
92
93 return this;
94 }
95
96 protected DiffTableModel getRelationMemberTableModel(JTable table) {
97 return (DiffTableModel) table.getModel();
98 }
99}
Note: See TracBrowser for help on using the repository browser.