Index: /trunk/src/org/openstreetmap/josm/command/SelectCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/SelectCommand.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/command/SelectCommand.java	(revision 10364)
@@ -38,11 +38,11 @@
     @Override
     public void undoCommand() {
-        Main.map.mapView.getEditLayer().data.setSelected(oldSelection);
+        Main.getLayerManager().getEditLayer().data.setSelected(oldSelection);
     }
 
     @Override
     public boolean executeCommand() {
-        oldSelection = Main.map.mapView.getEditLayer().data.getSelected();
-        Main.map.mapView.getEditLayer().data.setSelected(newSelection);
+        oldSelection = Main.getLayerManager().getEditLayer().data.getSelected();
+        Main.getLayerManager().getEditLayer().data.setSelected(newSelection);
         return true;
     }
Index: /trunk/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java	(revision 10364)
@@ -62,5 +62,5 @@
     @Override
     public void undoCommand() {
-        if (Main.isDisplayingMapView() && !Main.map.mapView.hasLayer(getLayer())) {
+        if (Main.isDisplayingMapView() && !Main.getLayerManager().containsLayer(getLayer())) {
             Main.warn(tr("Layer ''{0}'' does not exist any more. Cannot remove conflict for object ''{1}''.",
                     getLayer().getName(),
Index: /trunk/src/org/openstreetmap/josm/command/conflict/ConflictResolveCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/conflict/ConflictResolveCommand.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/command/conflict/ConflictResolveCommand.java	(revision 10364)
@@ -71,5 +71,5 @@
 
         if (Main.isDisplayingMapView()) {
-            if (!Main.map.mapView.hasLayer(getLayer())) {
+            if (!Main.getLayerManager().containsLayer(getLayer())) {
                 Main.warn(tr("Cannot undo command ''{0}'' because layer ''{1}'' is not present any more",
                         this.toString(),
@@ -79,5 +79,5 @@
             }
 
-            Main.map.mapView.setActiveLayer(getLayer());
+            Main.getLayerManager().setActiveLayer(getLayer());
         }
         reconstituteConflicts();
Index: /trunk/src/org/openstreetmap/josm/command/conflict/RelationMemberConflictResolverCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/conflict/RelationMemberConflictResolverCommand.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/command/conflict/RelationMemberConflictResolverCommand.java	(revision 10364)
@@ -75,5 +75,5 @@
     public void undoCommand() {
         OsmDataLayer layer = getLayer();
-        if (!Main.map.mapView.hasLayer(layer)) {
+        if (!Main.getLayerManager().containsLayer(layer)) {
             Main.warn(tr("Cannot undo command ''{0}'' because layer ''{1}'' is not present any more",
                     this.toString(),
@@ -83,5 +83,5 @@
         }
 
-        Main.map.mapView.setActiveLayer(layer);
+        Main.getLayerManager().setActiveLayer(layer);
         OsmDataLayer editLayer = Main.main.getEditLayer();
 
Index: /trunk/src/org/openstreetmap/josm/data/AutosaveTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/AutosaveTask.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/data/AutosaveTask.java	(revision 10364)
@@ -127,5 +127,5 @@
             MapView.addLayerChangeListener(this);
             if (Main.isDisplayingMapView()) {
-                for (OsmDataLayer l: Main.map.mapView.getLayersOfType(OsmDataLayer.class)) {
+                for (OsmDataLayer l: Main.getLayerManager().getLayersOfType(OsmDataLayer.class)) {
                     registerNewlayer(l);
                 }
Index: /trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java	(revision 10364)
@@ -70,5 +70,5 @@
         @Override
         public void actionPerformed(ActionEvent e) {
-            Collection<ImageryLayer> layers = Main.map.mapView.getLayersOfType(ImageryLayer.class);
+            Collection<ImageryLayer> layers = Main.getLayerManager().getLayersOfType(ImageryLayer.class);
             if (layers.isEmpty()) {
                 setEnabled(false);
Index: /trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 10364)
@@ -417,5 +417,5 @@
     public static void addEditLayerChangeListener(EditLayerChangeListener listener, boolean initialFire) {
         if (listener != null) {
-            boolean doFire = initialFire && Main.isDisplayingMapView() && Main.map.mapView.getEditLayer() != null;
+            boolean doFire = initialFire && Main.isDisplayingMapView() && Main.getLayerManager().getEditLayer() != null;
             if (doFire) {
                 Main.getLayerManager().addAndFireActiveLayerChangeListener(new EditLayerChangeAdapter(listener));
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/ListMerger.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/ListMerger.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/ListMerger.java	(revision 10364)
@@ -891,5 +891,5 @@
     protected final <P extends OsmPrimitive> OsmDataLayer findLayerFor(P primitive) {
         if (primitive != null) {
-            Iterable<OsmDataLayer> layers = Main.map.mapView.getLayersOfType(OsmDataLayer.class);
+            Iterable<OsmDataLayer> layers = Main.getLayerManager().getLayersOfType(OsmDataLayer.class);
             // Find layer with same dataset
             for (OsmDataLayer layer : layers) {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java	(revision 10364)
@@ -57,5 +57,5 @@
 
         List<String> layerNames = new ArrayList<>();
-        for (Layer l: Main.map.mapView.getAllLayers()) {
+        for (Layer l: Main.getLayerManager().getLayers()) {
             layerNames.add(l.getName());
         }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java	(revision 10364)
@@ -300,5 +300,5 @@
             drawHelper.readPreferences(getName());
             drawHelper.drawAll(g, mv, visibleSegments);
-            if (Main.map.mapView.getActiveLayer() == this) {
+            if (Main.getLayerManager().getActiveLayer() == this) {
                 drawHelper.drawColorBar(g, mv);
             }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/Layer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 10364)
@@ -171,5 +171,5 @@
         long memoryBytesRequired = 50L * 1024L * 1024L; // assumed minimum JOSM memory footprint
         if (Main.map != null && Main.map.mapView != null) {
-            for (Layer layer: Main.map.mapView.getAllLayers()) {
+            for (Layer layer: Main.getLayerManager().getLayers()) {
                 memoryBytesRequired += layer.estimateMemoryUsage();
             }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 10364)
@@ -181,5 +181,5 @@
                 // If none, we'll zoom to the bounding box of the layer with the photos.
                 boolean boundingBoxedLayerFound = false;
-                for (Layer l: Main.map.mapView.getAllLayers()) {
+                for (Layer l: Main.getLayerManager().getLayers()) {
                     if (l != yLayer) {
                         BoundingXYVisitor bbox = new BoundingXYVisitor();
@@ -557,5 +557,5 @@
     public void actionPerformed(ActionEvent arg0) {
         // Construct the list of loaded GPX tracks
-        Collection<Layer> layerLst = Main.map.mapView.getAllLayers();
+        Collection<Layer> layerLst = Main.getLayerManager().getLayers();
         GpxDataWrapper defaultItem = null;
         for (Layer cur : layerLst) {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 10364)
@@ -784,5 +784,5 @@
     private void clearOtherCurrentPhotos() {
         for (GeoImageLayer layer:
-                 Main.map.mapView.getLayersOfType(GeoImageLayer.class)) {
+                 Main.getLayerManager().getLayersOfType(GeoImageLayer.class)) {
             if (layer != this) {
                 layer.clearCurrentPhoto(false);
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java	(revision 10364)
@@ -116,5 +116,5 @@
             return null;
         }
-        List<AbstractTileSourceLayer> targetLayers = Main.map.mapView.getLayersOfType(AbstractTileSourceLayer.class);
+        List<AbstractTileSourceLayer> targetLayers = Main.getLayerManager().getLayersOfType(AbstractTileSourceLayer.class);
         if (targetLayers.isEmpty()) {
             if (!GraphicsEnvironment.isHeadless()) {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 10364)
@@ -449,10 +449,10 @@
             return;
         Marker m = null;
-        Layer l = Main.map.mapView.getActiveLayer();
+        Layer l = Main.getLayerManager().getActiveLayer();
         if (l != null) {
             m = getAdjacentMarker(startMarker, next, l);
         }
         if (m == null) {
-            for (Layer layer : Main.map.mapView.getAllLayers()) {
+            for (Layer layer : Main.getLayerManager().getLayers()) {
                 m = getAdjacentMarker(startMarker, next, layer);
                 if (m != null) {
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java	(revision 10364)
@@ -70,5 +70,5 @@
 
         private static boolean mapHasGpxorMarkerLayer() {
-            for (Layer layer : Main.map.mapView.getAllLayers()) {
+            for (Layer layer : Main.getLayerManager().getLayers()) {
                 if (layer instanceof GpxLayer || layer instanceof MarkerLayer) {
                     return true;
Index: /trunk/src/org/openstreetmap/josm/io/NoteImporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/NoteImporter.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/io/NoteImporter.java	(revision 10364)
@@ -38,5 +38,5 @@
         try (InputStream is = Compression.getUncompressedFileInputStream(file)) {
             final NoteLayer layer = loadLayer(is, file, file.getName(), progressMonitor);
-            if (Main.map == null || !Main.map.mapView.hasLayer(layer)) {
+            if (Main.map == null || !Main.getLayerManager().containsLayer(layer)) {
                 GuiHelper.runInEDT(new Runnable() {
                     @Override
@@ -69,5 +69,5 @@
         List<NoteLayer> noteLayers = null;
         if (Main.map != null) {
-            noteLayers = Main.map.mapView.getLayersOfType(NoteLayer.class);
+            noteLayers = Main.getLayerManager().getLayersOfType(NoteLayer.class);
         }
         final NoteLayer layer;
Index: /trunk/src/org/openstreetmap/josm/io/OsmApi.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 10364)
@@ -249,5 +249,5 @@
              * been disabled! */
             if (Main.isDisplayingMapView()) {
-                for (Layer l : Main.map.mapView.getLayersOfType(ImageryLayer.class)) {
+                for (Layer l : Main.getLayerManager().getLayersOfType(ImageryLayer.class)) {
                     if (((ImageryLayer) l).getInfo().isBlacklisted()) {
                         Main.info(tr("Removed layer {0} because it is not allowed by the configured API.", l.getName()));
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java	(revision 10364)
@@ -95,5 +95,5 @@
         final ImageryInfo imgInfo = buildImageryInfo();
         if (Main.isDisplayingMapView()) {
-            for (ImageryLayer layer : Main.map.mapView.getLayersOfType(ImageryLayer.class)) {
+            for (ImageryLayer layer : Main.getLayerManager().getLayersOfType(ImageryLayer.class)) {
                 if (layer.getInfo().equals(imgInfo)) {
                     Main.info("Imagery layer already exists: "+imgInfo);
Index: /trunk/src/org/openstreetmap/josm/io/session/MarkerSessionExporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/session/MarkerSessionExporter.java	(revision 10363)
+++ /trunk/src/org/openstreetmap/josm/io/session/MarkerSessionExporter.java	(revision 10364)
@@ -44,5 +44,5 @@
     public Collection<Layer> getDependencies() {
         Layer gpxLayer = layer.fromLayer;
-        if (gpxLayer != null && Main.map.mapView.hasLayer(gpxLayer))
+        if (gpxLayer != null && Main.getLayerManager().containsLayer(gpxLayer))
             return Collections.singleton(gpxLayer);
         return Collections.emptySet();
Index: /trunk/test/unit/org/openstreetmap/josm/JOSMFixture.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/JOSMFixture.java	(revision 10363)
+++ /trunk/test/unit/org/openstreetmap/josm/JOSMFixture.java	(revision 10364)
@@ -124,5 +124,5 @@
                 Main.main.createMapFrame(null, null);
             } else {
-                for (Layer l: Main.map.mapView.getAllLayers()) {
+                for (Layer l: Main.getLayerManager().getLayers()) {
                     Main.map.mapView.removeLayer(l);
                 }
Index: /trunk/test/unit/org/openstreetmap/josm/actions/AddImageryLayerActionTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/actions/AddImageryLayerActionTest.java	(revision 10363)
+++ /trunk/test/unit/org/openstreetmap/josm/actions/AddImageryLayerActionTest.java	(revision 10364)
@@ -47,7 +47,7 @@
     @Test
     public void testActionPerformedEnabled() {
-        assertTrue(Main.map.mapView.getLayersOfType(TMSLayer.class).isEmpty());
+        assertTrue(Main.getLayerManager().getLayersOfType(TMSLayer.class).isEmpty());
         new AddImageryLayerAction(new ImageryInfo("foo_tms", "http://bar", "tms", null, null)).actionPerformed(null);
-        List<TMSLayer> tmsLayers = Main.map.mapView.getLayersOfType(TMSLayer.class);
+        List<TMSLayer> tmsLayers = Main.getLayerManager().getLayersOfType(TMSLayer.class);
         assertEquals(1, tmsLayers.size());
 
@@ -55,5 +55,5 @@
             new AddImageryLayerAction(new ImageryInfo("wms.openstreetmap.fr", "http://wms.openstreetmap.fr/wms?",
                     "wms_endpoint", null, null)).actionPerformed(null);
-            List<WMSLayer> wmsLayers = Main.map.mapView.getLayersOfType(WMSLayer.class);
+            List<WMSLayer> wmsLayers = Main.getLayerManager().getLayersOfType(WMSLayer.class);
             assertEquals(1, wmsLayers.size());
 
@@ -69,7 +69,7 @@
     @Test
     public void testActionPerformedDisabled() {
-        assertTrue(Main.map.mapView.getLayersOfType(TMSLayer.class).isEmpty());
+        assertTrue(Main.getLayerManager().getLayersOfType(TMSLayer.class).isEmpty());
         new AddImageryLayerAction(new ImageryInfo()).actionPerformed(null);
-        assertTrue(Main.map.mapView.getLayersOfType(TMSLayer.class).isEmpty());
+        assertTrue(Main.getLayerManager().getLayersOfType(TMSLayer.class).isEmpty());
     }
 }
Index: /trunk/test/unit/org/openstreetmap/josm/command/conflict/ConflictAddCommandTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/command/conflict/ConflictAddCommandTest.java	(revision 10363)
+++ /trunk/test/unit/org/openstreetmap/josm/command/conflict/ConflictAddCommandTest.java	(revision 10364)
@@ -51,5 +51,5 @@
     @Test
     public void testExecuteUndoCommand() {
-        OsmDataLayer layer = Main.map.mapView.getEditLayer();
+        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
         Conflict<Node> conflict = new Conflict<>(new Node(), new Node());
         ConflictAddCommand cmd = new ConflictAddCommand(layer, conflict);
@@ -67,5 +67,5 @@
     @Test
     public void testGetDescriptionIcon() {
-        OsmDataLayer layer = Main.map.mapView.getEditLayer();
+        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
         Conflict<Node> conflict = new Conflict<>(new Node(), new Node());
         assertNotNull(new ConflictAddCommand(layer, conflict).getDescriptionIcon());
Index: /trunk/test/unit/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayerTest.java	(revision 10363)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayerTest.java	(revision 10364)
@@ -49,5 +49,5 @@
                         gpxLayer).run();
                 assertEquals(2, Main.map.mapView.getNumLayers());
-                GeoImageLayer layer = Main.map.mapView.getLayersOfType(GeoImageLayer.class).iterator().next();
+                GeoImageLayer layer = Main.getLayerManager().getLayersOfType(GeoImageLayer.class).iterator().next();
                 try {
                     assertEquals(gpxLayer, layer.getGpxLayer());
Index: /trunk/test/unit/org/openstreetmap/josm/io/NoteImporterTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/io/NoteImporterTest.java	(revision 10363)
+++ /trunk/test/unit/org/openstreetmap/josm/io/NoteImporterTest.java	(revision 10364)
@@ -23,5 +23,5 @@
     public void testTicket12531() {
         if (Main.map != null) {
-            for (Layer l: Main.map.mapView.getAllLayers()) {
+            for (Layer l: Main.getLayerManager().getLayers()) {
                 Main.map.mapView.removeLayer(l);
             }
Index: /trunk/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandlerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandlerTest.java	(revision 10363)
+++ /trunk/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandlerTest.java	(revision 10364)
@@ -95,5 +95,5 @@
             newHandler("https://localhost?url=" + Utils.encodeUrl(url)).handle();
         } finally {
-            for (OsmDataLayer layer : Main.map.mapView.getLayersOfType(OsmDataLayer.class)) {
+            for (OsmDataLayer layer : Main.getLayerManager().getLayersOfType(OsmDataLayer.class)) {
                 Main.main.removeLayer(layer);
             }
Index: /trunk/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java	(revision 10363)
+++ /trunk/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java	(revision 10364)
@@ -139,5 +139,5 @@
     public void testReadNotes() throws IOException, IllegalDataException {
         if (Main.isDisplayingMapView()) {
-            for (NoteLayer nl : Main.map.mapView.getLayersOfType(NoteLayer.class)) {
+            for (NoteLayer nl : Main.getLayerManager().getLayersOfType(NoteLayer.class)) {
                 Main.map.mapView.removeLayer(nl);
             }
