Index: /trunk/src/org/openstreetmap/josm/gui/conflict/ConflictColors.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/ConflictColors.java	(revision 6615)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/ConflictColors.java	(revision 6616)
@@ -25,6 +25,6 @@
     BGCOLOR_EMPTY_ROW(marktr("Conflict background: empty row"), new Color(234,234,234)),
     BGCOLOR_FROZEN(marktr("Conflict background: frozen"), new Color(234,234,234)),
-    BGCOLOR_PARTICIPAING_IN_COMPARISON(marktr("Conflict background: in comparison"), Color.black),
-    FGCOLOR_PARTICIPAING_IN_COMPARISON(marktr("Conflict foreground: in comparison"), Color.white),
+    BGCOLOR_PARTICIPATING_IN_COMPARISON(marktr("Conflict background: in comparison"), Color.black),
+    FGCOLOR_PARTICIPATING_IN_COMPARISON(marktr("Conflict foreground: in comparison"), Color.white),
     BGCOLOR(marktr("Conflict background"), Color.white),
     FGCOLOR(marktr("Conflict foreground"), Color.black),
@@ -32,5 +32,17 @@
     BGCOLOR_NOT_IN_OPPOSITE(marktr("Conflict background: not in opposite"), new Color(255,197,197)),
     BGCOLOR_IN_OPPOSITE(marktr("Conflict background: in opposite"), new Color(255,234,213)),
-    BGCOLOR_SAME_POSITION_IN_OPPOSITE(marktr("Conflict background: same position in opposite"), new Color(217,255,217));
+    BGCOLOR_SAME_POSITION_IN_OPPOSITE(marktr("Conflict background: same position in opposite"), new Color(217,255,217)),
+
+    BGCOLOR_TAG_KEEP_ONE (marktr("Conflict background: keep one tag"), new Color(217,255,217)),
+    FGCOLOR_TAG_KEEP_ONE (marktr("Conflict foreground: keep one tag"), Color.black),
+    BGCOLOR_TAG_KEEP_NONE(marktr("Conflict background: drop tag"), Color.lightGray),
+    FGCOLOR_TAG_KEEP_NONE(marktr("Conflict foreground: drop tag"), Color.black),
+    BGCOLOR_TAG_KEEP_ALL (marktr("Conflict background: keep all tags"), new Color(255,234,213)),
+    FGCOLOR_TAG_KEEP_ALL (marktr("Conflict foreground: keep all tags"), Color.black),
+
+    BGCOLOR_MEMBER_KEEP  (marktr("Conflict background: keep member"), new Color(217,255,217)),
+    FGCOLOR_MEMBER_KEEP  (marktr("Conflict foreground: keep member"), Color.black),
+    BGCOLOR_MEMBER_REMOVE(marktr("Conflict background: remove member"), Color.lightGray),
+    FGCOLOR_MEMBER_REMOVE(marktr("Conflict foreground: remove member"), Color.black);
 
     private final String name;
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java	(revision 6615)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java	(revision 6616)
@@ -146,6 +146,6 @@
             setBackground(ConflictColors.BGCOLOR_FROZEN.get());
         } else if (model.isParticipatingInCurrentComparePair()) {
-            setBackground(ConflictColors.BGCOLOR_PARTICIPAING_IN_COMPARISON.get());
-            setForeground(ConflictColors.FGCOLOR_PARTICIPAING_IN_COMPARISON.get());
+            setBackground(ConflictColors.BGCOLOR_PARTICIPATING_IN_COMPARISON.get());
+            setForeground(ConflictColors.FGCOLOR_PARTICIPATING_IN_COMPARISON.get());
         }
         setText(Integer.toString(row+1));
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java	(revision 6615)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java	(revision 6616)
@@ -87,5 +87,5 @@
                 bgc = ConflictColors.BGCOLOR_FROZEN.get();
             } else if (model.isParticipatingInCurrentComparePair()) {
-                bgc = ConflictColors.BGCOLOR_PARTICIPAING_IN_COMPARISON.get();
+                bgc = ConflictColors.BGCOLOR_PARTICIPATING_IN_COMPARISON.get();
             } else if (isSelected) {
                 bgc = ConflictColors.BGCOLOR_SELECTED.get();
@@ -116,5 +116,5 @@
         Color fgc = ConflictColors.FGCOLOR.get();
         if (col == 0 && model.isParticipatingInCurrentComparePair() && ! model.getListMergeModel().isFrozen()) {
-            fgc = ConflictColors.FGCOLOR_PARTICIPAING_IN_COMPARISON.get();
+            fgc = ConflictColors.FGCOLOR_PARTICIPATING_IN_COMPARISON.get();
         }
         setForeground(fgc);
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellRenderer.java	(revision 6615)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellRenderer.java	(revision 6616)
@@ -29,4 +29,7 @@
     private JosmComboBox cbDecisionRenderer;
 
+    /**
+     * Constructs a new {@code MultiValueCellRenderer}.
+     */
     public MultiValueCellRenderer() {
         setOpaque(true);
@@ -36,21 +39,34 @@
     }
 
-    protected void renderColors(MultiValueResolutionDecision decision, boolean selected) {
+    protected void renderColors(MultiValueResolutionDecision decision, boolean selected, boolean conflict) {
         if (selected) {
             setForeground(UIManager.getColor("Table.selectionForeground"));
             setBackground(UIManager.getColor("Table.selectionBackground"));
-        } else{
-            switch(decision.getDecisionType()) {
+        } else {
+            switch (decision.getDecisionType()) {
             case UNDECIDED:
-                setForeground(UIManager.getColor("Table.foreground"));
+                setForeground(ConflictColors.FGCOLOR_UNDECIDED.get());
                 setBackground(ConflictColors.BGCOLOR_UNDECIDED.get());
                 break;
             case KEEP_NONE:
-                setForeground(UIManager.getColor("Panel.foreground"));
-                setBackground(UIManager.getColor("Panel.background"));
+                setForeground(ConflictColors.FGCOLOR_TAG_KEEP_NONE.get());
+                setBackground(ConflictColors.BGCOLOR_TAG_KEEP_NONE.get());
                 break;
             default:
-                setForeground(UIManager.getColor("Table.foreground"));
-                setBackground(UIManager.getColor("Table.background"));
+                if (conflict) {
+                    switch (decision.getDecisionType()) {
+                    case KEEP_ONE:
+                        setForeground(ConflictColors.FGCOLOR_TAG_KEEP_ONE.get());
+                        setBackground(ConflictColors.BGCOLOR_TAG_KEEP_ONE.get());
+                        break;
+                    case KEEP_ALL:
+                        setForeground(ConflictColors.FGCOLOR_TAG_KEEP_ALL.get());
+                        setBackground(ConflictColors.BGCOLOR_TAG_KEEP_ALL.get());
+                        break;
+                    }
+                } else {
+                    setForeground(UIManager.getColor("Table.foreground"));
+                    setBackground(UIManager.getColor("Table.background"));
+                }
                 break;
             }
@@ -60,5 +76,5 @@
     protected void renderValue(MultiValueResolutionDecision decision) {
         model.removeAllElements();
-        switch(decision.getDecisionType()) {
+        switch (decision.getDecisionType()) {
         case UNDECIDED:
             model.addElement(tr("Choose a value"));
@@ -88,28 +104,23 @@
      */
     protected void renderToolTipText(MultiValueResolutionDecision decision) {
-        switch(decision.getDecisionType()) {
+        String toolTipText;
+        switch (decision.getDecisionType()) {
         case UNDECIDED:
-        {
-            String toolTipText = tr("Please decide which values to keep");
+            toolTipText = tr("Please decide which values to keep");
             setToolTipText(toolTipText);
             cbDecisionRenderer.setToolTipText(toolTipText);
             break;
-        }
         case KEEP_ONE:
-        {
-            String toolTipText = tr("Value ''{0}'' is going to be applied for key ''{1}''", decision.getChosenValue(), decision.getKey());
+            toolTipText = tr("Value ''{0}'' is going to be applied for key ''{1}''", decision.getChosenValue(), decision.getKey());
             setToolTipText(toolTipText);
             cbDecisionRenderer.setToolTipText(toolTipText);
             break;
-        }
         case KEEP_NONE:
-        {
-            String toolTipText = tr("The key ''{0}'' and all its values are going to be removed", decision.getKey());
+            toolTipText = tr("The key ''{0}'' and all its values are going to be removed", decision.getKey());
             setToolTipText(toolTipText);
             cbDecisionRenderer.setToolTipText(toolTipText);
             break;
-        }
         case KEEP_ALL:
-            String toolTipText = tr("All values joined as ''{0}'' are going to be applied for key ''{1}''", decision.getChosenValue(), decision.getKey());
+            toolTipText = tr("All values joined as ''{0}'' are going to be applied for key ''{1}''", decision.getChosenValue(), decision.getKey());
             setToolTipText(toolTipText);
             cbDecisionRenderer.setToolTipText(toolTipText);
@@ -125,6 +136,5 @@
 
     @Override
-    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
-            int row, int column) {
+    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
 
         reset();
@@ -133,5 +143,7 @@
 
         MultiValueResolutionDecision decision = (MultiValueResolutionDecision)value;
-        renderColors(decision,isSelected);
+        TagConflictResolverModel model = (TagConflictResolverModel) table.getModel();
+        boolean conflict = model.getKeysWithConflicts().contains(model.getKey(row));
+        renderColors(decision, isSelected, conflict);
         renderToolTipText(decision);
         switch(column) {
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionRenderer.java	(revision 6615)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionRenderer.java	(revision 6616)
@@ -14,5 +14,5 @@
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
 
-public class RelationMemberConflictDecisionRenderer extends JLabel implements TableCellRenderer, ListCellRenderer{
+public class RelationMemberConflictDecisionRenderer extends JLabel implements TableCellRenderer, ListCellRenderer {
 
     private JosmComboBox cbDecisionTypes;
@@ -32,4 +32,7 @@
     }
 
+    /**
+     * Constructs a new {@code RelationMemberConflictDecisionRenderer}.
+     */
     public RelationMemberConflictDecisionRenderer() {
         cbDecisionTypes = new JosmComboBox(RelationMemberConflictDecisionType.values());
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolver.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolver.java	(revision 6615)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolver.java	(revision 6616)
@@ -115,10 +115,16 @@
     }
 
+    /**
+     * Constructs a new {@code RelationMemberConflictResolver}.
+     */
     public RelationMemberConflictResolver() {
         build();
     }
 
+    /**
+     * Initializes for way combining.
+     */
     public void initForWayCombining() {
-        lblHeader.setText(tr("<html>The combined ways are members in one ore more relations. "
+        lblHeader.setText(tr("<html>The combined ways are members in one or more relations. "
                 + "Please decide whether you want to <strong>keep</strong> these memberships "
                 + "for the combined way or whether you want to <strong>remove</strong> them.<br>"
@@ -130,6 +136,9 @@
     }
 
+    /**
+     * Initializes for node merging.
+     */
     public void initForNodeMerging() {
-        lblHeader.setText(tr("<html>The merged nodes are members in one ore more relations. "
+        lblHeader.setText(tr("<html>The merged nodes are members in one or more relations. "
                 + "Please decide whether you want to <strong>keep</strong> these memberships "
                 + "for the target node or whether you want to <strong>remove</strong> them.<br>"
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java	(revision 6615)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java	(revision 6616)
@@ -4,14 +4,61 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.Component;
+
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableCellRenderer;
 import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.TableCellRenderer;
 import javax.swing.table.TableColumn;
 
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
+import org.openstreetmap.josm.gui.conflict.ConflictColors;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
 
-public class RelationMemberConflictResolverColumnModel extends DefaultTableColumnModel{
+public class RelationMemberConflictResolverColumnModel extends DefaultTableColumnModel {
 
+    private static Component setColors(Component comp, JTable table, boolean isSelected, int row) {
+        RelationMemberConflictResolverModel model = (RelationMemberConflictResolverModel) table.getModel();
+        
+        if (!isSelected && comp != null) {
+            switch (model.getDecision(row).getDecision()) {
+            case UNDECIDED:
+                comp.setForeground(ConflictColors.FGCOLOR_UNDECIDED.get());
+                comp.setBackground(ConflictColors.BGCOLOR_UNDECIDED.get());
+                break;
+            case KEEP:
+                comp.setForeground(ConflictColors.FGCOLOR_MEMBER_KEEP.get());
+                comp.setBackground(ConflictColors.BGCOLOR_MEMBER_KEEP.get());
+                break;
+            case REMOVE:
+                comp.setForeground(ConflictColors.FGCOLOR_MEMBER_REMOVE.get());
+                comp.setBackground(ConflictColors.BGCOLOR_MEMBER_REMOVE.get());
+                break;
+            }
+        }
+        return comp;
+    }
+    
     protected void createColumns() {
-        OsmPrimitivRenderer primitiveRenderer = new OsmPrimitivRenderer();
+        final DefaultTableCellRenderer defaultTableCellRenderer = new DefaultTableCellRenderer();
+        
+        OsmPrimitivRenderer primitiveRenderer = new OsmPrimitivRenderer() {
+            @Override
+            public Component getTableCellRendererComponent(JTable table,
+                    Object value, boolean isSelected, boolean hasFocus, int row, int column) {
+                return setColors(super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column),
+                        table, isSelected, row);
+            }
+        };
+        
+        TableCellRenderer tableRenderer = new TableCellRenderer() {
+            @Override
+            public Component getTableCellRendererComponent(JTable table, Object value,
+                    boolean isSelected, boolean hasFocus, int row, int column) {
+                return setColors(defaultTableCellRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column),
+                        table, isSelected, row);
+            }
+        };
+        
         AutoCompletingTextField roleEditor = new AutoCompletingTextField();
         RelationMemberConflictDecisionRenderer decisionRenderer = new RelationMemberConflictDecisionRenderer();
@@ -35,4 +82,5 @@
         col.setWidth(40);
         col.setPreferredWidth(40);
+        col.setCellRenderer(tableRenderer);
         col.setMaxWidth(50);
         addColumn(col);
@@ -42,4 +90,5 @@
         col.setHeaderValue(tr("Role"));
         col.setResizable(true);
+        col.setCellRenderer(tableRenderer);
         col.setCellEditor(roleEditor);
         col.setWidth(50);
@@ -55,4 +104,5 @@
         col.setPreferredWidth(100);
         addColumn(col);
+        
         // column 4 - New Way
         col = new TableColumn(4);
@@ -67,4 +117,7 @@
     }
 
+    /**
+     * Constructs a new {@code RelationMemberConflictResolverColumnModel}.
+     */
     public RelationMemberConflictResolverColumnModel() {
         createColumns();
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolver.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolver.java	(revision 6615)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolver.java	(revision 6616)
@@ -92,4 +92,7 @@
     }
 
+    /**
+     * Constructs a new {@code TagConflictResolver}.
+     */
     public TagConflictResolver() {
         this.model = new TagConflictResolverModel();
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverColumnModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverColumnModel.java	(revision 6615)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverColumnModel.java	(revision 6616)
@@ -40,4 +40,7 @@
     }
 
+    /**
+     * Constructs a new {@code TagConflictResolverColumnModel}.
+     */
     public TagConflictResolverColumnModel() {
         createColumns();
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java	(revision 6615)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java	(revision 6616)
@@ -137,4 +137,14 @@
         rebuild();
     }
+    
+    /**
+     * Returns the OSM key at the given row.
+     * @param row The table row
+     * @return the OSM key at the given row.
+     * @since 6616
+     */
+    public final String getKey(int row) {
+        return displayedKeys.get(row);
+    }
 
     @Override
@@ -146,5 +156,5 @@
     @Override
     public Object getValueAt(int row, int column) {
-        return decisions.get(displayedKeys.get(row));
+        return getDecision(row);
     }
 
@@ -156,5 +166,5 @@
     @Override
     public void setValueAt(Object value, int row, int column) {
-        MultiValueResolutionDecision decision = decisions.get(displayedKeys.get(row));
+        MultiValueResolutionDecision decision = getDecision(row);
         if (value instanceof String) {
             decision.keepOne((String)value);
@@ -214,6 +224,11 @@
     }
 
+    /**
+     * Returns the conflict resolution decision at the given row.
+     * @param row The table row
+     * @return the conflict resolution decision at the given row.
+     */
     public MultiValueResolutionDecision getDecision(int row) {
-        return decisions.get(displayedKeys.get(row));
+        return decisions.get(getKey(row));
     }
 
@@ -254,4 +269,12 @@
         rebuild();
     }
-
+    
+    /**
+     * Returns the set of keys in conflict.
+     * @return the set of keys in conflict.
+     * @since 6616
+     */
+    public final Set<String> getKeysWithConflicts() {
+        return new HashSet<String>(keysWithConflicts);
+    }
 }
