Index: /trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java	(revision 6705)
+++ /trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java	(revision 6706)
@@ -19,6 +19,13 @@
 import org.openstreetmap.josm.tools.Shortcut;
 
+/**
+ * Action that merges two or more OSM data layers. 
+ * @since 1890
+ */
 public class MergeLayerAction extends AbstractMergeAction {
 
+    /**
+     * Constructs a new {@code MergeLayerAction}.
+     */
     public MergeLayerAction() {
         super(tr("Merge layer"), "dialogs/mergedown",
@@ -58,8 +65,16 @@
     }
 
+    /**
+     * Merges a list of layers together.
+     * @param sourceLayers The layers to merge
+     */
     public void merge(List<Layer> sourceLayers) {
         doMerge(sourceLayers, sourceLayers);
     }
 
+    /**
+     * Merges the given source layer with another one, determined at runtime.
+     * @param sourceLayer The source layer to merge
+     */
     public void merge(Layer sourceLayer) {
         if (sourceLayer == null)
@@ -96,5 +111,8 @@
 
     /**
-     * returns true if the user wants to cancel, false if they want to continue
+     * Warns about a discouraged merge operation, ask for confirmation.
+     * @param sourceLayer The source layer
+     * @param targetLayer The target layer
+     * @return {@code true} if the user wants to cancel, {@code false} if they want to continue
      */
     public static final boolean warnMergingUploadDiscouragedLayers(Layer sourceLayer, Layer targetLayer) {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 6705)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 6706)
@@ -763,11 +763,11 @@
         public void actionPerformed(ActionEvent e) {
             if (layer != null) {
-                new MergeLayerAction().merge(layer);
+                Main.main.menu.merge.merge(layer);
             } else {
                 if (getModel().getSelectedLayers().size() == 1) {
                     Layer selectedLayer = getModel().getSelectedLayers().get(0);
-                    new MergeLayerAction().merge(selectedLayer);
+                    Main.main.menu.merge.merge(selectedLayer);
                 } else {
-                    new MergeLayerAction().merge(getModel().getSelectedLayers());
+                    Main.main.menu.merge.merge(getModel().getSelectedLayers());
                 }
             }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java	(revision 6705)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java	(revision 6706)
@@ -30,4 +30,5 @@
 import org.openstreetmap.josm.data.validation.util.MultipleNameVisitor;
 import org.openstreetmap.josm.gui.preferences.validator.ValidatorPreference;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.Destroyable;
 import org.openstreetmap.josm.tools.MultiMap;
@@ -127,8 +128,13 @@
     public void buildTree() {
         updateCount++;
-        DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode();
+        final DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode();
 
         if (errors == null || errors.isEmpty()) {
-            valTreeModel.setRoot(rootNode);
+            GuiHelper.runInEDTAndWait(new Runnable() {
+                @Override
+                public void run() {
+                    valTreeModel.setRoot(rootNode);
+                }
+            });
             return;
         }
