source: josm/trunk/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java@ 9977

Last change on this file since 9977 was 9450, checked in by stoecker, 8 years ago

see #12191, only color code the changed part - possible improvement: with a bit more logic changed keys with unchanged values could be detected and added into one line instead of a replace/add pair (e.g. key-typo fixes)

  • Property svn:eol-style set to native
File size: 2.6 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.history;
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.gui.util.GuiHelper;
13
14/**
15 * The {@link TableCellRenderer} for a list of tags in {@link HistoryBrowser}
16 *
17 */
18public class TagTableCellRenderer extends JLabel implements TableCellRenderer {
19 public static final Color BGCOLOR_SELECTED = new Color(143, 170, 255);
20
21 /**
22 * Constructs a new {@code TagTableCellRenderer}.
23 */
24 public TagTableCellRenderer() {
25 setOpaque(true);
26 }
27
28 protected void setBackgroundReadable(String key, HistoryBrowserModel.TagTableModel model, boolean isSelected, boolean isValue) {
29 Color bgColor = UIManager.getColor("Table.background");
30 if (!model.hasTag(key) && model.isCurrentPointInTime()
31 || !model.oppositeHasTag(key) && model.isReferencePointInTime()) {
32 bgColor = TwoColumnDiff.Item.DiffItemType.DELETED.getColor();
33 } else if (!model.oppositeHasTag(key) && model.isCurrentPointInTime()
34 || !model.hasTag(key) && model.isReferencePointInTime()) {
35 bgColor = TwoColumnDiff.Item.DiffItemType.INSERTED.getColor();
36 } else if (isValue && model.hasTag(key) && model.oppositeHasTag(key) && !model.hasSameValueAsOpposite(key)) {
37 bgColor = TwoColumnDiff.Item.DiffItemType.CHANGED.getColor();
38 }
39 if (isSelected) {
40 bgColor = BGCOLOR_SELECTED;
41 }
42
43 GuiHelper.setBackgroundReadable(this, bgColor);
44 }
45
46 @Override
47 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
48 int row, int column) {
49
50 if (value == null)
51 return this;
52
53 String key = (String) value;
54 HistoryBrowserModel.TagTableModel model = getTagTableModel(table);
55
56 switch(column) {
57 case 0:
58 // the name column
59 setText(model.hasTag(key) ? key : "");
60 setToolTipText(getText());
61 setBackgroundReadable(key, model, isSelected, false);
62 break;
63 case 1:
64 // the value column
65 setText(model.hasTag(key) ? model.getValue(key) : "");
66 setToolTipText(getText());
67 setBackgroundReadable(key, model, isSelected, true);
68 break;
69 }
70
71 return this;
72 }
73
74 protected HistoryBrowserModel.TagTableModel getTagTableModel(JTable table) {
75 return (HistoryBrowserModel.TagTableModel) table.getModel();
76 }
77}
Note: See TracBrowser for help on using the repository browser.