Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java	(revision 2325)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java	(revision 2326)
@@ -2,4 +2,5 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 
 import java.awt.BorderLayout;
@@ -34,4 +35,6 @@
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.SideButton;
+import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
+import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.WindowGeometry;
@@ -89,4 +92,9 @@
     private JPanel pnlButtons;
     private OsmPrimitive targetPrimitive;
+    
+    /** the private help action */
+    private ContextSensitiveHelpAction helpAction;
+    /** the apply button */
+    private SideButton btnApply;
 
     /**
@@ -109,4 +117,9 @@
         this.targetPrimitive = primitive;
         updateTitle();
+        if (primitive instanceof Way) {
+            pnlRelationMemberConflictResolver.initForWayCombining();            
+        } else if (primitive instanceof Node) {
+            pnlRelationMemberConflictResolver.initForNodeMerging();
+        }
     }
 
@@ -123,11 +136,15 @@
                     )
             );
+            helpAction.setHelpTopic(ht("/Action/CombineWay#ResolvingConflicts"));
+            getRootPane().putClientProperty("help", ht("/Action/CombineWay#ResolvingConflicts"));
         } else if (targetPrimitive instanceof Node) {
             setTitle(
                     tr(
-                            "Conflicts when merging nodes - merged node is ''{0}''",
+                            "Conflicts when merging nodes - target node is ''{0}''",
                             targetPrimitive.getDisplayName(DefaultNameFormatter.getInstance())
                     )
             );
+            helpAction.setHelpTopic(ht("/Action/MergeNodes#ResolvingConflicts"));
+            getRootPane().putClientProperty("help", ht("/Action/MergeNodes#ResolvingConflicts"));
         }
     }
@@ -141,4 +158,5 @@
         getContentPane().add(pnlButtons = buildButtonPanel(), BorderLayout.SOUTH);
         addWindowListener(new AdjustDividerLocationAction());
+        HelpUtil.setHelpContext(getRootPane(), ht("/"));
     }
 
@@ -161,9 +179,15 @@
         pnlTagConflictResolver.getModel().addPropertyChangeListener(applyAction);
         pnlRelationMemberConflictResolver.getModel().addPropertyChangeListener(applyAction);
-        pnl.add(new SideButton(applyAction));
+        btnApply = new SideButton(applyAction);
+        btnApply.setFocusable(true);
+        pnl.add(btnApply);
 
         // -- cancel button
         CancelAction cancelAction = new CancelAction();
         pnl.add(new SideButton(cancelAction));
+
+        // -- help button
+        helpAction = new ContextSensitiveHelpAction();
+        pnl.add(new SideButton(helpAction));
 
         return pnl;
@@ -242,5 +266,5 @@
         RelationMemberConflictResolverModel model = getRelationMemberConflictResolverModel();
         for (int i=0; i < model.getNumDecisions(); i++) {
-            model.getDecision(i).decide(RelationMemberConflictDecisionType.REPLACE);
+            model.getDecision(i).decide(RelationMemberConflictDecisionType.KEEP);
         }
         model.refresh();
@@ -312,4 +336,5 @@
             ).applySafe(this);
             setCancelled(false);
+            btnApply.requestFocusInWindow();
         } else {
             new WindowGeometry(this).remember(getClass().getName() + ".geometry");
Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionEditor.java	(revision 2325)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionEditor.java	(revision 2326)
@@ -3,6 +3,4 @@
 
 import java.awt.Component;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
 import java.util.EventObject;
 
@@ -20,5 +18,5 @@
         setOpaque(true);
         DefaultComboBoxModel model = new DefaultComboBoxModel();
-        model.addElement(RelationMemberConflictDecisionType.REPLACE);
+        model.addElement(RelationMemberConflictDecisionType.KEEP);
         model.addElement(RelationMemberConflictDecisionType.REMOVE);
         model.addElement(RelationMemberConflictDecisionType.UNDECIDED);
Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionRenderer.java	(revision 2325)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionRenderer.java	(revision 2326)
@@ -5,4 +5,6 @@
 import java.awt.Font;
 
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JComboBox;
 import javax.swing.JLabel;
 import javax.swing.JList;
@@ -14,4 +16,6 @@
 public class RelationMemberConflictDecisionRenderer extends JLabel implements TableCellRenderer, ListCellRenderer{
 
+    private JComboBox cbDecisionTypes; 
+    
     protected void resetTableRenderer() {
         setOpaque(true);
@@ -28,4 +32,12 @@
     }
 
+    public RelationMemberConflictDecisionRenderer() {
+        DefaultComboBoxModel model = new DefaultComboBoxModel();
+        cbDecisionTypes = new JComboBox(model);
+        model.addElement(RelationMemberConflictDecisionType.KEEP);
+        model.addElement(RelationMemberConflictDecisionType.REMOVE);
+        model.addElement(RelationMemberConflictDecisionType.UNDECIDED);
+        cbDecisionTypes.setRenderer(this);
+    }
 
     /* --------------------------------------------------------------------------------- */
@@ -40,6 +52,6 @@
         }
         RelationMemberConflictDecisionType decision = (RelationMemberConflictDecisionType)value;
-        RelationMemberConflictDecisionType.prepareLabel(decision, this);
-        return this;
+        cbDecisionTypes.setSelectedItem(decision);
+        return cbDecisionTypes;
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionType.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionType.java	(revision 2325)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionType.java	(revision 2326)
@@ -3,6 +3,4 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
-
-import java.awt.Font;
 
 import javax.swing.DefaultComboBoxModel;
@@ -12,8 +10,8 @@
 public enum RelationMemberConflictDecisionType {
     /**
-     * replace the respective relation member with a member referring
-     * to the new primitive
+     * keep the respective relation member for the target primitive (the target node
+     * in a node merge operation or the target way in a combine way operation)
      */
-    REPLACE,
+    KEEP,
 
     /**
@@ -34,7 +32,7 @@
             label.setToolTipText(tr("Remove this relation member from the relation"));
             break;
-        case REPLACE:
-            label.setText(tr("Replace"));
-            label.setToolTipText(tr("Replace the way this member refers to with the combined way"));
+        case KEEP:
+            label.setText(tr("Keep"));
+            label.setToolTipText(tr("Keep this relation member for the target object"));
             break;
         case UNDECIDED:
@@ -44,25 +42,3 @@
         }
     }
-
-    static public void prepareComboBox(RelationMemberConflictDecisionType decision, JComboBox comboBox) {
-        DefaultComboBoxModel model = (DefaultComboBoxModel)comboBox.getModel();
-        model.removeAllElements();
-        switch(decision) {
-        case REMOVE:
-            model.addElement(tr("Remove"));
-            comboBox.setToolTipText(tr("Remove this relation member from the relation"));
-            comboBox.setSelectedIndex(0);
-            break;
-        case REPLACE:
-            model.addElement(tr("Replace"));
-            comboBox.setToolTipText(tr("Replace the way this member refers to with the combined way"));
-            comboBox.setSelectedIndex(0);
-            break;
-        case UNDECIDED:
-            model.addElement(tr("Undecided"));
-            comboBox.setToolTipText(tr("Not decided yet"));
-            comboBox.setSelectedIndex(0);
-            break;
-        }
-    }
 }
Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolver.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolver.java	(revision 2325)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolver.java	(revision 2326)
@@ -7,5 +7,10 @@
 import java.awt.BorderLayout;
 import java.awt.FlowLayout;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
 import java.awt.event.ActionEvent;
+import java.awt.event.FocusAdapter;
+import java.awt.event.FocusEvent;
 import java.util.Collection;
 
@@ -27,4 +32,5 @@
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.JMultilineLabel;
 import org.openstreetmap.josm.gui.tagging.AutoCompletingTextField;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionCache;
@@ -40,14 +46,32 @@
     private RelationMemberConflictResolverModel model;
     private RelationMemberConflictResolverTable tblResolver;
+    private JMultilineLabel lblHeader;
 
     protected void build() {
-        setLayout(new BorderLayout());
-        model=new RelationMemberConflictResolverModel();
-        add (new JScrollPane(tblResolver = new RelationMemberConflictResolverTable(model)), BorderLayout.CENTER);
-        JPanel pnl = new JPanel();
+        setLayout(new GridBagLayout());
+        JPanel pnl = new JPanel();        
+        pnl.setLayout(new BorderLayout());
+        pnl.add(lblHeader = new JMultilineLabel(""));
+        GridBagConstraints gc = new GridBagConstraints();
+        gc.fill = GridBagConstraints.HORIZONTAL;
+        gc.weighty = 0.0;
+        gc.weightx = 1.0;
+        gc.insets = new Insets(5,5,5,5);
+        add(pnl, gc);
+        model = new RelationMemberConflictResolverModel();
+        
+        gc.gridy = 1;
+        gc.weighty = 1.0;
+        gc.fill = GridBagConstraints.BOTH;
+        gc.insets = new Insets(0,0,0,0);
+        add(new JScrollPane(tblResolver = new RelationMemberConflictResolverTable(model)), gc);
+        pnl = new JPanel();
         pnl.setLayout(new BoxLayout(pnl, BoxLayout.Y_AXIS));
         pnl.add(buildRoleEditingPanel());
         pnl.add(buildTagRelationsPanel());
-        add(pnl, BorderLayout.SOUTH);
+        gc.gridy = 2;
+        gc.weighty = 0.0;
+        gc.fill = GridBagConstraints.HORIZONTAL;
+        add(pnl,gc);
     }
 
@@ -57,5 +81,15 @@
         pnl.add(new JLabel(tr("Role:")));
         pnl.add(tfRole = new AutoCompletingTextField(10));
+        tfRole.setToolTipText(tr("Enter a role for all relation memberships"));
         pnl.add(new JButton(new ApplyRoleAction()));
+        tfRole.addActionListener(new ApplyRoleAction());
+        tfRole.addFocusListener(
+                new FocusAdapter() {
+                    @Override
+                    public void focusGained(FocusEvent e) {
+                        tfRole.selectAll();
+                    }                    
+                }
+        );
         return pnl;
     }
@@ -64,11 +98,16 @@
         JPanel pnl = new JPanel();
         pnl.setLayout(new FlowLayout(FlowLayout.LEFT));
-        cbTagRelations = new JCheckBox(tr("Tag modified relations with   "));
+        cbTagRelations = new JCheckBox(tr("Tag modified relations with "));
         cbTagRelations.addChangeListener(new ToggleTagRelationsAction());
+        cbTagRelations.setToolTipText(
+                tr("<html>Select to enable entering a tag which will be applied<br>"
+                        + "to all modified relations.</html>"));
         pnl.add(cbTagRelations);
-        pnl.add(new JLabel(trc("tag","Key:")));
+        pnl.add(new JLabel(trc("tag", "Key:")));        
         pnl.add(tfKey = new AutoCompletingTextField(10));
+        tfKey.setToolTipText(tr("<html>Enter a tag key, i.e. <strong><tt>fixme</tt></strong></html>"));
         pnl.add(new JLabel(tr("Value:")));
         pnl.add(tfValue = new AutoCompletingTextField(10));
+        tfValue.setToolTipText(tr("<html>Enter a tag value, i.e. <strong><tt>check members</tt></strong></html>"));
         cbTagRelations.setSelected(false);
         tfKey.setEnabled(false);
@@ -80,4 +119,22 @@
         build();
     }
+    
+    public void initForWayCombining() {
+       lblHeader.setText(tr("<html>The combined ways are members in one ore more relations. "
+                + "Please decide whether your want to <strong>keep</strong> these memberships "
+                + "for the combined way or whether you want to <strong>remove</strong> them.<br>" 
+                + "The default is to <strong>keep</strong> them: the combined way will take the place of the original way in the membership."
+                        + "</html>"));
+       invalidate();
+    }
+
+    public void initForNodeMerging() {
+        lblHeader.setText(tr("<html>The merged nodes are members in one ore more relations. "
+                 + "Please decide whether your want to <strong>keep</strong> these memberships "
+                 + "for the target node or whether you want to <strong>remove</strong> them.<br>" 
+                 + "The default is to <strong>keep</strong> them: the target node will take the place of the original node in the membership."
+                         + "</html>"));
+        invalidate();
+     }
 
     class ApplyRoleAction extends AbstractAction {
@@ -95,9 +152,11 @@
     class ToggleTagRelationsAction implements ChangeListener {
         public void stateChanged(ChangeEvent e) {
-            ButtonModel buttonModel = ((AbstractButton)e.getSource()).getModel();
+            ButtonModel buttonModel = ((AbstractButton) e.getSource()).getModel();
             tfKey.setEnabled(buttonModel.isSelected());
             tfValue.setEnabled(buttonModel.isSelected());
-            tfKey.setBackground(buttonModel.isSelected() ? UIManager.getColor("TextField.background") : UIManager.getColor("Panel.background"));
-            tfValue.setBackground(buttonModel.isSelected() ? UIManager.getColor("TextField.background") : UIManager.getColor("Panel.background"));
+            tfKey.setBackground(buttonModel.isSelected() ? UIManager.getColor("TextField.background") : UIManager
+                    .getColor("Panel.background"));
+            tfValue.setBackground(buttonModel.isSelected() ? UIManager.getColor("TextField.background") : UIManager
+                    .getColor("Panel.background"));
         }
     }
@@ -108,8 +167,12 @@
 
     public Command buildTagApplyCommands(Collection<? extends OsmPrimitive> primitives) {
-        if (! cbTagRelations.isSelected()) return null;
-        if (tfKey.getText().trim().equals("")) return null;
-        if (tfValue.getText().trim().equals("")) return null;
-        if (primitives == null || primitives.isEmpty()) return null;
+        if (!cbTagRelations.isSelected())
+            return null;
+        if (tfKey.getText().trim().equals(""))
+            return null;
+        if (tfValue.getText().trim().equals(""))
+            return null;
+        if (primitives == null || primitives.isEmpty())
+            return null;
         return new ChangePropertyCommand(primitives, tfKey.getText(), tfValue.getText());
     }
@@ -120,10 +183,11 @@
         AutoCompletionCache.getCacheForLayer(Main.main.getEditLayer()).populateWithMemberRoles(acList);
         tfRole.setAutoCompletionList(acList);
-        AutoCompletingTextField editor = (AutoCompletingTextField)tblResolver.getColumnModel().getColumn(2).getCellEditor();
+        AutoCompletingTextField editor = (AutoCompletingTextField) tblResolver.getColumnModel().getColumn(2)
+                .getCellEditor();
         if (editor != null) {
             editor.setAutoCompletionList(acList);
         }
         AutoCompletionList acList2 = new AutoCompletionList();
-        AutoCompletionCache.getCacheForLayer(Main.main.getEditLayer()).populateWithKeys(acList2, false /* don't append */);
+        AutoCompletionCache.getCacheForLayer(Main.main.getEditLayer()).populateWithKeys(acList2, false /* don'tappend */);
         tfKey.setAutoCompletionList(acList2);
     }
Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java	(revision 2325)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java	(revision 2326)
@@ -234,5 +234,5 @@
             } else {
                 switch(decision.getDecision()) {
-                    case REPLACE:
+                    case KEEP:
                         rmNew = new RelationMember(decision.getRole(),newPrimitive);
                         modifiedRelation.addMember(rmNew);
@@ -280,5 +280,5 @@
             switch(decision.getDecision()) {
                 case REMOVE: return true;
-                case REPLACE:
+                case KEEP:
                     if (!relation.getMember(i).getRole().equals(decision.getRole()))
                         return true;
Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverTable.java	(revision 2325)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverTable.java	(revision 2326)
@@ -6,4 +6,5 @@
 
 import javax.swing.AbstractAction;
+import javax.swing.JComboBox;
 import javax.swing.JComponent;
 import javax.swing.JTable;
@@ -37,4 +38,6 @@
         getActionMap().put("selectNextColumnCell", selectNextColumnCellAction);
         getActionMap().put("selectPreviousColumnCell", selectPreviousColumnCellAction);
+        
+        setRowHeight((int)new JComboBox().getPreferredSize().getHeight());
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/help/ContextSensitiveHelpAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/help/ContextSensitiveHelpAction.java	(revision 2325)
+++ trunk/src/org/openstreetmap/josm/gui/help/ContextSensitiveHelpAction.java	(revision 2326)
@@ -3,4 +3,5 @@
 
 import java.awt.event.ActionEvent;
+import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 
 import javax.swing.AbstractAction;
@@ -20,4 +21,23 @@
 
     /**
+     * Sets the help topic 
+     * 
+     * @param relativeHelpTopic the relative help topic
+     */
+    public void setHelpTopic(String relativeHelpTopic) {
+        if (relativeHelpTopic == null)
+            relativeHelpTopic = "/";
+        this.helpTopic = relativeHelpTopic;
+    }
+    
+    /**
+     * Creates a help topic for the root help topic
+     * 
+     */
+    public ContextSensitiveHelpAction() {
+        this(ht("/"));
+    }
+    
+    /**
      * 
      * @param helpTopic
