001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.conflict.pair.tags; 003 004import static org.openstreetmap.josm.tools.I18n.tr; 005 006import javax.swing.table.TableCellRenderer; 007 008import org.openstreetmap.josm.gui.conflict.ConflictColors; 009import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType; 010 011/** 012 * This {@link TableCellRenderer} displays the decision a user made regarding a tag conflict 013 */ 014public class MergedTableCellRenderer extends TagMergeTableCellRenderer { 015 protected void setBackgroundColor(TagMergeItem item, boolean isSelected) { 016 if (isSelected) { 017 setBackground(ConflictColors.BGCOLOR_SELECTED.get()); 018 return; 019 } 020 if (MergeDecisionType.KEEP_MINE == item.getMergeDecision()) { 021 setBackground(ConflictColors.BGCOLOR_COMBINED.get()); 022 } else if (MergeDecisionType.KEEP_THEIR == item.getMergeDecision()) { 023 setBackground(ConflictColors.BGCOLOR_COMBINED.get()); 024 } else if (MergeDecisionType.UNDECIDED == item.getMergeDecision()) { 025 setBackground(ConflictColors.BGCOLOR_UNDECIDED.get()); 026 } 027 } 028 029 @Override 030 protected void renderKey(TagMergeItem item, boolean isSelected) { 031 setBackgroundColor(item, isSelected); 032 if (MergeDecisionType.KEEP_MINE == item.getMergeDecision() && item.getMyTagValue() == null) { 033 setText(tr("<undefined>")); 034 setToolTipText(tr("The merged dataset will not include a tag with key {0}", item.getKey())); 035 } else if (MergeDecisionType.KEEP_THEIR == item.getMergeDecision() && item.getTheirTagValue() == null) { 036 setText(tr("<undefined>")); 037 setToolTipText(tr("The merged dataset will not include a tag with key {0}", item.getKey())); 038 } else if (MergeDecisionType.UNDECIDED == item.getMergeDecision()) { 039 setText(""); 040 } else { 041 setText(item.getKey()); 042 setToolTipText(item.getKey()); 043 } 044 } 045 046 @Override 047 protected void renderValue(TagMergeItem item, boolean isSelected) { 048 setBackgroundColor(item, isSelected); 049 if (MergeDecisionType.KEEP_MINE == item.getMergeDecision() && item.getMyTagValue() == null) { 050 setText(tr("<undefined>")); 051 setToolTipText(tr("The merged dataset will not include a tag with key {0}", item.getKey())); 052 } else if (MergeDecisionType.KEEP_THEIR == item.getMergeDecision() && item.getTheirTagValue() == null) { 053 setText(tr("<undefined>")); 054 setToolTipText(tr("The merged dataset will not include a tag with key {0}", item.getKey())); 055 } else if (MergeDecisionType.UNDECIDED == item.getMergeDecision()) { 056 setText(""); 057 } else { 058 if (MergeDecisionType.KEEP_MINE == item.getMergeDecision()) { 059 setText(item.getMyTagValue()); 060 setToolTipText(item.getMyTagValue()); 061 } else if (MergeDecisionType.KEEP_THEIR == item.getMergeDecision()) { 062 setText(item.getTheirTagValue()); 063 setToolTipText(item.getTheirTagValue()); 064 } 065 } 066 } 067}