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

Last change on this file since 3083 was 3083, checked in by bastiK, 14 years ago

added svn:eol-style=native to source files

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