Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RefreshAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RefreshAction.java	(revision 9660)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RefreshAction.java	(revision 9661)
@@ -14,8 +14,7 @@
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
-import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor;
+import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
-import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer.CommandQueueListener;
@@ -47,12 +46,10 @@
         putValue(SMALL_ICON, ImageProvider.get("dialogs/refresh"));
         putValue(NAME, tr("Refresh"));
-        getEditor().getRootPane().getActionMap().put("refresh", this);
-        getEditor().getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(sc.getKeyStroke(), "refresh");
+        if (editor instanceof JComponent) {
+            ((JComponent) editor).getRootPane().getActionMap().put("refresh", this);
+            ((JComponent) editor).getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(sc.getKeyStroke(), "refresh");
+        }
         Main.main.undoRedo.addCommandQueueListener(this);
         updateEnabledState();
-    }
-
-    private GenericRelationEditor getEditor() {
-        return (GenericRelationEditor) editor;
     }
 
@@ -70,5 +67,5 @@
         if (isEditorDirty() && confirmDiscardDirtyData() != 0)
             return;
-        getEditor().reloadDataFromRelation();
+        editor.reloadDataFromRelation();
     }
 
Index: trunk/test/unit/org/openstreetmap/josm/actions/AlignInLineActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/AlignInLineActionTest.java	(revision 9660)
+++ trunk/test/unit/org/openstreetmap/josm/actions/AlignInLineActionTest.java	(revision 9661)
@@ -67,5 +67,5 @@
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
-            Main.map.mapView.removeLayer(layer);
+            Main.main.removeLayer(layer);
         }
 
@@ -106,5 +106,5 @@
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
-            Main.map.mapView.removeLayer(layer);
+            Main.main.removeLayer(layer);
         }
 
@@ -149,5 +149,5 @@
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
-            Main.map.mapView.removeLayer(layer);
+            Main.main.removeLayer(layer);
         }
 
Index: trunk/test/unit/org/openstreetmap/josm/actions/CreateCircleActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/CreateCircleActionTest.java	(revision 9660)
+++ trunk/test/unit/org/openstreetmap/josm/actions/CreateCircleActionTest.java	(revision 9661)
@@ -97,5 +97,5 @@
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
-            Main.map.mapView.removeLayer(layer);
+            Main.main.removeLayer(layer);
         }
 
@@ -175,5 +175,5 @@
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
-            Main.map.mapView.removeLayer(layer);
+            Main.main.removeLayer(layer);
         }
 
Index: trunk/test/unit/org/openstreetmap/josm/actions/SelectByInternalPointActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/SelectByInternalPointActionTest.java	(revision 9660)
+++ trunk/test/unit/org/openstreetmap/josm/actions/SelectByInternalPointActionTest.java	(revision 9661)
@@ -79,9 +79,13 @@
     public void testGetSurroundingObjects() {
         Layer layer = initDataSet();
-        assertEquals(0, SelectByInternalPointAction.getSurroundingObjects(null).size());
-        assertEquals(0, SelectByInternalPointAction.getSurroundingObjects(new EastNorth(0, 0)).size());
-        assertEquals(1, SelectByInternalPointAction.getSurroundingObjects(new EastNorth(1.5, 1.5)).size());
-        assertEquals(0, SelectByInternalPointAction.getSurroundingObjects(new EastNorth(3, 3)).size());
-        Main.main.removeLayer(layer);
+        try {
+            assertEquals(0, SelectByInternalPointAction.getSurroundingObjects(null).size());
+            assertEquals(0, SelectByInternalPointAction.getSurroundingObjects(new EastNorth(0, 0)).size());
+            assertEquals(1, SelectByInternalPointAction.getSurroundingObjects(new EastNorth(1.5, 1.5)).size());
+            assertEquals(0, SelectByInternalPointAction.getSurroundingObjects(new EastNorth(3, 3)).size());
+        } finally {
+            // Ensure we clean the place before leaving, even if test fails.
+            Main.main.removeLayer(layer);
+        }
     }
 
@@ -92,7 +96,11 @@
     public void testGetSmallestSurroundingObject() {
         Layer layer = initDataSet();
-        assertNull(SelectByInternalPointAction.getSmallestSurroundingObject(null));
-        assertNotNull(SelectByInternalPointAction.getSmallestSurroundingObject(new EastNorth(1.5, 1.5)));
-        Main.main.removeLayer(layer);
+        try {
+            assertNull(SelectByInternalPointAction.getSmallestSurroundingObject(null));
+            assertNotNull(SelectByInternalPointAction.getSmallestSurroundingObject(new EastNorth(1.5, 1.5)));
+        } finally {
+            // Ensure we clean the place before leaving, even if test fails.
+            Main.main.removeLayer(layer);
+        }
     }
 
@@ -103,22 +111,25 @@
     public void testPerformSelection() {
         Layer layer = initDataSet();
-        DataSet ds = JosmAction.getCurrentDataSet();
+        try {
+            DataSet ds = JosmAction.getCurrentDataSet();
 
-        assertEquals(0, ds.getSelected().size());
-        SelectByInternalPointAction.performSelection(null, false, false);
-        assertEquals(0, ds.getSelected().size());
-        SelectByInternalPointAction.performSelection(new EastNorth(0, 0), false, false);
-        assertEquals(0, ds.getSelected().size());
-        SelectByInternalPointAction.performSelection(new EastNorth(1.5, 1.5), false, false);
-        assertEquals(1, ds.getSelected().size());
-        ds.clearSelection();
-        ds.addSelected(ds.getNodes());
-        assertEquals(4, ds.getSelected().size());
-        SelectByInternalPointAction.performSelection(new EastNorth(1.5, 1.5), true, false);
-        assertEquals(5, ds.getSelected().size());
-        SelectByInternalPointAction.performSelection(new EastNorth(1.5, 1.5), false, true);
-        assertEquals(4, ds.getSelected().size());
-
-        Main.main.removeLayer(layer);
+            assertEquals(0, ds.getSelected().size());
+            SelectByInternalPointAction.performSelection(null, false, false);
+            assertEquals(0, ds.getSelected().size());
+            SelectByInternalPointAction.performSelection(new EastNorth(0, 0), false, false);
+            assertEquals(0, ds.getSelected().size());
+            SelectByInternalPointAction.performSelection(new EastNorth(1.5, 1.5), false, false);
+            assertEquals(1, ds.getSelected().size());
+            ds.clearSelection();
+            ds.addSelected(ds.getNodes());
+            assertEquals(4, ds.getSelected().size());
+            SelectByInternalPointAction.performSelection(new EastNorth(1.5, 1.5), true, false);
+            assertEquals(5, ds.getSelected().size());
+            SelectByInternalPointAction.performSelection(new EastNorth(1.5, 1.5), false, true);
+            assertEquals(4, ds.getSelected().size());
+        } finally {
+            // Ensure we clean the place before leaving, even if test fails.
+            Main.main.removeLayer(layer);
+        }
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/actions/SplitWayActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/SplitWayActionTest.java	(revision 9660)
+++ trunk/test/unit/org/openstreetmap/josm/actions/SplitWayActionTest.java	(revision 9661)
@@ -84,5 +84,5 @@
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
-            Main.map.mapView.removeLayer(layer);
+            Main.main.removeLayer(layer);
         }
 
Index: trunk/test/unit/org/openstreetmap/josm/actions/UnJoinNodeWayActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/UnJoinNodeWayActionTest.java	(revision 9660)
+++ trunk/test/unit/org/openstreetmap/josm/actions/UnJoinNodeWayActionTest.java	(revision 9661)
@@ -78,5 +78,5 @@
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
-            Main.map.mapView.removeLayer(layer);
+            Main.main.removeLayer(layer);
         }
 
Index: trunk/test/unit/org/openstreetmap/josm/actions/mapmode/DrawActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/mapmode/DrawActionTest.java	(revision 9660)
+++ trunk/test/unit/org/openstreetmap/josm/actions/mapmode/DrawActionTest.java	(revision 9661)
@@ -68,31 +68,36 @@
 
         Main.main.addLayer(layer);
-        assertTrue(Main.map.selectDrawTool(false));
+        try {
+            assertTrue(Main.map.selectDrawTool(false));
 
-        Main.map.mapModeDraw.mouseReleased(new MouseEvent(
-                Main.map,
-                MouseEvent.MOUSE_RELEASED,
-                2000,
-                InputEvent.BUTTON1_MASK,
-                50, 0,
-                2, false));
+            Main.map.mapModeDraw.mouseReleased(new MouseEvent(
+                    Main.map,
+                    MouseEvent.MOUSE_RELEASED,
+                    2000,
+                    InputEvent.BUTTON1_MASK,
+                    50, 0,
+                    2, false));
 
-        JList<OsmPrimitive> lstPrimitives = new JList<>();
-        OsmPrimitivRenderer renderer = new OsmPrimitivRenderer();
+            JList<OsmPrimitive> lstPrimitives = new JList<>();
+            OsmPrimitivRenderer renderer = new OsmPrimitivRenderer();
 
-        assertEquals(3, w.getNodesCount());
-        Collection<Node> sel = dataSet.getSelectedNodes();
-        assertEquals(1, sel.size());
+            assertEquals(3, w.getNodesCount());
+            Collection<Node> sel = dataSet.getSelectedNodes();
+            assertEquals(1, sel.size());
 
-        Node n3 = sel.iterator().next();
+            Node n3 = sel.iterator().next();
 
-        assertNotNull(renderer.getListCellRendererComponent(lstPrimitives, n3, 0, false, false));
+            assertNotNull(renderer.getListCellRendererComponent(lstPrimitives, n3, 0, false, false));
 
-        Main.main.undoRedo.undo();
+            Main.main.undoRedo.undo();
 
-        assertEquals(2, w.getNodesCount());
-        assertTrue(dataSet.getSelectedNodes().isEmpty());
+            assertEquals(2, w.getNodesCount());
+            assertTrue(dataSet.getSelectedNodes().isEmpty());
 
-        assertNotNull(renderer.getListCellRendererComponent(lstPrimitives, n3, 0, false, false));
+            assertNotNull(renderer.getListCellRendererComponent(lstPrimitives, n3, 0, false, false));
+        } finally {
+            // Ensure we clean the place before leaving, even if test fails.
+            Main.main.removeLayer(layer);
+        }
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java	(revision 9660)
+++ trunk/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java	(revision 9661)
@@ -102,55 +102,60 @@
         Main.pref = new PreferencesMock();
         Main.main.addLayer(layer);
-        SelectAction action = new SelectActionMock(Main.map, dataSet, layer);
-        nodesMerged = false;
+        try {
+            SelectAction action = new SelectActionMock(Main.map, dataSet, layer);
+            nodesMerged = false;
 
-        action.setEnabled(true);
-        action.putValue("active", true);
+            action.setEnabled(true);
+            action.putValue("active", true);
 
-        MouseEvent event;
-        event = new MouseEvent(Main.map,
-                               MouseEvent.MOUSE_PRESSED,
-                               0,
-                               InputEvent.BUTTON1_MASK | InputEvent.CTRL_MASK,
-                               100, 0,
-                               1,
-                               false);
-        action.mousePressed(event);
-        event = new MouseEvent(Main.map,
-                               MouseEvent.MOUSE_DRAGGED,
-                               1000,
-                               InputEvent.BUTTON1_MASK | InputEvent.CTRL_MASK,
-                               50, 0,
-                               1,
-                               false);
-        action.mouseDragged(event);
-        event = new MouseEvent(Main.map,
-                               MouseEvent.MOUSE_RELEASED,
-                               2000,
-                               InputEvent.BUTTON1_MASK | InputEvent.CTRL_MASK,
-                               5, 0,
-                               1,
-                               false);
-        action.mouseReleased(event);
+            MouseEvent event;
+            event = new MouseEvent(Main.map,
+                                   MouseEvent.MOUSE_PRESSED,
+                                   0,
+                                   InputEvent.BUTTON1_MASK | InputEvent.CTRL_MASK,
+                                   100, 0,
+                                   1,
+                                   false);
+            action.mousePressed(event);
+            event = new MouseEvent(Main.map,
+                                   MouseEvent.MOUSE_DRAGGED,
+                                   1000,
+                                   InputEvent.BUTTON1_MASK | InputEvent.CTRL_MASK,
+                                   50, 0,
+                                   1,
+                                   false);
+            action.mouseDragged(event);
+            event = new MouseEvent(Main.map,
+                                   MouseEvent.MOUSE_RELEASED,
+                                   2000,
+                                   InputEvent.BUTTON1_MASK | InputEvent.CTRL_MASK,
+                                   5, 0,
+                                   1,
+                                   false);
+            action.mouseReleased(event);
 
-        // As result of test, we must find a 2 nodes way, from EN(0, 0) to EN(100, 0)
-        assertTrue("Nodes are not merged", nodesMerged);
-        assertSame(String.format("Expect exactly one way, found %d\n", dataSet.getWays().size()),
-                   dataSet.getWays().size(), 1);
-        Way rw = dataSet.getWays().iterator().next();
-        assertFalse("Way shouldn't be deleted\n", rw.isDeleted());
-        assertSame(String.format("Way shouldn't have 2 nodes, %d found\n", w.getNodesCount()),
-                   rw.getNodesCount(), 2);
-        Node r1 = rw.firstNode();
-        Node r2 = rw.lastNode();
-        if (r1.getEastNorth().east() > r2.getEastNorth().east()) {
-            Node tmp = r1;
-            r1 = r2;
-            r2 = tmp;
+            // As result of test, we must find a 2 nodes way, from EN(0, 0) to EN(100, 0)
+            assertTrue("Nodes are not merged", nodesMerged);
+            assertSame(String.format("Expect exactly one way, found %d\n", dataSet.getWays().size()),
+                       dataSet.getWays().size(), 1);
+            Way rw = dataSet.getWays().iterator().next();
+            assertFalse("Way shouldn't be deleted\n", rw.isDeleted());
+            assertSame(String.format("Way shouldn't have 2 nodes, %d found\n", w.getNodesCount()),
+                       rw.getNodesCount(), 2);
+            Node r1 = rw.firstNode();
+            Node r2 = rw.lastNode();
+            if (r1.getEastNorth().east() > r2.getEastNorth().east()) {
+                Node tmp = r1;
+                r1 = r2;
+                r2 = tmp;
+            }
+            assertSame(String.format("East should be 0, found %f\n", r1.getEastNorth().east()),
+                       Double.compare(r1.getEastNorth().east(), 0), 0);
+            assertSame(String.format("East should be 100, found %f\n", r2.getEastNorth().east()),
+                       Double.compare(r2.getEastNorth().east(), 100), 0);
+        } finally {
+            // Ensure we clean the place before leaving, even if test fails.
+            Main.main.removeLayer(layer);
         }
-        assertSame(String.format("East should be 0, found %f\n", r1.getEastNorth().east()),
-                   Double.compare(r1.getEastNorth().east(), 0), 0);
-        assertSame(String.format("East should be 100, found %f\n", r2.getEastNorth().east()),
-                   Double.compare(r2.getEastNorth().east(), 100), 0);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/layer/TMSLayerTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/layer/TMSLayerTest.java	(revision 9660)
+++ trunk/test/unit/org/openstreetmap/josm/gui/layer/TMSLayerTest.java	(revision 9661)
@@ -50,5 +50,10 @@
     private static void test(ImageryType expected, TMSLayer layer) {
         Main.main.addLayer(layer);
-        assertEquals(expected, layer.getInfo().getImageryType());
+        try {
+            assertEquals(expected, layer.getInfo().getImageryType());
+        } finally {
+            // Ensure we clean the place before leaving, even if test fails.
+            Main.main.removeLayer(layer);
+        }
     }
 
Index: trunk/test/unit/org/openstreetmap/josm/gui/layer/WMSLayerTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/layer/WMSLayerTest.java	(revision 9660)
+++ trunk/test/unit/org/openstreetmap/josm/gui/layer/WMSLayerTest.java	(revision 9661)
@@ -31,5 +31,10 @@
         WMSLayer wms = new WMSLayer(new ImageryInfo("test wms", "http://localhost"));
         Main.main.addLayer(wms);
-        assertEquals(ImageryType.WMS, wms.getInfo().getImageryType());
+        try {
+            assertEquals(ImageryType.WMS, wms.getInfo().getImageryType());
+        } finally {
+            // Ensure we clean the place before leaving, even if test fails.
+            Main.main.removeLayer(wms);
+        }
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayerTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayerTest.java	(revision 9660)
+++ trunk/test/unit/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayerTest.java	(revision 9661)
@@ -42,16 +42,26 @@
             assertTrue(reader.parse(true));
             GpxLayer gpxLayer = new GpxLayer(reader.getGpxData());
-            Main.main.addLayer(gpxLayer);
-            assertEquals(1, Main.map.mapView.getNumLayers());
-            new Loader(
-                    Collections.singleton(new File(TestUtils.getRegressionDataFile(12255, "G0016941.JPG"))),
-                    gpxLayer).run();
-            assertEquals(2, Main.map.mapView.getNumLayers());
-            GeoImageLayer layer = Main.map.mapView.getLayersOfType(GeoImageLayer.class).iterator().next();
-            assertEquals(gpxLayer, layer.getGpxLayer());
-            List<ImageEntry> images = layer.getImages();
-            assertEquals(1, images.size());
-            assertEquals("<html>1 image loaded. 0 were found to be GPS tagged.</html>", layer.getInfoComponent());
-            assertEquals("<html>1 image loaded. 0 were found to be GPS tagged.</html>", layer.getToolTipText());
+            try {
+                Main.main.addLayer(gpxLayer);
+                assertEquals(1, Main.map.mapView.getNumLayers());
+                new Loader(
+                        Collections.singleton(new File(TestUtils.getRegressionDataFile(12255, "G0016941.JPG"))),
+                        gpxLayer).run();
+                assertEquals(2, Main.map.mapView.getNumLayers());
+                GeoImageLayer layer = Main.map.mapView.getLayersOfType(GeoImageLayer.class).iterator().next();
+                try {
+                    assertEquals(gpxLayer, layer.getGpxLayer());
+                    List<ImageEntry> images = layer.getImages();
+                    assertEquals(1, images.size());
+                    assertEquals("<html>1 image loaded. 0 were found to be GPS tagged.</html>", layer.getInfoComponent());
+                    assertEquals("<html>1 image loaded. 0 were found to be GPS tagged.</html>", layer.getToolTipText());
+                } finally {
+                    // Ensure we clean the place before leaving, even if test fails.
+                    Main.map.mapView.removeLayer(layer);
+                }
+            } finally {
+                // Ensure we clean the place before leaving, even if test fails.
+                Main.main.removeLayer(gpxLayer);
+            }
         }
     }
