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

Last change on this file since 4310 was 4191, checked in by stoecker, 13 years ago

remove old debug stuff

  • Property svn:eol-style set to native
File size: 5.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.text.SimpleDateFormat;
9import java.util.HashMap;
10
11import javax.swing.ImageIcon;
12import javax.swing.JLabel;
13import javax.swing.JTable;
14import javax.swing.table.TableCellRenderer;
15
16import org.openstreetmap.josm.Main;
17import org.openstreetmap.josm.data.osm.OsmPrimitive;
18import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
19import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
20import org.openstreetmap.josm.gui.layer.OsmDataLayer;
21import org.openstreetmap.josm.tools.ImageProvider;
22
23/**
24 * The {@see TableCellRenderer} for a list of versions in {@see HistoryBrower}
25 *
26 */
27public class VersionTableCellRenderer extends JLabel implements TableCellRenderer {
28 public final static Color BGCOLOR_SELECTED = new Color(143,170,255);
29 public final static Color BGCOLOR_IS_REFERENCE_POINT = new Color(255,197,197);
30
31 protected HashMap<OsmPrimitiveType, ImageIcon> icons = null;
32
33 public VersionTableCellRenderer() {
34 loadIcons();
35 setOpaque(true);
36 }
37
38 protected void loadIcons() {
39 icons = new HashMap<OsmPrimitiveType, ImageIcon>();
40 icons.put(OsmPrimitiveType.NODE, ImageProvider.get("data", "node"));
41 icons.put(OsmPrimitiveType.WAY, ImageProvider.get("data", "way"));
42 icons.put(OsmPrimitiveType.RELATION, ImageProvider.get("data", "relation"));
43 }
44
45 protected void renderIcon(OsmPrimitiveType type) {
46 ImageIcon icon = type == null? null : icons.get(type);
47 setIcon(icon);
48 }
49
50 protected void renderText(HistoryOsmPrimitive primitive) {
51 // render label text
52 //
53 StringBuilder sb = new StringBuilder();
54 if (primitive == null) {
55 sb.append("");
56 } else {
57 String msg = tr(
58 "Version {0}, {1} (by {2})",
59 Long.toString(primitive.getVersion()),
60 new SimpleDateFormat().format(primitive.getTimestamp()),
61 primitive.getUser()
62 );
63 sb.append(msg);
64 }
65 setText(sb.toString());
66
67 // render tooltip text
68 //
69 sb = new StringBuilder();
70 if (primitive == null) {
71 sb.append("");
72 } else {
73 sb.append(
74 tr("Version {0} created on {1} by {2}",
75 Long.toString(primitive.getVersion()),
76 new SimpleDateFormat().format(primitive.getTimestamp()),
77 primitive.getUser()
78 )
79 );
80 }
81 setToolTipText(sb.toString());
82 }
83
84 protected OsmDataLayer getEditLayer() {
85 try {
86 return Main.map.mapView.getEditLayer();
87 } catch(NullPointerException e) {
88 return null;
89 }
90 }
91
92 protected void renderLatestText(OsmPrimitive primitive) {
93 // -- label text
94 StringBuffer sb = new StringBuffer();
95 if (primitive == null) {
96 setText("");
97 return;
98 }
99 if (primitive.isModified()) {
100 sb.append("*");
101 }
102 sb.append(tr("Version {0} in editor", primitive.getVersion()));
103 if (primitive.isDeleted()) {
104 sb.append(tr("[deleted]"));
105 }
106 setText(sb.toString());
107
108 // -- tooltip text
109 sb = new StringBuffer();
110 OsmDataLayer l = getEditLayer();
111
112 sb.append(
113 tr(
114 "Version {0} currently edited in data layer ''{1}''",
115 primitive.getId(),
116 l == null ? tr("unknown") : l.getName()
117 )
118 );
119 setToolTipText(sb.toString());
120 }
121
122 protected void renderBackground(JTable table, int row, boolean isSelected) {
123 Color bgColor = Color.WHITE;
124 if (isSelected) {
125 bgColor = BGCOLOR_SELECTED;
126 } else if (getModel(table).isReferencePointInTime(row)) {
127 bgColor = BGCOLOR_IS_REFERENCE_POINT;
128 }
129 setBackground(bgColor);
130 }
131
132 public void renderVersionFromHistory(HistoryOsmPrimitive primitive, JTable table, int row, boolean isSelected) {
133 renderIcon(primitive == null? null : primitive.getType());
134 renderText(primitive);
135 renderBackground(table, row, isSelected);
136 }
137
138 public void renderLatest(OsmPrimitive primitive, JTable table, int row, boolean isSelected) {
139 renderIcon(primitive.getType());
140 renderLatestText(getModel(table).getLatest());
141 renderBackground(table, row, isSelected);
142 }
143
144 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
145 int row, int column) {
146
147 if (value == null)
148 return this;
149
150 if (getModel(table).isLatest(row)) {
151 renderLatest(getModel(table).getLatest(),table, row, isSelected);
152 } else {
153 renderVersionFromHistory((HistoryOsmPrimitive)value, table, row, isSelected);
154 }
155 return this;
156 }
157
158 protected HistoryBrowserModel.VersionTableModel getModel(JTable table) {
159 return (HistoryBrowserModel.VersionTableModel)table.getModel();
160 }
161}
Note: See TracBrowser for help on using the repository browser.