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} renders the theirs side of the tag conflict table.
013 */
014public class TheirTableCellRenderer extends TagMergeTableCellRenderer {
015
016    protected void setBackgroundColor(TagMergeItem item, boolean isSelected) {
017        if (isSelected) {
018            setBackground(ConflictColors.BGCOLOR_SELECTED.get());
019            return;
020        }
021        if (MergeDecisionType.KEEP_MINE.equals(item.getMergeDecision())) {
022            setBackground(ConflictColors.BGCOLOR_DROP.get());
023        } else if (MergeDecisionType.KEEP_THEIR.equals(item.getMergeDecision())) {
024            setBackground(ConflictColors.BGCOLOR_KEEP.get());
025        } else if (MergeDecisionType.UNDECIDED.equals(item.getMergeDecision())) {
026            setBackground(ConflictColors.BGCOLOR_UNDECIDED.get());
027        }
028    }
029
030    protected void setTextColor(TagMergeItem item) {
031        if (MergeDecisionType.KEEP_MINE.equals(item.getMergeDecision())) {
032            setForeground(ConflictColors.FGCOLOR_DROP.get());
033        } else if (MergeDecisionType.KEEP_THEIR.equals(item.getMergeDecision())) {
034            setForeground(ConflictColors.FGCOLOR_KEEP.get());
035        } else if (MergeDecisionType.UNDECIDED.equals(item.getMergeDecision())) {
036            setForeground(ConflictColors.FGCOLOR_UNDECIDED.get());
037        }
038    }
039
040    @Override
041    protected void renderKey(TagMergeItem item, boolean isSelected) {
042        setBackgroundColor(item, isSelected);
043        setTextColor(item);
044        if (item.getTheirTagValue() == null) {
045            setText(tr("<undefined>"));
046            setToolTipText(tr("Their dataset does not include a tag with key {0}", item.getKey()));
047        } else {
048            setText(item.getKey());
049            setToolTipText(item.getKey());
050        }
051    }
052
053    @Override
054    protected void renderValue(TagMergeItem item, boolean isSelected) {
055        setBackgroundColor(item, isSelected);
056        setTextColor(item);
057        if (item.getTheirTagValue() == null) {
058            setText(tr("<undefined>"));
059            setToolTipText(tr("Their dataset does not include a tag with key {0}", item.getKey()));
060        } else {
061            setText(item.getTheirTagValue());
062            setToolTipText(item.getTheirTagValue());
063        }
064    }
065}