Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionEditor.java	(revision 15728)
+++ 	(revision )
@@ -1,80 +1,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.conflict.tags;
-
-import java.awt.Component;
-import java.util.EventObject;
-
-import javax.swing.JTable;
-import javax.swing.event.CellEditorListener;
-import javax.swing.table.TableCellEditor;
-
-import org.openstreetmap.josm.gui.util.CellEditorSupport;
-import org.openstreetmap.josm.gui.widgets.JosmComboBox;
-
-/**
- * Table cell editor for relation member conflict resolver table.
- * @since 2070
- */
-public class RelationMemberConflictDecisionEditor extends JosmComboBox<RelationMemberConflictDecisionType> implements TableCellEditor {
-
-    private final transient CellEditorSupport tableCellEditorSupport;
-    private RelationMemberConflictDecisionType originalValue;
-
-    /**
-     * Constructs a new {@code RelationMemberConflictDecisionEditor}.
-     */
-    public RelationMemberConflictDecisionEditor() {
-        super(RelationMemberConflictDecisionType.values());
-        setOpaque(true);
-        setRenderer(new RelationMemberConflictDecisionRenderer());
-        tableCellEditorSupport = new CellEditorSupport(this);
-    }
-
-    /* --------------------------------------------------------------------------------- */
-    /* TableCellEditor                                                                   */
-    /* --------------------------------------------------------------------------------- */
-    @Override
-    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
-        addActionListener(e -> stopCellEditing());
-        setSelectedItem(value);
-        this.originalValue = (RelationMemberConflictDecisionType) value;
-        return this;
-    }
-
-    @Override
-    public void addCellEditorListener(CellEditorListener l) {
-        tableCellEditorSupport.addCellEditorListener(l);
-    }
-
-    @Override
-    public void cancelCellEditing() {
-        setSelectedItem(originalValue);
-        tableCellEditorSupport.fireEditingCanceled();
-    }
-
-    @Override
-    public Object getCellEditorValue() {
-        return getSelectedItem();
-    }
-
-    @Override
-    public boolean isCellEditable(EventObject anEvent) {
-        return true;
-    }
-
-    @Override
-    public void removeCellEditorListener(CellEditorListener l) {
-        tableCellEditorSupport.removeCellEditorListener(l);
-    }
-
-    @Override
-    public boolean shouldSelectCell(EventObject anEvent) {
-        return true;
-    }
-
-    @Override
-    public boolean stopCellEditing() {
-        tableCellEditorSupport.fireEditingStopped();
-        return true;
-    }
-}
Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionRenderer.java	(revision 15728)
+++ 	(revision )
@@ -1,84 +1,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.conflict.tags;
-
-import java.awt.Component;
-import java.awt.Font;
-
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JTable;
-import javax.swing.ListCellRenderer;
-import javax.swing.UIManager;
-import javax.swing.table.TableCellRenderer;
-
-import org.openstreetmap.josm.gui.widgets.JosmComboBox;
-
-/**
- * This class renders {@link RelationMemberConflictDecisionType} entries of a list/table
- */
-public class RelationMemberConflictDecisionRenderer extends JLabel
-implements TableCellRenderer, ListCellRenderer<RelationMemberConflictDecisionType> {
-
-    private final JosmComboBox<RelationMemberConflictDecisionType> cbDecisionTypes;
-
-    protected void resetTableRenderer() {
-        setOpaque(true);
-        setFont(UIManager.getFont("Table.font"));
-        setBackground(UIManager.getColor("Table.background"));
-        setForeground(UIManager.getColor("Table.foreground"));
-    }
-
-    protected void resetListRenderer() {
-        setOpaque(true);
-        setFont(UIManager.getFont("ComboBox.font"));
-        setBackground(UIManager.getColor("ComboBox.background"));
-        setForeground(UIManager.getColor("ComboBox.foreground"));
-    }
-
-    /**
-     * Constructs a new {@code RelationMemberConflictDecisionRenderer}.
-     */
-    public RelationMemberConflictDecisionRenderer() {
-        cbDecisionTypes = new JosmComboBox<>(RelationMemberConflictDecisionType.values());
-        cbDecisionTypes.setRenderer(this);
-    }
-
-    /* --------------------------------------------------------------------------------- */
-    /* TableCellRenderer                                                                 */
-    /* --------------------------------------------------------------------------------- */
-    @Override
-    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
-            int row, int column) {
-        resetTableRenderer();
-        if (value == null)
-            return this;
-
-        if (isSelected) {
-            setBackground(UIManager.getColor("Table.selectionBackground"));
-            setForeground(UIManager.getColor("Table.selectionForeground"));
-        }
-        RelationMemberConflictDecisionType decision = (RelationMemberConflictDecisionType) value;
-        cbDecisionTypes.setSelectedItem(decision);
-        return cbDecisionTypes;
-    }
-
-    /* --------------------------------------------------------------------------------- */
-    /* ListCellRenderer                                                                  */
-    /* --------------------------------------------------------------------------------- */
-    @Override
-    public Component getListCellRendererComponent(
-            JList<? extends RelationMemberConflictDecisionType> list,
-            RelationMemberConflictDecisionType decision, int index, boolean isSelected,
-            boolean cellHasFocus) {
-        resetListRenderer();
-        if (isSelected) {
-            setBackground(UIManager.getColor("ComboBox.selectionBackground"));
-            setForeground(UIManager.getColor("ComboBox.selectionForeground"));
-        }
-        RelationMemberConflictDecisionType.prepareLabel(decision, this);
-        if (RelationMemberConflictDecisionType.UNDECIDED == decision) {
-            setFont(getFont().deriveFont(Font.ITALIC));
-        }
-        return this;
-    }
-}
Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionType.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionType.java	(revision 15728)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionType.java	(revision 15729)
@@ -3,6 +3,4 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
-
-import javax.swing.JLabel;
 
 /**
@@ -26,23 +24,25 @@
     UNDECIDED;
 
-    /**
-     * Sets the label according to the current decision.
-     * @param decision The decision
-     * @param label The label to set
-     */
-    public static void prepareLabel(RelationMemberConflictDecisionType decision, JLabel label) {
-        switch(decision) {
-        case REMOVE:
-            label.setText(tr("Remove"));
-            label.setToolTipText(tr("Remove this relation member from the relation"));
-            break;
-        case KEEP:
-            label.setText(tr("Keep"));
-            label.setToolTipText(tr("Keep this relation member for the target object"));
-            break;
-        case UNDECIDED:
-            label.setText(tr("Undecided"));
-            label.setToolTipText(tr("Not decided yet"));
-            break;
+    String getLabelText() {
+        switch (this) {
+            case REMOVE:
+                return tr("Remove");
+            case KEEP:
+                return tr("Keep");
+            case UNDECIDED:
+            default:
+                return tr("Undecided");
+        }
+    }
+
+    String getLabelToolTipText() {
+        switch (this) {
+            case REMOVE:
+                return tr("Remove this relation member from the relation");
+            case KEEP:
+                return tr("Keep this relation member for the target object");
+            case UNDECIDED:
+            default:
+                return tr("Not decided yet");
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java	(revision 15728)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java	(revision 15729)
@@ -5,4 +5,5 @@
 
 import java.awt.Component;
+import java.util.EnumSet;
 
 import javax.swing.JTable;
@@ -15,4 +16,5 @@
 import org.openstreetmap.josm.gui.conflict.ConflictColors;
 import org.openstreetmap.josm.gui.conflict.pair.relation.RelationMemberTable;
+import org.openstreetmap.josm.gui.history.VersionTable;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
 
@@ -73,6 +75,4 @@
 
         AutoCompletingTextField roleEditor = new AutoCompletingTextField(0, false);
-        RelationMemberConflictDecisionRenderer decisionRenderer = new RelationMemberConflictDecisionRenderer();
-        RelationMemberConflictDecisionEditor decisionEditor = new RelationMemberConflictDecisionEditor();
 
         // column 0 - Relation
@@ -114,14 +114,22 @@
         addColumn(col);
 
-        // column 4 - New Way
-        col = new TableColumn(4);
-        col.setHeaderValue(tr("Decision"));
-        col.setResizable(true);
-        col.setCellRenderer(decisionRenderer);
-        col.setCellEditor(decisionEditor);
-        col.setWidth(100);
-        col.setPreferredWidth(100);
-        col.setMaxWidth(100);
-        addColumn(col);
+        // column 4 - decision keep
+        // column 5 - decision remove
+        int index = 4;
+        for (RelationMemberConflictDecisionType type : EnumSet.of(
+                RelationMemberConflictDecisionType.KEEP, RelationMemberConflictDecisionType.REMOVE)) {
+            col = new TableColumn(index);
+            col.setHeaderValue(type.getLabelText());
+            col.setResizable(true);
+            final VersionTable.RadioButtonRenderer renderer = new VersionTable.RadioButtonRenderer();
+            renderer.setToolTipText(type.getLabelToolTipText());
+            col.setCellRenderer(renderer);
+            col.setCellEditor(new VersionTable.RadioButtonEditor());
+            col.setWidth(50);
+            col.setPreferredWidth(50);
+            col.setMaxWidth(50);
+            addColumn(col);
+            index++;
+        }
     }
 }
Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java	(revision 15728)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java	(revision 15729)
@@ -115,5 +115,6 @@
         case 2: /* role */ return d.getRole();
         case 3: /* original */ return d.getOriginalPrimitive();
-        case 4: /* decision */ return d.getDecision();
+        case 4: /* decision keep */ return RelationMemberConflictDecisionType.KEEP.equals(d.getDecision());
+        case 5: /* decision remove */ return RelationMemberConflictDecisionType.REMOVE.equals(d.getDecision());
         }
         return null;
@@ -127,7 +128,15 @@
             d.setRole((String) value);
             break;
-        case 4: /* decision */
-            d.decide((RelationMemberConflictDecisionType) value);
-            refresh(false);
+        case 4: /* decision keep */
+            if (Boolean.TRUE.equals(value)) {
+                d.decide(RelationMemberConflictDecisionType.KEEP);
+                refresh(false);
+            }
+            break;
+        case 5: /* decision remove */
+            if (Boolean.TRUE.equals(value)) {
+                d.decide(RelationMemberConflictDecisionType.REMOVE);
+                refresh(false);
+            }
             break;
         default: // Do nothing
