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 mine side of the tag conflict table.
013 */
014public class MineTableCellRenderer 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 == item.getMergeDecision()) {
022            setBackground(ConflictColors.BGCOLOR_KEEP.get());
023        } else if (MergeDecisionType.KEEP_THEIR == item.getMergeDecision()) {
024            setBackground(ConflictColors.BGCOLOR_DROP.get());
025        } else if (MergeDecisionType.UNDECIDED == item.getMergeDecision()) {
026            setBackground(ConflictColors.BGCOLOR_UNDECIDED.get());
027        }
028    }
029
030    protected void setTextColor(TagMergeItem item) {
031        if (MergeDecisionType.KEEP_MINE == item.getMergeDecision()) {
032            setForeground(ConflictColors.FGCOLOR_KEEP.get());
033        } else if (MergeDecisionType.KEEP_THEIR == item.getMergeDecision()) {
034            setForeground(ConflictColors.FGCOLOR_DROP.get());
035        } else if (MergeDecisionType.UNDECIDED == 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.getMyTagValue() == null) {
045            setText(tr("<undefined>"));
046            setToolTipText(tr("My 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.getMyTagValue() == null) {
058            setText(tr("<undefined>"));
059            setToolTipText(tr("My dataset does not include a tag with key {0}", item.getKey()));
060        } else {
061            setText(item.getMyTagValue());
062            setToolTipText(item.getMyTagValue());
063        }
064    }
065}