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

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

fix #12259 - adjust colors contrast in relation editor and history dialog

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