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}