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

Last change on this file since 6440 was 6316, checked in by Don-vip, 11 years ago

Sonar/FindBugs - Loose coupling

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