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 org.openstreetmap.josm.gui.conflict.ConflictColors;
007import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
008
009public 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            }
060        }
061    }
062}