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

Last change on this file was 19050, checked in by taylor.smock, 2 days ago

Revert most var changes from r19048, fix most new compile warnings and checkstyle issues

Also, document why various ErrorProne checks were originally disabled and fix
generic SonarLint issues.

  • Property svn:eol-style set to native
File size: 3.3 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;
7
8import javax.swing.JLabel;
9import javax.swing.JTable;
10import javax.swing.table.TableCellRenderer;
11
12import org.openstreetmap.josm.data.osm.RelationMemberData;
13import org.openstreetmap.josm.gui.history.TwoColumnDiff.Item;
14import org.openstreetmap.josm.gui.util.GuiHelper;
15import org.openstreetmap.josm.tools.ImageProvider;
16
17/**
18 * The {@link TableCellRenderer} for a list of relation members in {@link HistoryBrowser}.
19 * @since 1709
20 */
21public class RelationMemberListTableCellRenderer extends JLabel implements TableCellRenderer {
22
23 /**
24 * Constructs a new {@code RelationMemberListTableCellRenderer}.
25 */
26 public RelationMemberListTableCellRenderer() {
27 setOpaque(true);
28 }
29
30 protected void renderIcon(RelationMemberData member) {
31 if (member == null) {
32 setIcon(null);
33 } else {
34 setIcon(ImageProvider.get(member.getMemberType()));
35 }
36 }
37
38 protected void renderIndex(DiffTableModel model, int row) {
39 int rowNumber = model.getRowNumber(row);
40 setText(rowNumber > 0 ? Integer.toString(rowNumber) : "");
41 setToolTipText(null);
42 setHorizontalAlignment(CENTER);
43 renderIcon(null);
44 }
45
46 protected void renderRole(Item diffItem) {
47 RelationMemberData member = (RelationMemberData) diffItem.value;
48 String text = member == null ? "" : member.getRole();
49 setText(text);
50 setToolTipText(text);
51 setHorizontalAlignment(LEADING);
52 renderIcon(null);
53 }
54
55 protected void renderPrimitive(Item diffItem) {
56 String text = "";
57 RelationMemberData member = (RelationMemberData) diffItem.value;
58 if (member != null) {
59 switch (member.getMemberType()) {
60 case NODE: text = tr("Node {0}", member.getMemberId()); break;
61 case WAY: text = tr("Way {0}", member.getMemberId()); break;
62 case RELATION: text = tr("Relation {0}", member.getMemberId()); break;
63 default: throw new AssertionError();
64 }
65 }
66 setText(text);
67 setToolTipText(text);
68 setHorizontalAlignment(LEADING);
69 renderIcon((RelationMemberData) diffItem.value);
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 Item.DiffItemType type = member.state;
80 switch (column) {
81 case RelationMemberTableColumnModel.INDEX_COLUMN:
82 type = Item.DiffItemType.EMPTY;
83 renderIndex(((DiffTableModel) table.getModel()), row);
84 break;
85 case RelationMemberTableColumnModel.ROLE_COLUMN:
86 renderRole(member);
87 break;
88 case RelationMemberTableColumnModel.OBJECT_COLUMN:
89 renderPrimitive(member);
90 break;
91 default: // Do nothing
92 }
93
94 GuiHelper.setBackgroundReadable(this, type.getColor(isSelected, hasFocus));
95 return this;
96 }
97}
Note: See TracBrowser for help on using the repository browser.