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

Last change on this file since 2019 was 2017, checked in by Gubaer, 15 years ago

removed OptionPaneUtil
cleanup of deprecated Layer API
cleanup of deprecated APIs in OsmPrimitive and Way
cleanup of imports

File size: 4.2 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.history.RelationMember;
17import org.openstreetmap.josm.tools.ImageProvider;
18
19
20/**
21 * The {@see TableCellRenderer} for a list of relation members in {@see HistoryBrower}
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
43 protected void renderIcon(RelationMember member) {
44 if (member == null) {
45 setIcon(null);
46 } else {
47 setIcon(icons.get(member.getPrimitiveType()));
48 }
49 }
50
51 protected void renderRole( HistoryBrowserModel.RelationMemberTableModel model, RelationMember member, int row, boolean isSelected) {
52 String text = "";
53 Color bgColor = Color.WHITE;
54 if (member == null) {
55 bgColor = BGCOLOR_EMPTY_ROW;
56 } else {
57 text = member.getRole();
58 if (model.isSameInOppositeWay(row)) {
59 bgColor = Color.WHITE;
60 } else if (model.isInOppositeWay(row)) {
61 bgColor = BGCOLOR_IN_OPPOSITE;
62 } else {
63 bgColor = BGCOLOR_NOT_IN_OPPOSITE;
64 }
65 }
66 setText(text);
67 setToolTipText(text);
68 setBackground(bgColor);
69 }
70
71 protected void renderPrimitive( HistoryBrowserModel.RelationMemberTableModel model, RelationMember member, int row, boolean isSelected) {
72 String text = "";
73 Color bgColor = Color.WHITE;
74 if (member == null) {
75 bgColor = BGCOLOR_EMPTY_ROW;
76 } else {
77 text = "";
78 switch(member.getPrimitiveType()) {
79 case NODE: text = tr("Node {0}", member.getPrimitiveId()); break;
80 case WAY: text = tr("Way {0}", member.getPrimitiveId()); break;
81 case RELATION: text = tr("Relation {0}", member.getPrimitiveId()); break;
82 }
83 if (model.isSameInOppositeWay(row)) {
84 bgColor = Color.WHITE;
85 } else if (model.isInOppositeWay(row)) {
86 bgColor = BGCOLOR_IN_OPPOSITE;
87 } else {
88 bgColor = BGCOLOR_NOT_IN_OPPOSITE;
89 }
90 }
91 setText(text);
92 setToolTipText(text);
93 setBackground(bgColor);
94 }
95
96
97 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
98 int row, int column) {
99 HistoryBrowserModel.RelationMemberTableModel model = gteRelationMemberTableModel(table);
100 RelationMember member = (RelationMember)value;
101 renderIcon(member);
102 switch(column) {
103 case 0:
104 renderRole(model, member, row, isSelected);
105 break;
106 case 1:
107 renderPrimitive(model, member, row, isSelected);
108 break;
109 }
110
111 return this;
112 }
113
114 protected HistoryBrowserModel.RelationMemberTableModel gteRelationMemberTableModel(JTable table) {
115 return (HistoryBrowserModel.RelationMemberTableModel) table.getModel();
116 }
117}
Note: See TracBrowser for help on using the repository browser.