source: josm/trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java@ 11330

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

sonar - fix recent issues

  • Property svn:eol-style set to native
File size: 5.5 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.conflict.pair.relation;
3
4import java.awt.Color;
5import java.awt.Component;
6
7import javax.swing.BorderFactory;
8import javax.swing.JLabel;
9import javax.swing.JTable;
10import javax.swing.border.Border;
11import javax.swing.table.TableCellRenderer;
12
13import org.openstreetmap.josm.command.conflict.RelationMemberConflictResolverCommand;
14import org.openstreetmap.josm.data.osm.RelationMember;
15import org.openstreetmap.josm.gui.DefaultNameFormatter;
16import org.openstreetmap.josm.gui.conflict.ConflictColors;
17import org.openstreetmap.josm.gui.conflict.pair.AbstractListMergeModel;
18import org.openstreetmap.josm.tools.ImageProvider;
19
20/**
21 * This is the {@link TableCellRenderer} used in the tables of {@link RelationMemberMerger}.
22 * @since 1631
23 */
24public class RelationMemberTableCellRenderer extends JLabel implements TableCellRenderer {
25 private final transient Border rowNumberBorder;
26
27 /**
28 * constructor
29 */
30 public RelationMemberTableCellRenderer() {
31 setIcon(null);
32 setOpaque(true);
33 rowNumberBorder = BorderFactory.createEmptyBorder(0, 4, 0, 0);
34 }
35
36 /**
37 * reset the renderer
38 */
39 protected void reset() {
40 setBackground(ConflictColors.BGCOLOR.get());
41 setForeground(ConflictColors.FGCOLOR.get());
42 setBorder(null);
43 setIcon(null);
44 setToolTipText(null);
45 }
46
47 protected void renderBackground(AbstractListMergeModel<RelationMember, RelationMemberConflictResolverCommand>.EntriesTableModel model,
48 RelationMember member, int row, int col, boolean isSelected) {
49 Color bgc = ConflictColors.BGCOLOR.get();
50 if (col == 0) {
51 if (model.getListMergeModel().isFrozen()) {
52 bgc = ConflictColors.BGCOLOR_FROZEN.get();
53 } else if (model.isParticipatingInCurrentComparePair()) {
54 bgc = ConflictColors.BGCOLOR_PARTICIPATING_IN_COMPARISON.get();
55 } else if (isSelected) {
56 bgc = ConflictColors.BGCOLOR_SELECTED.get();
57 }
58 } else {
59 if (model.getListMergeModel().isFrozen()) {
60 bgc = ConflictColors.BGCOLOR_FROZEN.get();
61 } else if (member == null) {
62 bgc = ConflictColors.BGCOLOR_EMPTY_ROW.get();
63 } else if (isSelected) {
64 bgc = ConflictColors.BGCOLOR_SELECTED.get();
65 } else {
66 if (model.isParticipatingInCurrentComparePair()) {
67 if (model.isSamePositionInOppositeList(row)) {
68 bgc = ConflictColors.BGCOLOR_SAME_POSITION_IN_OPPOSITE.get();
69 } else if (model.isIncludedInOppositeList(row)) {
70 bgc = ConflictColors.BGCOLOR_IN_OPPOSITE.get();
71 } else {
72 bgc = ConflictColors.BGCOLOR_NOT_IN_OPPOSITE.get();
73 }
74 }
75 }
76 }
77 setBackground(bgc);
78 }
79
80 protected void renderForeground(AbstractListMergeModel<RelationMember, RelationMemberConflictResolverCommand>.EntriesTableModel model,
81 RelationMember member, int row, int col, boolean isSelected) {
82 Color fgc = ConflictColors.FGCOLOR.get();
83 if (col == 0 && model.isParticipatingInCurrentComparePair() && !model.getListMergeModel().isFrozen()) {
84 fgc = ConflictColors.FGCOLOR_PARTICIPATING_IN_COMPARISON.get();
85 }
86 setForeground(fgc);
87 }
88
89 protected void renderRole(RelationMember member) {
90 setText(member.getRole());
91 setToolTipText(member.getRole());
92 }
93
94 protected void renderPrimitive(RelationMember member) {
95 String displayName = member.getMember().getDisplayName(DefaultNameFormatter.getInstance());
96 setText(displayName);
97 setToolTipText(DefaultNameFormatter.getInstance().buildDefaultToolTip(member.getMember()));
98 setIcon(ImageProvider.get(member.getDisplayType()));
99 }
100
101 /**
102 * render the row id
103 * @param row the row index
104 */
105 protected void renderRowId(int row) {
106 setBorder(rowNumberBorder);
107 setText(Integer.toString(row+1));
108 }
109
110 protected void renderEmptyRow() {
111 setIcon(null);
112 setBackground(ConflictColors.BGCOLOR_EMPTY_ROW.get());
113 setText("");
114 }
115
116 @Override
117 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
118 int row, int column) {
119
120 RelationMember member = (RelationMember) value;
121 reset();
122 if (member == null) {
123 renderEmptyRow();
124 } else {
125 renderBackground(getModel(table), member, row, column, isSelected);
126 renderForeground(getModel(table), member, row, column, isSelected);
127 switch(column) {
128 case 0:
129 renderRowId(row);
130 break;
131 case 1:
132 renderRole(member);
133 break;
134 case 2:
135 renderPrimitive(member);
136 break;
137 default:
138 // should not happen
139 }
140 }
141 return this;
142 }
143
144 /**
145 * replies the model
146 * @param table the table
147 * @return the table model
148 */
149 @SuppressWarnings("unchecked")
150 protected AbstractListMergeModel<RelationMember, RelationMemberConflictResolverCommand>.EntriesTableModel getModel(JTable table) {
151 return (AbstractListMergeModel<RelationMember, RelationMemberConflictResolverCommand>.EntriesTableModel) table.getModel();
152 }
153}
Note: See TracBrowser for help on using the repository browser.