source: josm/trunk/src/org/openstreetmap/josm/gui/history/NodeListTableCellRenderer.java@ 17518

Last change on this file since 17518 was 17518, checked in by Don-vip, 3 years ago

spotbugs - SF_SWITCH_NO_DEFAULT

  • Property svn:eol-style set to native
File size: 2.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;
8
9import javax.swing.ImageIcon;
10import javax.swing.JLabel;
11import javax.swing.JTable;
12import javax.swing.table.TableCellRenderer;
13
14import org.openstreetmap.josm.gui.history.TwoColumnDiff.Item.DiffItemType;
15import org.openstreetmap.josm.gui.util.GuiHelper;
16import org.openstreetmap.josm.tools.ImageProvider;
17
18/**
19 * A {@link TableCellRenderer} for the {@link NodeListViewer}.
20 *
21 * Renders information about a node when comparing the node list of two
22 * historical versions of a way.
23 */
24public class NodeListTableCellRenderer extends JLabel implements TableCellRenderer {
25
26 /** Color of selected background */
27 public static final Color BGCOLOR_SELECTED = new Color(143, 170, 255);
28
29 private final ImageIcon nodeIcon;
30
31 /**
32 * Constructs a new {@code NodeListTableCellRenderer}.
33 */
34 public NodeListTableCellRenderer() {
35 setOpaque(true);
36 nodeIcon = ImageProvider.get("data", "node");
37 setIcon(nodeIcon);
38 }
39
40 protected void renderIndex(DiffTableModel model, int row) {
41 int rowNumber = model.getRowNumber(row);
42 setText(rowNumber > 0 ? Integer.toString(rowNumber) : "");
43 setToolTipText(null);
44 setHorizontalAlignment(CENTER);
45 setIcon(null);
46 }
47
48 protected void renderNode(TwoColumnDiff.Item item) {
49 String text = "";
50 setIcon(nodeIcon);
51 if (item.value != null) {
52 text = tr("Node {0}", item.value.toString());
53 }
54 if (item.state == DiffItemType.EMPTY) {
55 text = "";
56 setIcon(null);
57 }
58 setText(text);
59 setHorizontalAlignment(LEFT);
60 }
61
62 // Warning: The model pads with null-rows to match the size of the opposite table. 'value' could be null
63 @Override
64 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
65 int row, int column) {
66 if (value == null) return this;
67 TwoColumnDiff.Item item = (TwoColumnDiff.Item) value;
68 GuiHelper.setBackgroundReadable(this, item.state.getColor(isSelected, hasFocus));
69 if (column == NodeListTableColumnModel.INDEX_COLUMN) {
70 renderIndex((DiffTableModel) table.getModel(), row);
71 } else if (column == NodeListTableColumnModel.NODE_COLUMN) {
72 renderNode(item);
73 }
74 return this;
75 }
76}
Note: See TracBrowser for help on using the repository browser.