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

Last change on this file since 10670 was 10670, checked in by Don-vip, 8 years ago

see #12472 - fix "OperatorPrecedence" warnings

  • Property svn:eol-style set to native
File size: 3.2 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 /**
20 * The background color for a selected row that has the focus.
21 */
22 public static final Color BGCOLOR_SELECTED_FOCUS = new Color(0xff8faaff);
23 /**
24 * The background color for a selected row while the table is not focused.
25 */
26 public static final Color BGCOLOR_SELECTED = new Color(0xffafc2ff);
27
28 /**
29 * Constructs a new {@code TagTableCellRenderer}.
30 */
31 public TagTableCellRenderer() {
32 setOpaque(true);
33 }
34
35 protected void setBackgroundReadable(String key, HistoryBrowserModel.TagTableModel model, boolean isSelected, boolean hasFocus,
36 boolean isValue) {
37 Color bgColor = UIManager.getColor("Table.background");
38 if ((!model.hasTag(key) && model.isCurrentPointInTime())
39 || (!model.oppositeHasTag(key) && model.isReferencePointInTime())) {
40 bgColor = TwoColumnDiff.Item.DiffItemType.DELETED.getColor();
41 } else if ((!model.oppositeHasTag(key) && model.isCurrentPointInTime())
42 || (!model.hasTag(key) && model.isReferencePointInTime())) {
43 bgColor = TwoColumnDiff.Item.DiffItemType.INSERTED.getColor();
44 } else if (isValue && model.hasTag(key) && model.oppositeHasTag(key) && !model.hasSameValueAsOpposite(key)) {
45 bgColor = TwoColumnDiff.Item.DiffItemType.CHANGED.getColor();
46 }
47 if (isSelected) {
48 if (hasFocus) {
49 bgColor = BGCOLOR_SELECTED_FOCUS;
50 } else {
51 bgColor = BGCOLOR_SELECTED;
52 }
53 }
54
55 GuiHelper.setBackgroundReadable(this, bgColor);
56 }
57
58 @Override
59 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
60 int row, int column) {
61
62 if (value == null)
63 return this;
64
65 String key = (String) value;
66 HistoryBrowserModel.TagTableModel model = getTagTableModel(table);
67
68 String text = "";
69 if (model.hasTag(key)) {
70 switch(column) {
71 case TagTableColumnModel.COLUMN_KEY:
72 // the name column
73 text = key;
74 break;
75 case TagTableColumnModel.COLUMN_VALUE:
76 // the value column
77 text = model.getValue(key);
78 break;
79 default: // Do nothing
80 }
81 }
82
83 setText(text);
84 setToolTipText(text);
85 setBackgroundReadable(key, model, isSelected, table.hasFocus(), column == TagTableColumnModel.COLUMN_VALUE);
86 return this;
87 }
88
89 protected HistoryBrowserModel.TagTableModel getTagTableModel(JTable table) {
90 return (HistoryBrowserModel.TagTableModel) table.getModel();
91 }
92}
Note: See TracBrowser for help on using the repository browser.