source: josm/trunk/src/org/openstreetmap/josm/gui/history/VersionTableCellRenderer.java@ 2242

Last change on this file since 2242 was 1709, checked in by Gubaer, 15 years ago

new: history feature implemented

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.text.SimpleDateFormat;
9import java.util.HashMap;
10import java.util.logging.Logger;
11
12import javax.swing.ImageIcon;
13import javax.swing.JLabel;
14import javax.swing.JTable;
15import javax.swing.table.TableCellRenderer;
16
17import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
18import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
19import org.openstreetmap.josm.tools.ImageProvider;
20
21/**
22 * The {@see TableCellRenderer} for a list of versions in {@see HistoryBrower}
23 *
24 */
25public class VersionTableCellRenderer extends JLabel implements TableCellRenderer {
26
27 static private Logger logger = Logger.getLogger(VersionTableCellRenderer.class.getName());
28
29 public final static Color BGCOLOR_SELECTED = new Color(143,170,255);
30 public final static Color BGCOLOR_IS_REFERENCE_POINT = new Color(255,197,197);
31
32 protected HashMap<OsmPrimitiveType, ImageIcon> icons = null;
33
34 public VersionTableCellRenderer() {
35 loadIcons();
36 setOpaque(true);
37 }
38
39 protected void loadIcons() {
40 icons = new HashMap<OsmPrimitiveType, ImageIcon>();
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(HistoryOsmPrimitive primitive) {
47 ImageIcon icon = null;
48 if (primitive != null) {
49 icon = icons.get(primitive.getType());
50 }
51 setIcon(icon);
52 }
53
54 protected void renderText(HistoryOsmPrimitive primitive) {
55 // render lable text
56 //
57 StringBuilder sb = new StringBuilder();
58 if (primitive == null) {
59 sb.append("");
60 } else {
61 sb.append(tr("Version {0}", Long.toString(primitive.getVersion())));
62 }
63 setText(sb.toString());
64
65 // render tooltip text
66 //
67 sb = new StringBuilder();
68 if (primitive == null) {
69 sb.append("");
70 } else {
71 sb.append(
72 tr("Version {0} created on {1} by {2}",
73 Long.toString(primitive.getVersion()),
74 new SimpleDateFormat().format(primitive.getTimestamp()),
75 primitive.getUser()
76 )
77 );
78 }
79 setToolTipText(sb.toString());
80 }
81
82 protected void renderBackground(JTable table, int row, boolean isSelected) {
83 Color bgColor = Color.WHITE;
84 if (isSelected) {
85 bgColor = BGCOLOR_SELECTED;
86 } else if (getModel(table).isReferencePointInTime(row)) {
87 bgColor = BGCOLOR_IS_REFERENCE_POINT;
88 }
89 setBackground(bgColor);
90 }
91
92 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
93 int row, int column) {
94
95 HistoryOsmPrimitive primitive = (HistoryOsmPrimitive)value;
96 renderIcon(primitive);
97 renderText(primitive);
98 renderBackground(table, row, isSelected);
99 return this;
100 }
101
102 protected HistoryBrowserModel.VersionTableModel getModel(JTable table) {
103 return (HistoryBrowserModel.VersionTableModel)table.getModel();
104 }
105}
Note: See TracBrowser for help on using the repository browser.