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