source: josm/trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java@ 2700

Last change on this file since 2700 was 2563, checked in by Gubaer, 14 years ago

fixed #3400: relation editor: improvement to highlight an element
fixed #3873: Feature request: download selected elements in relation editor
New: Dbl-Click in member table to set the map selection to this member
New: Ctrl-Dbl-Clik in member table to add the member to the the map selection
New: Download selected incomplete members only

File size: 2.5 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.dialogs.relation;
3
4import java.awt.Color;
5import java.awt.Component;
6
7import javax.swing.JLabel;
8import javax.swing.JTable;
9import javax.swing.UIManager;
10import javax.swing.table.TableCellRenderer;
11
12import org.openstreetmap.josm.data.osm.OsmPrimitive;
13import org.openstreetmap.josm.gui.DefaultNameFormatter;
14import org.openstreetmap.josm.tools.ImageProvider;
15
16/**
17 * This is the {@see TableCellRenderer} used in {@see SelectionTable}.
18 *
19 */
20public class SelectionTableCellRenderer extends JLabel implements TableCellRenderer {
21 public final static Color BGCOLOR_DOUBLE_ENTRY = new Color(254,226,214);
22 public final static Color BGCOLOR_SINGLE_ENTRY = new Color(235,255,177);
23
24 /**
25 * reference to the member table model; required, in order to check whether a
26 * selected primitive is already used in the member list of the currently edited
27 * relation
28 */
29 private MemberTableModel model;
30
31 /**
32 * constructor
33 */
34 public SelectionTableCellRenderer() {
35 setIcon(null);
36 setOpaque(true);
37 }
38
39 /**
40 * reset the renderer
41 */
42 protected void reset() {
43 setBackground(UIManager.getColor("Table.background"));
44 setForeground(UIManager.getColor("Table.foreground"));
45 setBorder(null);
46 setIcon(null);
47 setToolTipText(null);
48 }
49
50 protected void renderBackground(OsmPrimitive primitive, boolean isSelected) {
51 Color bgc = UIManager.getColor("Table.background");
52 if (primitive != null && model != null && model.getNumMembersWithPrimitive(primitive) == 1) {
53 bgc = BGCOLOR_SINGLE_ENTRY;
54 } else if (primitive != null && model != null && model.getNumMembersWithPrimitive(primitive) > 1) {
55 bgc = BGCOLOR_DOUBLE_ENTRY;
56 }
57 setBackground(bgc);
58 }
59
60
61 protected void renderPrimitive(OsmPrimitive primitive) {
62 setIcon(ImageProvider.get(primitive.getPrimitiveId().getType()));
63 setText(primitive.getDisplayName(DefaultNameFormatter.getInstance()));
64 setToolTipText(DefaultNameFormatter.getInstance().buildDefaultToolTip(primitive));
65 }
66
67 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
68 int row, int column) {
69
70 reset();
71 renderBackground((OsmPrimitive)value, isSelected);
72 renderPrimitive((OsmPrimitive)value);
73 return this;
74 }
75
76 public void setMemberTableModel(MemberTableModel model) {
77 this.model = model;
78 }
79}
Note: See TracBrowser for help on using the repository browser.