source: josm/trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java@ 6616

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

fix #4073 - colour coding of conflicting tags/memberships in way combining dialog

  • Property svn:eol-style set to native
File size: 4.7 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.conflict.tags;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.Component;
7
8import javax.swing.JTable;
9import javax.swing.table.DefaultTableCellRenderer;
10import javax.swing.table.DefaultTableColumnModel;
11import javax.swing.table.TableCellRenderer;
12import javax.swing.table.TableColumn;
13
14import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
15import org.openstreetmap.josm.gui.conflict.ConflictColors;
16import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
17
18public class RelationMemberConflictResolverColumnModel extends DefaultTableColumnModel {
19
20 private static Component setColors(Component comp, JTable table, boolean isSelected, int row) {
21 RelationMemberConflictResolverModel model = (RelationMemberConflictResolverModel) table.getModel();
22
23 if (!isSelected && comp != null) {
24 switch (model.getDecision(row).getDecision()) {
25 case UNDECIDED:
26 comp.setForeground(ConflictColors.FGCOLOR_UNDECIDED.get());
27 comp.setBackground(ConflictColors.BGCOLOR_UNDECIDED.get());
28 break;
29 case KEEP:
30 comp.setForeground(ConflictColors.FGCOLOR_MEMBER_KEEP.get());
31 comp.setBackground(ConflictColors.BGCOLOR_MEMBER_KEEP.get());
32 break;
33 case REMOVE:
34 comp.setForeground(ConflictColors.FGCOLOR_MEMBER_REMOVE.get());
35 comp.setBackground(ConflictColors.BGCOLOR_MEMBER_REMOVE.get());
36 break;
37 }
38 }
39 return comp;
40 }
41
42 protected void createColumns() {
43 final DefaultTableCellRenderer defaultTableCellRenderer = new DefaultTableCellRenderer();
44
45 OsmPrimitivRenderer primitiveRenderer = new OsmPrimitivRenderer() {
46 @Override
47 public Component getTableCellRendererComponent(JTable table,
48 Object value, boolean isSelected, boolean hasFocus, int row, int column) {
49 return setColors(super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column),
50 table, isSelected, row);
51 }
52 };
53
54 TableCellRenderer tableRenderer = new TableCellRenderer() {
55 @Override
56 public Component getTableCellRendererComponent(JTable table, Object value,
57 boolean isSelected, boolean hasFocus, int row, int column) {
58 return setColors(defaultTableCellRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column),
59 table, isSelected, row);
60 }
61 };
62
63 AutoCompletingTextField roleEditor = new AutoCompletingTextField();
64 RelationMemberConflictDecisionRenderer decisionRenderer = new RelationMemberConflictDecisionRenderer();
65 RelationMemberConflictDecisionEditor decisionEditor = new RelationMemberConflictDecisionEditor();
66
67 TableColumn col = null;
68
69 // column 0 - Relation
70 col = new TableColumn(0);
71 col.setHeaderValue("Relation");
72 col.setResizable(true);
73 col.setWidth(100);
74 col.setPreferredWidth(100);
75 col.setCellRenderer(primitiveRenderer);
76 addColumn(col);
77
78 // column 1 - Position
79 col = new TableColumn(1);
80 col.setHeaderValue(tr("Pos."));
81 col.setResizable(true);
82 col.setWidth(40);
83 col.setPreferredWidth(40);
84 col.setCellRenderer(tableRenderer);
85 col.setMaxWidth(50);
86 addColumn(col);
87
88 // column 2 - Role
89 col = new TableColumn(2);
90 col.setHeaderValue(tr("Role"));
91 col.setResizable(true);
92 col.setCellRenderer(tableRenderer);
93 col.setCellEditor(roleEditor);
94 col.setWidth(50);
95 col.setPreferredWidth(50);
96 addColumn(col);
97
98 // column 3 - Original Way
99 col = new TableColumn(3);
100 col.setHeaderValue(tr("Orig. Way"));
101 col.setResizable(true);
102 col.setCellRenderer(primitiveRenderer);
103 col.setWidth(100);
104 col.setPreferredWidth(100);
105 addColumn(col);
106
107 // column 4 - New Way
108 col = new TableColumn(4);
109 col.setHeaderValue(tr("Decision"));
110 col.setResizable(true);
111 col.setCellRenderer(decisionRenderer);
112 col.setCellEditor(decisionEditor);
113 col.setWidth(100);
114 col.setPreferredWidth(100);
115 col.setMaxWidth(100);
116 addColumn(col);
117 }
118
119 /**
120 * Constructs a new {@code RelationMemberConflictResolverColumnModel}.
121 */
122 public RelationMemberConflictResolverColumnModel() {
123 createColumns();
124 }
125}
Note: See TracBrowser for help on using the repository browser.