Index: /trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/Main.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/Main.java	(revision 12630)
@@ -60,4 +60,5 @@
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.data.projection.ProjectionChangeListener;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MainMenu;
 import org.openstreetmap.josm.gui.MainPanel;
@@ -119,5 +120,7 @@
      *
      * @return <code>true</code> if JOSM currently displays a map view
-     */
+     * @deprecated use {@link org.openstreetmap.josm.gui.MainApplication#isDisplayingMapView()}
+     */
+    @Deprecated
     public static boolean isDisplayingMapView() {
         return map != null && map.mapView != null;
@@ -151,6 +154,8 @@
      * There should be no need to access this to access any map data. Use {@link #layerManager} instead.
      *
+     * @deprecated Use {@link org.openstreetmap.josm.gui.MainApplication#getMap()} instead
      * @see MainPanel
      */
+    @Deprecated
     public static MapFrame map;
 
@@ -1135,5 +1140,5 @@
             }
             if (newValue != null && oldBounds != null) {
-                Main.map.mapView.zoomTo(oldBounds);
+                MainApplication.getMap().mapView.zoomTo(oldBounds);
             }
             /* TODO - remove layers with fixed projection */
Index: /trunk/src/org/openstreetmap/josm/actions/AbstractInfoAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AbstractInfoAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/AbstractInfoAction.java	(revision 12630)
@@ -19,4 +19,5 @@
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -105,5 +106,5 @@
         }
 
-        Note noteToShow = Main.isDisplayingMapView() ? Main.map.noteDialog.getSelectedNote() : null;
+        Note noteToShow = MainApplication.isDisplayingMapView() ? MainApplication.getMap().noteDialog.getSelectedNote() : null;
 
         // filter out new primitives which are not yet uploaded to the server
Index: /trunk/src/org/openstreetmap/josm/actions/AbstractPasteAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AbstractPasteAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/AbstractPasteAction.java	(revision 12630)
@@ -11,4 +11,6 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.datatransfer.OsmTransferHandler;
@@ -68,5 +70,6 @@
     protected EastNorth computePastePosition(ActionEvent e) {
         // default to paste in center of map (pasted via menu or cursor not in MapView)
-        EastNorth mPosition = Main.map.mapView.getCenter();
+        MapView mapView = MainApplication.getMap().mapView;
+        EastNorth mPosition = mapView.getCenter();
         // We previously checked for modifier to know if the action has been trigerred via shortcut or via menu
         // But this does not work if the shortcut is changed to a single key (see #9055)
@@ -74,8 +77,8 @@
         if (e != null && !getValue(NAME).equals(e.getActionCommand())) {
             final Point mp = MouseInfo.getPointerInfo().getLocation();
-            final Point tl = Main.map.mapView.getLocationOnScreen();
+            final Point tl = mapView.getLocationOnScreen();
             final Point pos = new Point(mp.x-tl.x, mp.y-tl.y);
-            if (Main.map.mapView.contains(pos)) {
-                mPosition = Main.map.mapView.getEastNorth(pos.x, pos.y);
+            if (mapView.contains(pos)) {
+                mPosition = mapView.getEastNorth(pos.x, pos.y);
             }
         }
Index: /trunk/src/org/openstreetmap/josm/actions/AddNodeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AddNodeAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/AddNodeAction.java	(revision 12630)
@@ -14,4 +14,6 @@
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.dialogs.LatLonDialog;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -66,5 +68,6 @@
         Main.main.undoRedo.add(new AddCommand(nnew));
         getLayerManager().getEditDataSet().setSelected(nnew);
-        if (Main.map.mapView != null && !Main.map.mapView.getRealBounds().contains(nnew.getCoor())) {
+        MapView mapView = MainApplication.getMap().mapView;
+        if (mapView != null && !mapView.getRealBounds().contains(nnew.getCoor())) {
             AutoScaleAction.zoomTo(Collections.<OsmPrimitive>singleton(nnew));
         }
Index: /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 12630)
@@ -29,7 +29,9 @@
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.data.validation.TestError;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapFrameListener;
 import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.dialogs.ConflictDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.dialogs.ValidatorDialog.ValidatorBoundingXYVisitor;
@@ -102,5 +104,5 @@
         bboxCalculator.enlargeBoundingBox();
         if (bboxCalculator.getBounds() != null) {
-            Main.map.mapView.zoomTo(bboxCalculator);
+            MainApplication.getMap().mapView.zoomTo(bboxCalculator);
         }
     }
@@ -191,16 +193,17 @@
      */
     public void autoScale() {
-        if (Main.isDisplayingMapView()) {
+        if (MainApplication.isDisplayingMapView()) {
+            MapView mapView = MainApplication.getMap().mapView;
             switch (mode) {
             case "previous":
-                Main.map.mapView.zoomPrevious();
+                mapView.zoomPrevious();
                 break;
             case "next":
-                Main.map.mapView.zoomNext();
+                mapView.zoomNext();
                 break;
             default:
                 BoundingXYVisitor bbox = getBoundingBox();
                 if (bbox != null && bbox.getBounds() != null) {
-                    Main.map.mapView.zoomTo(bbox);
+                    mapView.zoomTo(bbox);
                 }
             }
@@ -254,5 +257,5 @@
 
     private static BoundingXYVisitor modeProblem(ValidatorBoundingXYVisitor v) {
-        TestError error = Main.map.validatorDialog.getSelectedError();
+        TestError error = MainApplication.getMap().validatorDialog.getSelectedError();
         if (error == null)
             return null;
@@ -288,9 +291,10 @@
             }
         } else {
-            Conflict<? extends OsmPrimitive> c = Main.map.conflictDialog.getSelectedConflict();
+            ConflictDialog conflictDialog = MainApplication.getMap().conflictDialog;
+            Conflict<? extends OsmPrimitive> c = conflictDialog.getSelectedConflict();
             if (c != null) {
                 sel.add(c.getMy());
-            } else if (Main.map.conflictDialog.getConflicts() != null) {
-                sel = Main.map.conflictDialog.getConflicts().getMyConflictParties();
+            } else if (conflictDialog.getConflicts() != null) {
+                sel = conflictDialog.getConflicts().getMyConflictParties();
             }
         }
@@ -350,4 +354,5 @@
     protected void updateEnabledState() {
         DataSet ds = getLayerManager().getEditDataSet();
+        MapFrame map = MainApplication.getMap();
         switch (mode) {
         case "selection":
@@ -358,5 +363,5 @@
             break;
         case "conflict":
-            setEnabled(Main.map != null && Main.map.conflictDialog.getSelectedConflict() != null);
+            setEnabled(map != null && map.conflictDialog.getSelectedConflict() != null);
             break;
         case "download":
@@ -364,11 +369,11 @@
             break;
         case "problem":
-            setEnabled(Main.map != null && Main.map.validatorDialog.getSelectedError() != null);
+            setEnabled(map != null && map.validatorDialog.getSelectedError() != null);
             break;
         case "previous":
-            setEnabled(Main.isDisplayingMapView() && Main.map.mapView.hasZoomUndoEntries());
+            setEnabled(MainApplication.isDisplayingMapView() && map.mapView.hasZoomUndoEntries());
             break;
         case "next":
-            setEnabled(Main.isDisplayingMapView() && Main.map.mapView.hasZoomRedoEntries());
+            setEnabled(MainApplication.isDisplayingMapView() && map.mapView.hasZoomRedoEntries());
             break;
         default:
Index: /trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(revision 12630)
@@ -36,4 +36,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask;
@@ -113,5 +114,5 @@
                     // uses 'SwingUtilities.invokeLater' to fire events so we have to do the same.)
                     SwingUtilities.invokeLater(() -> {
-                            Main.map.relationListDialog.selectRelation(relation);
+                            MainApplication.getMap().relationListDialog.selectRelation(relation);
                             if (Main.pref.getBoolean("multipoly.show-relation-editor", false)) {
                                 //Open relation edit window, if set up in preferences
Index: /trunk/src/org/openstreetmap/josm/actions/DeleteAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DeleteAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/DeleteAction.java	(revision 12630)
@@ -9,6 +9,7 @@
 import java.util.Collection;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -30,7 +31,8 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (!isEnabled() || !Main.map.mapView.isActiveLayerVisible())
+        MapFrame map = MainApplication.getMap();
+        if (!isEnabled() || !map.mapView.isActiveLayerVisible())
             return;
-        Main.map.mapModeDelete.doActionPerformed(e);
+        map.mapModeDelete.doActionPerformed(e);
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/DialogsToggleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DialogsToggleAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/DialogsToggleAction.java	(revision 12630)
@@ -9,4 +9,6 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -47,5 +49,5 @@
 
     protected void setMode() {
-        if (Main.isDisplayingMapView()) {
+        if (MainApplication.isDisplayingMapView()) {
             boolean selected = isSelected();
             if (!selected) {
@@ -53,6 +55,7 @@
                 sideToolbarPreviouslyVisible = Main.pref.getBoolean("sidetoolbar.visible", true);
             }
-            Main.map.setDialogsPanelVisible(selected);
-            Main.map.statusLine.setVisible(selected || Main.pref.getBoolean("statusbar.always-visible", true));
+            MapFrame map = MainApplication.getMap();
+            map.setDialogsPanelVisible(selected);
+            map.statusLine.setVisible(selected || Main.pref.getBoolean("statusbar.always-visible", true));
             Main.main.menu.setVisible(selected || Main.pref.getBoolean("menu.always-visible", true));
             // Toolbars listen to preference changes, use it here
@@ -63,5 +66,5 @@
                 Main.pref.put("sidetoolbar.visible", selected);
             }
-            Main.map.mapView.rememberLastPositionOnScreen();
+            map.mapView.rememberLastPositionOnScreen();
         }
     }
Index: /trunk/src/org/openstreetmap/josm/actions/DownloadAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DownloadAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/DownloadAction.java	(revision 12630)
@@ -24,4 +24,6 @@
 import org.openstreetmap.josm.data.ProjectionBounds;
 import org.openstreetmap.josm.data.ViewportData;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.download.DownloadDialog;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -125,7 +127,8 @@
                 }
                 // Zoom to the larger download bounds
-                if (Main.map != null && bounds != null) {
+                MapFrame map = MainApplication.getMap();
+                if (map != null && bounds != null) {
                     final ProjectionBounds pb = bounds;
-                    GuiHelper.runInEDTAndWait(() -> Main.map.mapView.zoomTo(new ViewportData(pb)));
+                    GuiHelper.runInEDTAndWait(() -> map.mapView.zoomTo(new ViewportData(pb)));
                 }
             });
Index: /trunk/src/org/openstreetmap/josm/actions/DownloadNotesInViewAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DownloadNotesInViewAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/DownloadNotesInViewAction.java	(revision 12630)
@@ -11,4 +11,5 @@
 import org.openstreetmap.josm.actions.downloadtasks.PostDownloadHandler;
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.io.OnlineResource;
 
@@ -43,5 +44,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        final Bounds bounds = Main.map.mapView.getRealBounds();
+        final Bounds bounds = MainApplication.getMap().mapView.getRealBounds();
         DownloadNotesTask task = new DownloadNotesTask();
         task.setZoomAfterDownload(false);
Index: /trunk/src/org/openstreetmap/josm/actions/DownloadOsmInViewAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DownloadOsmInViewAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/DownloadOsmInViewAction.java	(revision 12630)
@@ -11,4 +11,5 @@
 import org.openstreetmap.josm.actions.downloadtasks.PostDownloadHandler;
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.io.BoundingBoxDownloader;
 import org.openstreetmap.josm.io.OnlineResource;
@@ -31,5 +32,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        final Bounds bounds = Main.map.mapView.getRealBounds();
+        final Bounds bounds = MainApplication.getMap().mapView.getRealBounds();
         DownloadOsmInViewTask task = new DownloadOsmInViewTask();
         task.setZoomAfterDownload(false);
Index: /trunk/src/org/openstreetmap/josm/actions/FollowLineAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/FollowLineAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/FollowLineAction.java	(revision 12630)
@@ -19,4 +19,6 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -63,5 +65,6 @@
         if (osmLayer == null)
             return;
-        if (!(Main.map.mapMode instanceof DrawAction)) return; // We are not on draw mode
+        MapFrame map = MainApplication.getMap();
+        if (!(map.mapMode instanceof DrawAction)) return; // We are not on draw mode
 
         Collection<Node> selectedPoints = osmLayer.data.getSelectedNodes();
@@ -70,5 +73,5 @@
             return;
 
-        Node last = ((DrawAction) Main.map.mapMode).getCurrentBaseNode();
+        Node last = ((DrawAction) map.mapMode).getCurrentBaseNode();
         if (last == null)
             return;
@@ -122,5 +125,5 @@
             // from aerial imagery or GPS tracks.
             if (DrawAction.VIEWPORT_FOLLOWING.get()) {
-                Main.map.mapView.smoothScrollTo(newPoint.getEastNorth());
+                map.mapView.smoothScrollTo(newPoint.getEastNorth());
             }
         }
Index: /trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java	(revision 12630)
@@ -29,4 +29,7 @@
 import org.openstreetmap.josm.data.imagery.OffsetBookmark;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
 import org.openstreetmap.josm.gui.layer.imagery.TileSourceDisplaySettings;
@@ -72,6 +75,6 @@
         EastNorth curOff = old == null ? EastNorth.ZERO : old.getDisplacement(Main.getProjection());
         LatLon center;
-        if (Main.isDisplayingMapView()) {
-            center = Main.getProjection().eastNorth2latlon(Main.map.mapView.getCenter());
+        if (MainApplication.isDisplayingMapView()) {
+            center = Main.getProjection().eastNorth2latlon(MainApplication.getMap().mapView.getCenter());
         } else {
             center = LatLon.ZERO;
@@ -98,6 +101,7 @@
 
     protected void addListeners() {
-        Main.map.mapView.addMouseListener(this);
-        Main.map.mapView.addMouseMotionListener(this);
+        MapView mapView = MainApplication.getMap().mapView;
+        mapView.addMouseListener(this);
+        mapView.addMouseMotionListener(this);
         try {
             Toolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.KEY_EVENT_MASK);
@@ -126,7 +130,8 @@
             Logging.error(ex);
         }
-        if (Main.isDisplayingMapView()) {
-            Main.map.mapView.removeMouseMotionListener(this);
-            Main.map.mapView.removeMouseListener(this);
+        if (MainApplication.isDisplayingMapView()) {
+            MapFrame map = MainApplication.getMap();
+            map.mapView.removeMouseMotionListener(this);
+            map.mapView.removeMouseListener(this);
         }
     }
@@ -172,6 +177,7 @@
         if (layer.isVisible()) {
             requestFocusInMapView();
-            prevEastNorth = Main.map.mapView.getEastNorth(e.getX(), e.getY());
-            Main.map.mapView.setNewCursor(Cursor.MOVE_CURSOR, this);
+            MapView mapView = MainApplication.getMap().mapView;
+            prevEastNorth = mapView.getEastNorth(e.getX(), e.getY());
+            mapView.setNewCursor(Cursor.MOVE_CURSOR, this);
         }
     }
@@ -180,5 +186,5 @@
     public void mouseDragged(MouseEvent e) {
         if (layer == null || prevEastNorth == null) return;
-        EastNorth eastNorth = Main.map.mapView.getEastNorth(e.getX(), e.getY());
+        EastNorth eastNorth = MainApplication.getMap().mapView.getEastNorth(e.getX(), e.getY());
         EastNorth d = tempOffset.getDisplacement().add(eastNorth).subtract(prevEastNorth);
         tempOffset.setDisplacement(d);
@@ -192,6 +198,7 @@
     @Override
     public void mouseReleased(MouseEvent e) {
-        Main.map.mapView.repaint();
-        Main.map.mapView.resetCursor(this);
+        MapView mapView = MainApplication.getMap().mapView;
+        mapView.repaint();
+        mapView.resetCursor(this);
         prevEastNorth = null;
     }
@@ -199,7 +206,8 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (offsetDialog != null || layer == null || Main.map == null)
+        MapFrame map = MainApplication.getMap();
+        if (offsetDialog != null || layer == null || map == null)
             return;
-        oldMapMode = Main.map.mapMode;
+        oldMapMode = map.mapMode;
         super.actionPerformed(e);
     }
@@ -266,6 +274,6 @@
             }
             updateOffsetIntl();
-            if (Main.isDisplayingMapView()) {
-                Main.map.repaint();
+            if (MainApplication.isDisplayingMapView()) {
+                MainApplication.getMap().repaint();
             }
         }
@@ -334,11 +342,12 @@
 
         private void restoreMapModeState() {
-            if (Main.map == null)
+            MapFrame map = MainApplication.getMap();
+            if (map == null)
                 return;
             if (oldMapMode != null) {
-                Main.map.selectMapMode(oldMapMode);
+                map.selectMapMode(oldMapMode);
                 oldMapMode = null;
             } else {
-                Main.map.selectSelectTool(false);
+                map.selectSelectTool(false);
             }
         }
Index: /trunk/src/org/openstreetmap/josm/actions/InfoWebAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/InfoWebAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/InfoWebAction.java	(revision 12630)
@@ -12,4 +12,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -59,5 +60,5 @@
     private void updateEnabledStateWithNotes() {
         // Allows enabling if a note is selected, even if no OSM object is selected
-        if (!isEnabled() && Main.isDisplayingMapView() && Main.map.noteDialog.getSelectedNote() != null) {
+        if (!isEnabled() && MainApplication.isDisplayingMapView() && MainApplication.getMap().noteDialog.getSelectedNote() != null) {
             setEnabled(true);
         }
Index: /trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java	(revision 12630)
@@ -30,4 +30,6 @@
 import org.openstreetmap.josm.data.osm.WaySegment;
 import org.openstreetmap.josm.data.projection.Projections;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.MultiMap;
@@ -92,8 +94,7 @@
 
         // Planning phase: decide where we'll insert the nodes and put it all in "data"
+        MapView mapView = MainApplication.getMap().mapView;
         for (Node node : selectedNodes) {
-            List<WaySegment> wss = Main.map.mapView.getNearestWaySegments(
-                    Main.map.mapView.getPoint(node), OsmPrimitive::isSelectable);
-
+            List<WaySegment> wss = mapView.getNearestWaySegments(mapView.getPoint(node), OsmPrimitive::isSelectable);
             MultiMap<Way, Integer> insertPoints = new MultiMap<>();
             for (WaySegment ws : wss) {
Index: /trunk/src/org/openstreetmap/josm/actions/JumpToAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/JumpToAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/JumpToAction.java	(revision 12630)
@@ -21,4 +21,5 @@
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
@@ -98,8 +99,8 @@
      */
     public void showJumpToDialog() {
-        if (!Main.isDisplayingMapView()) {
+        if (!MainApplication.isDisplayingMapView()) {
             return;
         }
-        MapView mv = Main.map.mapView;
+        MapView mv = MainApplication.getMap().mapView;
 
         final Optional<Bounds> boundsFromClipboard = Optional
@@ -208,5 +209,5 @@
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.isDisplayingMapView());
+        setEnabled(MainApplication.isDisplayingMapView());
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/LassoModeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/LassoModeAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/LassoModeAction.java	(revision 12630)
@@ -4,6 +4,7 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.mapmode.MapMode;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -27,7 +28,8 @@
     @Override
     public void enterMode() {
-        if (Main.isDisplayingMapView()) {
-            Main.map.mapModeSelect.setLassoMode(true);
-            Main.map.mapModeSelect.enterMode();
+        if (MainApplication.isDisplayingMapView()) {
+            MapFrame map = MainApplication.getMap();
+            map.mapModeSelect.setLassoMode(true);
+            map.mapModeSelect.enterMode();
         }
         super.enterMode();
@@ -36,7 +38,8 @@
     @Override
     public void exitMode() {
-        if (Main.isDisplayingMapView()) {
-            Main.map.mapModeSelect.setLassoMode(false);
-            Main.map.mapModeSelect.exitMode();
+        if (MainApplication.isDisplayingMapView()) {
+            MapFrame map = MainApplication.getMap();
+            map.mapModeSelect.setLassoMode(false);
+            map.mapModeSelect.exitMode();
         }
         super.exitMode();
@@ -45,5 +48,5 @@
     @Override
     public boolean layerIsSupported(Layer l) {
-        return Main.map.mapModeSelect.layerIsSupported(l);
+        return MainApplication.getMap().mapModeSelect.layerIsSupported(l);
     }
 }
Index: /trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 12630)
@@ -35,4 +35,6 @@
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.conflict.tags.CombinePrimitiveResolverDialog;
@@ -75,6 +77,7 @@
 
         if (selectedNodes.size() == 1) {
-            List<Node> nearestNodes = Main.map.mapView.getNearestNodes(
-                    Main.map.mapView.getPoint(selectedNodes.get(0)), selectedNodes, OsmPrimitive::isUsable);
+            MapView mapView = MainApplication.getMap().mapView;
+            List<Node> nearestNodes = mapView.getNearestNodes(
+                    mapView.getPoint(selectedNodes.get(0)), selectedNodes, OsmPrimitive::isUsable);
             if (nearestNodes.isEmpty()) {
                 new Notification(
Index: /trunk/src/org/openstreetmap/josm/actions/MoveAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/MoveAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/MoveAction.java	(revision 12630)
@@ -19,4 +19,6 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.visitor.AllNodesVisitor;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -102,5 +104,5 @@
         DataSet ds = getLayerManager().getEditDataSet();
 
-        if (!Main.isDisplayingMapView() || ds == null)
+        if (!MainApplication.isDisplayingMapView() || ds == null)
             return;
 
@@ -108,6 +110,7 @@
         // achive an 1-pixel movement
 
-        EastNorth en1 = Main.map.mapView.getEastNorth(100, 100);
-        EastNorth en2 = Main.map.mapView.getEastNorth(101, 101);
+        MapView mapView = MainApplication.getMap().mapView;
+        EastNorth en1 = mapView.getEastNorth(100, 100);
+        EastNorth en2 = mapView.getEastNorth(101, 101);
 
         double distx = en2.east() - en1.east();
@@ -162,5 +165,5 @@
         }
 
-        Main.map.mapView.repaint();
+        mapView.repaint();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/MoveNodeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/MoveNodeAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/MoveNodeAction.java	(revision 12630)
@@ -13,4 +13,5 @@
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.LatLonDialog;
 
@@ -50,5 +51,5 @@
         // move the node
         Main.main.undoRedo.add(new MoveCommand(n, coordinates));
-        Main.map.mapView.repaint();
+        MainApplication.getMap().mapView.repaint();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 12630)
@@ -33,4 +33,6 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
@@ -178,6 +180,7 @@
         @Override
         protected void finish() {
-            if (Main.map != null) {
-                Main.map.repaint();
+            MapFrame map = MainApplication.getMap();
+            if (map != null) {
+                map.repaint();
             }
         }
Index: /trunk/src/org/openstreetmap/josm/actions/RedoAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/RedoAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/RedoAction.java	(revision 12630)
@@ -9,4 +9,6 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -31,7 +33,8 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (Main.map == null)
+        MapFrame map = MainApplication.getMap();
+        if (map == null)
             return;
-        Main.map.repaint();
+        map.repaint();
         Main.main.undoRedo.redo();
     }
Index: /trunk/src/org/openstreetmap/josm/actions/SelectByInternalPointAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SelectByInternalPointAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/SelectByInternalPointAction.java	(revision 12630)
@@ -17,4 +17,6 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.projection.Projection;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Geometry;
 
@@ -61,4 +63,5 @@
             }
         }
+        Projection projection = MainApplication.getMap().mapView.getProjection();
         for (Relation r : ds.getRelations()) {
             if (r.isUsable() && r.isMultipolygon() && r.isSelectable() && Geometry.isNodeInsideMultiPolygon(n, r, null)) {
@@ -72,6 +75,6 @@
                 // estimate multipolygon size by its bounding box area
                 BBox bBox = r.getBBox();
-                EastNorth en1 = Main.map.mapView.getProjection().latlon2eastNorth(bBox.getTopLeft());
-                EastNorth en2 = Main.map.mapView.getProjection().latlon2eastNorth(bBox.getBottomRight());
+                EastNorth en1 = projection.latlon2eastNorth(bBox.getTopLeft());
+                EastNorth en2 = projection.latlon2eastNorth(bBox.getBottomRight());
                 double s = Math.abs((en1.east() - en2.east()) * (en1.north() - en2.north()));
                 found.put(s <= 0 ? 1e8 : s, r);
Index: /trunk/src/org/openstreetmap/josm/actions/SessionLoadAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SessionLoadAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/SessionLoadAction.java	(revision 12630)
@@ -21,4 +21,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -133,5 +134,5 @@
         private void addLayers() {
             if (layers != null && !layers.isEmpty()) {
-                boolean noMap = Main.map == null;
+                boolean noMap = MainApplication.getMap() == null;
                 for (Layer l : layers) {
                     if (canceled)
@@ -143,5 +144,5 @@
                 }
                 if (noMap && viewport != null) {
-                    Main.map.mapView.scheduleZoomTo(viewport.getEastNorthViewport(Main.getProjection()));
+                    MainApplication.getMap().mapView.scheduleZoomTo(viewport.getEastNorthViewport(Main.getProjection()));
                 }
             }
Index: /trunk/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java	(revision 12630)
@@ -35,4 +35,5 @@
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapFrameListener;
@@ -283,5 +284,5 @@
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.isDisplayingMapView());
+        setEnabled(MainApplication.isDisplayingMapView());
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 12630)
@@ -43,4 +43,6 @@
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -255,5 +257,5 @@
             list.addListSelectionListener(e -> {
                 final Way selected = list.getSelectedValue();
-                if (selected != null && Main.isDisplayingMapView() && selected.getNodesCount() > 1) {
+                if (selected != null && MainApplication.isDisplayingMapView() && selected.getNodesCount() > 1) {
                     final Collection<WaySegment> segments = new ArrayList<>(selected.getNodesCount() - 1);
                     final Iterator<Node> it = selected.getNodes().iterator();
@@ -272,5 +274,5 @@
         protected void setHighlightedWaySegments(Collection<WaySegment> segments) {
             selectedWay.getDataSet().setHighlightedWaySegments(segments);
-            Main.map.mapView.repaint();
+            MainApplication.getMap().mapView.repaint();
         }
 
@@ -542,5 +544,6 @@
                 Arrays.asList("outer", "inner", "forward", "backward", "north", "south", "east", "west"));
 
-        final boolean isMapModeDraw = Main.map != null && Main.map.mapMode == Main.map.mapModeDraw;
+        final MapFrame map = MainApplication.getMap();
+        final boolean isMapModeDraw = map != null && map.mapMode == map.mapModeDraw;
 
         // Change the original way
Index: /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 12630)
@@ -39,4 +39,5 @@
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.Notification;
@@ -308,6 +309,6 @@
 
         // If this wasn't called from menu, place it where the cursor is/was
+        MapView mv = MainApplication.getMap().mapView;
         if (e.getSource() instanceof JPanel) {
-            MapView mv = Main.map.mapView;
             n.setCoor(mv.getLatLon(mv.lastMEvent.getX(), mv.lastMEvent.getY()));
         }
@@ -315,5 +316,5 @@
         Main.main.undoRedo.add(new SequenceCommand(tr("Unglued Node"), cmds));
         getLayerManager().getEditDataSet().setSelected(n);
-        Main.map.mapView.repaint();
+        mv.repaint();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/UndoAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UndoAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/UndoAction.java	(revision 12630)
@@ -9,4 +9,6 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -31,7 +33,8 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (Main.map == null)
+        MapFrame map = MainApplication.getMap();
+        if (map == null)
             return;
-        Main.map.repaint();
+        map.repaint();
         Main.main.undoRedo.undo();
     }
Index: /trunk/src/org/openstreetmap/josm/actions/UploadAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 12630)
@@ -22,4 +22,5 @@
 import org.openstreetmap.josm.data.conflict.ConflictCollection;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.io.UploadDialog;
 import org.openstreetmap.josm.gui.io.UploadPrimitivesTask;
@@ -259,5 +260,5 @@
         if (!isEnabled())
             return;
-        if (Main.map == null) {
+        if (MainApplication.getMap() == null) {
             JOptionPane.showMessageDialog(
                     Main.parent,
Index: /trunk/src/org/openstreetmap/josm/actions/ValidateAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ValidateAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/ValidateAction.java	(revision 12630)
@@ -18,4 +18,6 @@
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.data.validation.util.AggregatePrimitivesVisitor;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.ValidatorLayer;
@@ -62,5 +64,6 @@
      */
     public void doValidate(boolean getSelectedItems) {
-        if (Main.map == null || !Main.map.isVisible())
+        MapFrame map = MainApplication.getMap();
+        if (map == null || !map.isVisible())
             return;
 
@@ -140,6 +143,7 @@
             //
             GuiHelper.runInEDT(() -> {
-                Main.map.validatorDialog.tree.setErrors(errors);
-                Main.map.validatorDialog.unfurlDialog();
+                MapFrame map = MainApplication.getMap();
+                map.validatorDialog.tree.setErrors(errors);
+                map.validatorDialog.unfurlDialog();
                 //FIXME: nicer way to find / invalidate the corresponding error layer
                 Main.getLayerManager().getLayersOfType(ValidatorLayer.class).forEach(ValidatorLayer::invalidate);
Index: /trunk/src/org/openstreetmap/josm/actions/ZoomInAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ZoomInAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/ZoomInAction.java	(revision 12630)
@@ -9,4 +9,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -46,6 +47,6 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (!Main.isDisplayingMapView()) return;
-        Main.map.mapView.zoomIn();
+        if (!MainApplication.isDisplayingMapView()) return;
+        MainApplication.getMap().mapView.zoomIn();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/ZoomOutAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ZoomOutAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/ZoomOutAction.java	(revision 12630)
@@ -9,4 +9,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -32,6 +33,6 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (!Main.isDisplayingMapView()) return;
-        Main.map.mapView.zoomOut();
+        if (!MainApplication.isDisplayingMapView()) return;
+        MainApplication.getMap().mapView.zoomOut();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java	(revision 12630)
@@ -18,4 +18,6 @@
 import org.openstreetmap.josm.data.ViewportData;
 import org.openstreetmap.josm.data.gpx.GpxData;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
@@ -170,6 +172,7 @@
                 mergeLayer.mergeFrom(layer);
                 mergeLayer.invalidate();
-                if (Main.map != null && zoomAfterDownload && layer instanceof GpxLayer) {
-                    Main.map.mapView.scheduleZoomTo(new ViewportData(layer.getViewProjectionBounds()));
+                MapFrame map = MainApplication.getMap();
+                if (map != null && zoomAfterDownload && layer instanceof GpxLayer) {
+                    map.mapView.scheduleZoomTo(new ViewportData(layer.getViewProjectionBounds()));
                 }
                 return mergeLayer;
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java	(revision 12630)
@@ -19,4 +19,6 @@
 import org.openstreetmap.josm.data.osm.NoteData;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.NoteLayer;
@@ -132,6 +134,7 @@
             if (!noteLayers.isEmpty()) {
                 noteLayers.get(0).getNoteData().addNotes(notesData);
-                if (Main.map != null && zoomAfterDownload) {
-                    Main.map.mapView.scheduleZoomTo(new ViewportData(noteLayer.getViewProjectionBounds()));
+                MapFrame map = MainApplication.getMap();
+                if (map != null && zoomAfterDownload) {
+                    map.mapView.scheduleZoomTo(new ViewportData(noteLayer.getViewProjectionBounds()));
                 }
             } else {
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java	(revision 12630)
@@ -32,4 +32,5 @@
 import org.openstreetmap.josm.data.osm.history.HistoryRelation;
 import org.openstreetmap.josm.data.osm.history.HistoryWay;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.history.HistoryLoadTask;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -195,5 +196,5 @@
                 // No more primitive to update. Processing is finished
                 // Be sure all updated primitives are correctly drawn
-                Main.map.repaint();
+                MainApplication.getMap().repaint();
             } else {
                 // Some primitives still need to be loaded
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 12630)
@@ -27,4 +27,6 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.io.UpdatePrimitivesTask;
@@ -228,5 +230,5 @@
 
         protected OsmDataLayer getEditLayer() {
-            if (!Main.isDisplayingMapView()) return null;
+            if (!MainApplication.isDisplayingMapView()) return null;
             return Main.getLayerManager().getEditLayer();
         }
@@ -280,6 +282,7 @@
                 Collection<OsmPrimitive> primitivesToUpdate = searchPrimitivesToUpdate(bounds, layer.data);
                 layer.mergeFrom(dataSet);
-                if (Main.map != null && zoomAfterDownload && bounds != null) {
-                    Main.map.mapView.zoomTo(new ViewportData(computeBbox(bounds)));
+                MapFrame map = MainApplication.getMap();
+                if (map != null && zoomAfterDownload && bounds != null) {
+                    map.mapView.zoomTo(new ViewportData(computeBbox(bounds)));
                 }
                 if (!primitivesToUpdate.isEmpty()) {
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java	(revision 12630)
@@ -25,4 +25,6 @@
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -131,6 +133,7 @@
                 JOptionPane.WARNING_MESSAGE
         );
-        Main.map.conflictDialog.unfurlDialog();
-        Main.map.repaint();
+        MapFrame map = MainApplication.getMap();
+        map.conflictDialog.unfurlDialog();
+        map.repaint();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java	(revision 12630)
@@ -13,4 +13,6 @@
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.NoteData;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.NoteInputDialog;
 import org.openstreetmap.josm.gui.Notification;
@@ -48,6 +50,7 @@
     public void enterMode() {
         super.enterMode();
-        Main.map.mapView.addMouseListener(this);
-        Main.map.keyDetector.addKeyListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.addMouseListener(this);
+        map.keyDetector.addKeyListener(this);
     }
 
@@ -55,6 +58,7 @@
     public void exitMode() {
         super.exitMode();
-        Main.map.mapView.removeMouseListener(this);
-        Main.map.keyDetector.removeKeyListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.removeMouseListener(this);
+        map.keyDetector.removeKeyListener(this);
     }
 
@@ -65,5 +69,6 @@
             return;
         }
-        Main.map.selectMapMode(Main.map.mapModeSelect);
+        MapFrame map = MainApplication.getMap();
+        map.selectMapMode(map.mapModeSelect);
 
         NoteInputDialog dialog = new NoteInputDialog(Main.parent, tr("Create new note"), tr("Create note"));
@@ -76,5 +81,5 @@
         String input = dialog.getInputText();
         if (input != null && !input.isEmpty()) {
-            LatLon latlon = Main.map.mapView.getLatLon(e.getPoint().x, e.getPoint().y);
+            LatLon latlon = map.mapView.getLatLon(e.getPoint().x, e.getPoint().y);
             noteData.createNote(latlon, input);
         } else {
@@ -86,5 +91,6 @@
     public void doKeyPressed(KeyEvent e) {
         if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
-            Main.map.selectMapMode(Main.map.mapModeSelect);
+            MapFrame map = MainApplication.getMap();
+            map.selectMapMode(map.mapModeSelect);
         }
     }
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 12630)
@@ -21,4 +21,7 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.WaySegment;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationDialogManager;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -110,8 +113,9 @@
         drawTargetHighlight = Main.pref.getBoolean("draw.target-highlight", true);
 
-        Main.map.mapView.addMouseListener(this);
-        Main.map.mapView.addMouseMotionListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.addMouseListener(this);
+        map.mapView.addMouseMotionListener(this);
         // This is required to update the cursors when ctrl/shift/alt is pressed
-        Main.map.keyDetector.addModifierExListener(this);
+        map.keyDetector.addModifierExListener(this);
     }
 
@@ -119,7 +123,8 @@
     public void exitMode() {
         super.exitMode();
-        Main.map.mapView.removeMouseListener(this);
-        Main.map.mapView.removeMouseMotionListener(this);
-        Main.map.keyDetector.removeModifierExListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.removeMouseListener(this);
+        map.mapView.removeMouseMotionListener(this);
+        map.keyDetector.removeModifierExListener(this);
         removeHighlighting();
     }
@@ -245,11 +250,12 @@
      */
     private void updateCursor(MouseEvent e, int modifiers) {
-        if (!Main.isDisplayingMapView())
-            return;
-        if (!Main.map.mapView.isActiveLayerVisible() || e == null)
+        if (!MainApplication.isDisplayingMapView())
+            return;
+        MapFrame map = MainApplication.getMap();
+        if (!map.mapView.isActiveLayerVisible() || e == null)
             return;
 
         DeleteParameters parameters = getDeleteParameters(e, modifiers);
-        Main.map.mapView.setNewCursor(parameters.mode.cursor(), this);
+        map.mapView.setNewCursor(parameters.mode.cursor(), this);
     }
 
@@ -288,10 +294,11 @@
         if (e.getButton() != MouseEvent.BUTTON1)
             return;
-        if (!Main.map.mapView.isActiveLayerVisible())
+        MapFrame map = MainApplication.getMap();
+        if (!map.mapView.isActiveLayerVisible())
             return;
 
         // request focus in order to enable the expected keyboard shortcuts
         //
-        Main.map.mapView.requestFocus();
+        map.mapView.requestFocus();
 
         Command c = buildDeleteCommands(e, e.getModifiersEx(), false);
@@ -318,5 +325,5 @@
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.isDisplayingMapView() && Main.map.mapView.isActiveLayerDrawable());
+        setEnabled(MainApplication.isDisplayingMapView() && MainApplication.getMap().mapView.isActiveLayerDrawable());
     }
 
@@ -363,7 +370,8 @@
         DeleteParameters result = new DeleteParameters();
 
-        result.nearestNode = Main.map.mapView.getNearestNode(e.getPoint(), OsmPrimitive::isSelectable);
+        MapView mapView = MainApplication.getMap().mapView;
+        result.nearestNode = mapView.getNearestNode(e.getPoint(), OsmPrimitive::isSelectable);
         if (result.nearestNode == null) {
-            result.nearestSegment = Main.map.mapView.getNearestWaySegment(e.getPoint(), OsmPrimitive::isSelectable);
+            result.nearestSegment = mapView.getNearestWaySegment(e.getPoint(), OsmPrimitive::isSelectable);
             if (result.nearestSegment != null) {
                 if (shift) {
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 12630)
@@ -54,5 +54,7 @@
 import org.openstreetmap.josm.data.preferences.DoubleProperty;
 import org.openstreetmap.josm.data.preferences.StrokeProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MainMenu;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.MapViewState.MapViewPoint;
@@ -270,14 +272,15 @@
         snapCheckboxMenuItem.getAction().setEnabled(true);
 
-        Main.map.statusLine.getAnglePanel().addMouseListener(snapHelper.anglePopupListener);
+        MapFrame map = MainApplication.getMap();
+        map.statusLine.getAnglePanel().addMouseListener(snapHelper.anglePopupListener);
         Main.registerActionShortcut(backspaceAction, backspaceShortcut);
 
-        Main.map.mapView.addMouseListener(this);
-        Main.map.mapView.addMouseMotionListener(this);
-        Main.map.mapView.addTemporaryLayer(this);
+        map.mapView.addMouseListener(this);
+        map.mapView.addMouseMotionListener(this);
+        map.mapView.addTemporaryLayer(this);
         SelectionEventManager.getInstance().addSelectionListenerForEdt(this);
 
-        Main.map.keyDetector.addKeyListener(this);
-        Main.map.keyDetector.addModifierExListener(this);
+        map.keyDetector.addKeyListener(this);
+        map.keyDetector.addModifierExListener(this);
         ignoreNextKeyRelease = true;
     }
@@ -286,7 +289,8 @@
     public void exitMode() {
         super.exitMode();
-        Main.map.mapView.removeMouseListener(this);
-        Main.map.mapView.removeMouseMotionListener(this);
-        Main.map.mapView.removeTemporaryLayer(this);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.removeMouseListener(this);
+        map.mapView.removeMouseMotionListener(this);
+        map.mapView.removeTemporaryLayer(this);
         SelectionEventManager.getInstance().removeSelectionListener(this);
         Main.unregisterActionShortcut(backspaceAction, backspaceShortcut);
@@ -294,10 +298,10 @@
         snapCheckboxMenuItem.getAction().setEnabled(false);
 
-        Main.map.statusLine.getAnglePanel().removeMouseListener(snapHelper.anglePopupListener);
-        Main.map.statusLine.activateAnglePanel(false);
+        map.statusLine.getAnglePanel().removeMouseListener(snapHelper.anglePopupListener);
+        map.statusLine.activateAnglePanel(false);
 
         removeHighlighting();
-        Main.map.keyDetector.removeKeyListener(this);
-        Main.map.keyDetector.removeModifierExListener(this);
+        map.keyDetector.removeKeyListener(this);
+        map.keyDetector.removeModifierExListener(this);
     }
 
@@ -307,5 +311,5 @@
     @Override
     public void modifiersExChanged(int modifiers) {
-        if (!Main.isDisplayingMapView() || !Main.map.mapView.isActiveLayerDrawable())
+        if (!MainApplication.isDisplayingMapView() || !MainApplication.getMap().mapView.isActiveLayerDrawable())
             return;
         updateKeyModifiersEx(modifiers);
@@ -341,5 +345,5 @@
     @Override
     public void selectionChanged(SelectionChangeEvent event) {
-        if (!Main.map.mapView.isActiveLayerDrawable())
+        if (!MainApplication.getMap().mapView.isActiveLayerDrawable())
             return;
         computeHelperLine();
@@ -360,5 +364,5 @@
         lastUsedNode = null;
         wayIsFinished = true;
-        Main.map.selectSelectTool(true);
+        MainApplication.getMap().selectSelectTool(true);
         snapHelper.noSnapNow();
 
@@ -392,9 +396,10 @@
         if (e.getButton() != MouseEvent.BUTTON1)
             return;
-        if (!Main.map.mapView.isActiveLayerDrawable())
+        MapView mapView = MainApplication.getMap().mapView;
+        if (!mapView.isActiveLayerDrawable())
             return;
         // request focus in order to enable the expected keyboard shortcuts
         //
-        Main.map.mapView.requestFocus();
+        mapView.requestFocus();
 
         if (e.getClickCount() > 1 && mousePos != null && mousePos.equals(oldMousePos)) {
@@ -417,5 +422,5 @@
 
         boolean newNode = false;
-        Node n = Main.map.mapView.getNearestNode(mousePos, OsmPrimitive::isSelectable);
+        Node n = mapView.getNearestNode(mousePos, OsmPrimitive::isSelectable);
         if (ctrl) {
             Iterator<Way> it = ds.getSelectedWays().iterator();
@@ -453,5 +458,5 @@
                 newEN = snapHelper.getSnapPoint(foundPoint);
                 // do not add new node if there is some node within snapping distance
-                double tolerance = Main.map.mapView.getDist100Pixel() * toleranceMultiplier;
+                double tolerance = mapView.getDist100Pixel() * toleranceMultiplier;
                 if (foundPoint.distance(newEN) > tolerance) {
                     n = new Node(newEN); // point != projected, so we create new node
@@ -459,5 +464,5 @@
                 }
             } else { // n==null, no node found in clicked area
-                EastNorth mouseEN = Main.map.mapView.getEastNorth(e.getX(), e.getY());
+                EastNorth mouseEN = mapView.getEastNorth(e.getX(), e.getY());
                 newEN = snapHelper.isSnapOn() ? snapHelper.getSnapPoint(mouseEN) : mouseEN;
                 n = new Node(newEN); //create node at clicked point
@@ -486,6 +491,6 @@
             if (!ctrl) {
                 // Insert the node into all the nearby way segments
-                List<WaySegment> wss = Main.map.mapView.getNearestWaySegments(
-                        Main.map.mapView.getPoint(n), OsmPrimitive::isSelectable);
+                List<WaySegment> wss = mapView.getNearestWaySegments(
+                        mapView.getPoint(n), OsmPrimitive::isSelectable);
                 if (snapHelper.isActive()) {
                     tryToMoveNodeOnIntersection(wss, n);
@@ -622,5 +627,5 @@
         // from aerial imagery or GPS tracks.
         if (VIEWPORT_FOLLOWING.get()) {
-            Main.map.mapView.smoothScrollTo(n.getEastNorth());
+            mapView.smoothScrollTo(n.getEastNorth());
         }
         computeHelperLine();
@@ -767,5 +772,5 @@
     @Override
     public void mouseMoved(MouseEvent e) {
-        if (!Main.map.mapView.isActiveLayerDrawable())
+        if (!MainApplication.getMap().mapView.isActiveLayerDrawable())
             return;
 
@@ -787,5 +792,5 @@
     private void tryToSetBaseSegmentForAngleSnap() {
         if (mousePos != null) {
-            WaySegment seg = Main.map.mapView.getNearestWaySegment(mousePos, OsmPrimitive::isSelectable);
+            WaySegment seg = MainApplication.getMap().mapView.getNearestWaySegment(mousePos, OsmPrimitive::isSelectable);
             if (seg != null) {
                 snapHelper.setBaseSegment(seg);
@@ -809,5 +814,5 @@
         Collection<OsmPrimitive> selection = getLayerManager().getEditDataSet().getSelected();
 
-        MapView mv = Main.map.mapView;
+        MapView mv = MainApplication.getMap().mapView;
         Node currentMouseNode = null;
         mouseOnExistingNode = null;
@@ -864,8 +869,9 @@
 
     static void showStatusInfo(double angle, double hdg, double distance, boolean activeFlag) {
-        Main.map.statusLine.setAngle(angle);
-        Main.map.statusLine.activateAnglePanel(activeFlag);
-        Main.map.statusLine.setHeading(hdg);
-        Main.map.statusLine.setDist(distance);
+        MapFrame map = MainApplication.getMap();
+        map.statusLine.setAngle(angle);
+        map.statusLine.activateAnglePanel(activeFlag);
+        map.statusLine.setHeading(hdg);
+        map.statusLine.setDist(distance);
     }
 
@@ -1060,5 +1066,6 @@
         // fall through to default action.
         // (for semi-parallel lines, intersection might be miles away!)
-        if (Main.map.mapView.getPoint2D(n).distance(Main.map.mapView.getPoint2D(intersection)) < SNAP_TO_INTERSECTION_THRESHOLD.get()) {
+        MapFrame map = MainApplication.getMap();
+        if (map.mapView.getPoint2D(n).distance(map.mapView.getPoint2D(intersection)) < SNAP_TO_INTERSECTION_THRESHOLD.get()) {
             n.setEastNorth(intersection);
             return;
@@ -1113,8 +1120,9 @@
     private void addHighlighting() {
         newHighlights = new HashSet<>();
+        MapView mapView = MainApplication.getMap().mapView;
 
         // if ctrl key is held ("no join"), don't highlight anything
         if (ctrl) {
-            Main.map.mapView.setNewCursor(cursor, this);
+            mapView.setNewCursor(cursor, this);
             redrawIfRequired();
             return;
@@ -1123,9 +1131,9 @@
         // This happens when nothing is selected, but we still want to highlight the "target node"
         if (mouseOnExistingNode == null && mousePos != null && getLayerManager().getEditDataSet().selectionEmpty()) {
-            mouseOnExistingNode = Main.map.mapView.getNearestNode(mousePos, OsmPrimitive::isSelectable);
+            mouseOnExistingNode = mapView.getNearestNode(mousePos, OsmPrimitive::isSelectable);
         }
 
         if (mouseOnExistingNode != null) {
-            Main.map.mapView.setNewCursor(cursorJoinNode, this);
+            mapView.setNewCursor(cursorJoinNode, this);
             newHighlights.add(mouseOnExistingNode);
             redrawIfRequired();
@@ -1135,10 +1143,10 @@
         // Insert the node into all the nearby way segments
         if (mouseOnExistingWays.isEmpty()) {
-            Main.map.mapView.setNewCursor(cursor, this);
+            mapView.setNewCursor(cursor, this);
             redrawIfRequired();
             return;
         }
 
-        Main.map.mapView.setNewCursor(cursorJoinWay, this);
+        mapView.setNewCursor(cursorJoinWay, this);
         newHighlights.addAll(mouseOnExistingWays);
         redrawIfRequired();
@@ -1157,9 +1165,10 @@
     public void paint(Graphics2D g, MapView mv, Bounds box) {
         // sanity checks
-        if (Main.map.mapView == null || mousePos == null
+        MapView mapView = MainApplication.getMap().mapView;
+        if (mapView == null || mousePos == null
                 // don't draw line if we don't know where from or where to
                 || currentMouseEastNorth == null || getCurrentBaseNode() == null
                 // don't draw line if mouse is outside window
-                || !Main.map.mapView.getState().getForView(mousePos.getX(), mousePos.getY()).isInView())
+                || !mapView.getState().getForView(mousePos.getX(), mousePos.getY()).isInView())
             return;
 
@@ -1368,5 +1377,6 @@
         @Override
         protected void updateEnabledState() {
-            setEnabled(Main.map != null && Main.map.mapMode instanceof DrawAction);
+            MapFrame map = MainApplication.getMap();
+            setEnabled(map != null && map.mapMode instanceof DrawAction);
         }
     }
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawSnapHelper.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawSnapHelper.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawSnapHelper.java	(revision 12630)
@@ -25,4 +25,6 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.MapViewState;
 import org.openstreetmap.josm.gui.MapViewState.MapViewPoint;
@@ -335,4 +337,5 @@
      */
     public void checkAngleSnapping(EastNorth currentEN, double baseHeading, double curHeading) {
+        MapView mapView = MainApplication.getMap().mapView;
         EastNorth p0 = drawAction.getCurrentBaseNode().getEastNorth();
         EastNorth snapPoint = currentEN;
@@ -375,5 +378,5 @@
                 pe = Math.sin(phi);
                 pn = Math.cos(phi);
-                double scale = 20 * Main.map.mapView.getDist100Pixel();
+                double scale = 20 * mapView.getDist100Pixel();
                 dir2 = new EastNorth(e0 + scale * pe, n0 + scale * pn);
                 snapPoint = getSnapPoint(currentEN);
@@ -384,5 +387,5 @@
 
         // find out the distance, in metres, between the base point and projected point
-        LatLon mouseLatLon = Main.map.mapView.getProjection().eastNorth2latlon(snapPoint);
+        LatLon mouseLatLon = mapView.getProjection().eastNorth2latlon(snapPoint);
         double distance = this.drawAction.getCurrentBaseNode().getCoor().greatCircleDistance(mouseLatLon);
         double hdg = Utils.toDegrees(p0.heading(snapPoint));
@@ -436,5 +439,5 @@
         double dn = p.north()-n0;
         double l = de*pe+dn*pn;
-        double delta = Main.map.mapView.getDist100Pixel()/20;
+        double delta = MainApplication.getMap().mapView.getDist100Pixel()/20;
         if (!absoluteFix && l < delta) {
             active = false;
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 12630)
@@ -45,5 +45,7 @@
 import org.openstreetmap.josm.data.osm.WaySegment;
 import org.openstreetmap.josm.data.preferences.ColorProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MainMenu;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.draw.MapViewPath;
@@ -205,5 +207,6 @@
         @Override
         protected void updateEnabledState() {
-            setEnabled(Main.map != null && Main.map.mapMode instanceof ExtrudeAction);
+            MapFrame map = MainApplication.getMap();
+            setEnabled(map != null && map.mapMode instanceof ExtrudeAction);
         }
     }
@@ -293,9 +296,10 @@
     public void enterMode() {
         super.enterMode();
-        Main.map.mapView.addMouseListener(this);
-        Main.map.mapView.addMouseMotionListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.addMouseListener(this);
+        map.mapView.addMouseMotionListener(this);
         ignoreNextKeyRelease = true;
-        Main.map.keyDetector.addKeyListener(this);
-        Main.map.keyDetector.addModifierExListener(this);
+        map.keyDetector.addKeyListener(this);
+        map.keyDetector.addModifierExListener(this);
     }
 
@@ -321,10 +325,11 @@
     @Override
     public void exitMode() {
-        Main.map.mapView.removeMouseListener(this);
-        Main.map.mapView.removeMouseMotionListener(this);
-        Main.map.mapView.removeTemporaryLayer(this);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.removeMouseListener(this);
+        map.mapView.removeMouseMotionListener(this);
+        map.mapView.removeTemporaryLayer(this);
         dualAlignCheckboxMenuItem.getAction().setEnabled(false);
-        Main.map.keyDetector.removeKeyListener(this);
-        Main.map.keyDetector.removeModifierExListener(this);
+        map.keyDetector.removeKeyListener(this);
+        map.keyDetector.removeModifierExListener(this);
         super.exitMode();
     }
@@ -339,9 +344,10 @@
     @Override
     public void modifiersExChanged(int modifiers) {
-        if (!Main.isDisplayingMapView() || !Main.map.mapView.isActiveLayerDrawable())
+        MapFrame map = MainApplication.getMap();
+        if (!MainApplication.isDisplayingMapView() || !map.mapView.isActiveLayerDrawable())
             return;
         updateKeyModifiersEx(modifiers);
         if (mode == Mode.select) {
-            Main.map.mapView.setNewCursor(ctrl ? cursorTranslate : alt ? cursorCreateNew : shift ? cursorCreateNodes : cursor, this);
+            map.mapView.setNewCursor(ctrl ? cursorTranslate : alt ? cursorCreateNew : shift ? cursorCreateNodes : cursor, this);
         }
     }
@@ -380,5 +386,6 @@
     @Override
     public void mousePressed(MouseEvent e) {
-        if (!Main.map.mapView.isActiveLayerVisible())
+        MapFrame map = MainApplication.getMap();
+        if (!map.mapView.isActiveLayerVisible())
             return;
         if (!(Boolean) this.getValue("active"))
@@ -390,6 +397,6 @@
         updateKeyModifiers(e);
 
-        selectedNode = Main.map.mapView.getNearestNode(e.getPoint(), OsmPrimitive::isSelectable);
-        selectedSegment = Main.map.mapView.getNearestWaySegment(e.getPoint(), OsmPrimitive::isSelectable);
+        selectedNode = map.mapView.getNearestNode(e.getPoint(), OsmPrimitive::isSelectable);
+        selectedSegment = map.mapView.getNearestWaySegment(e.getPoint(), OsmPrimitive::isSelectable);
 
         // If nothing gets caught, stay in select mode
@@ -441,8 +448,8 @@
         moveCommand2 = null;
 
-        Main.map.mapView.addTemporaryLayer(this);
+        map.mapView.addTemporaryLayer(this);
 
         updateStatusLine();
-        Main.map.mapView.repaint();
+        map.mapView.repaint();
 
         // Make note of time pressed
@@ -459,5 +466,6 @@
     @Override
     public void mouseDragged(MouseEvent e) {
-        if (!Main.map.mapView.isActiveLayerVisible())
+        MapView mapView = MainApplication.getMap().mapView;
+        if (!mapView.isActiveLayerVisible())
             return;
 
@@ -471,8 +479,8 @@
             //move, create new and extrude mode - move the selected segment
 
-            EastNorth mouseEn = Main.map.mapView.getEastNorth(e.getPoint().x, e.getPoint().y);
+            EastNorth mouseEn = mapView.getEastNorth(e.getPoint().x, e.getPoint().y);
             EastNorth bestMovement = calculateBestMovementAndNewNodes(mouseEn);
 
-            Main.map.mapView.setNewCursor(Cursor.MOVE_CURSOR, this);
+            mapView.setNewCursor(Cursor.MOVE_CURSOR, this);
 
             if (dualAlignActive) {
@@ -511,5 +519,5 @@
             }
 
-            Main.map.mapView.repaint();
+            mapView.repaint();
         }
     }
@@ -522,5 +530,6 @@
     public void mouseReleased(MouseEvent e) {
 
-        if (!Main.map.mapView.isActiveLayerVisible())
+        MapView mapView = MainApplication.getMap().mapView;
+        if (!mapView.isActiveLayerVisible())
             return;
 
@@ -553,6 +562,6 @@
             updateKeyModifiers(e);
             // Switch back into select mode
-            Main.map.mapView.setNewCursor(ctrl ? cursorTranslate : alt ? cursorCreateNew : shift ? cursorCreateNodes : cursor, this);
-            Main.map.mapView.removeTemporaryLayer(this);
+            mapView.setNewCursor(ctrl ? cursorTranslate : alt ? cursorCreateNew : shift ? cursorCreateNodes : cursor, this);
+            mapView.removeTemporaryLayer(this);
             selectedSegment = null;
             moveCommand = null;
@@ -560,5 +569,5 @@
             dualAlignSegmentCollapsed = false;
             updateStatusLine();
-            Main.map.mapView.repaint();
+            mapView.repaint();
         }
     }
@@ -574,7 +583,8 @@
     private static void addNewNode(MouseEvent e) {
         // Should maybe do the same as in DrawAction and fetch all nearby segments?
-        WaySegment ws = Main.map.mapView.getNearestWaySegment(e.getPoint(), OsmPrimitive::isSelectable);
+        MapView mapView = MainApplication.getMap().mapView;
+        WaySegment ws = mapView.getNearestWaySegment(e.getPoint(), OsmPrimitive::isSelectable);
         if (ws != null) {
-            Node n = new Node(Main.map.mapView.getLatLon(e.getX(), e.getY()));
+            Node n = new Node(mapView.getLatLon(e.getX(), e.getY()));
             EastNorth a = ws.getFirstNode().getEastNorth();
             EastNorth b = ws.getSecondNode().getEastNorth();
@@ -743,5 +753,5 @@
     private EastNorth calculateBestMovement(EastNorth mouseEn) {
 
-        EastNorth initialMouseEn = Main.map.mapView.getEastNorth(initialMousePos.x, initialMousePos.y);
+        EastNorth initialMouseEn = MainApplication.getMap().mapView.getEastNorth(initialMousePos.x, initialMousePos.y);
         EastNorth mouseMovement = mouseEn.subtract(initialMouseEn);
 
@@ -926,5 +936,5 @@
         double distance = Main.getProjection().eastNorth2latlon(initialN1en).greatCircleDistance(
                 Main.getProjection().eastNorth2latlon(n1movedEn));
-        Main.map.statusLine.setDist(distance);
+        MainApplication.getMap().statusLine.setDist(distance);
         updateStatusLine();
 
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java	(revision 12630)
@@ -40,4 +40,6 @@
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.data.preferences.StrokeProperty;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.draw.MapViewPath;
@@ -138,5 +140,6 @@
         readPreferences();
 
-        mv = Main.map.mapView;
+        MapFrame map = MainApplication.getMap();
+        mv = map.mapView;
         mousePos = null;
         oldModeHelpText = "";
@@ -148,10 +151,10 @@
         updateStateByCurrentSelection();
 
-        Main.map.mapView.addMouseListener(this);
-        Main.map.mapView.addMouseMotionListener(this);
-        Main.map.mapView.addTemporaryLayer(temporaryLayer);
+        map.mapView.addMouseListener(this);
+        map.mapView.addMouseMotionListener(this);
+        map.mapView.addTemporaryLayer(temporaryLayer);
         DataSet.addSelectionListener(this);
 
-        Main.map.keyDetector.addModifierExListener(this);
+        map.keyDetector.addModifierExListener(this);
     }
 
@@ -165,10 +168,11 @@
         super.exitMode();
 
-        Main.map.mapView.removeMouseListener(this);
-        Main.map.mapView.removeMouseMotionListener(this);
-        Main.map.mapView.removeTemporaryLayer(temporaryLayer);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.removeMouseListener(this);
+        map.mapView.removeMouseMotionListener(this);
+        map.mapView.removeTemporaryLayer(temporaryLayer);
         DataSet.removeSelectionListener(this);
 
-        Main.map.keyDetector.removeModifierExListener(this);
+        map.keyDetector.removeModifierExListener(this);
         temporaryLayer.invalidate();
     }
@@ -179,6 +183,7 @@
         if (!newModeHelpText.equals(oldModeHelpText)) {
             oldModeHelpText = newModeHelpText;
-            Main.map.statusLine.setHelpText(newModeHelpText);
-            Main.map.statusLine.repaint();
+            MapFrame map = MainApplication.getMap();
+            map.statusLine.setHelpText(newModeHelpText);
+            map.statusLine.repaint();
         }
     }
@@ -348,5 +353,5 @@
     @Override
     public void modifiersExChanged(int modifiers) {
-        if (!Main.isDisplayingMapView() || !Main.map.mapView.isActiveLayerDrawable()) {
+        if (!MainApplication.isDisplayingMapView() || !MainApplication.getMap().mapView.isActiveLayerDrawable()) {
             return;
         }
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyHelper.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyHelper.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyHelper.java	(revision 12630)
@@ -6,5 +6,4 @@
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.Node;
@@ -12,4 +11,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.tools.Geometry;
@@ -57,5 +57,5 @@
         }
 
-        return Main.map.mapView.getNearestWay(p, OsmPrimitive::isSelectable);
+        return MainApplication.getMap().mapView.getNearestWay(p, OsmPrimitive::isSelectable);
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/MapMode.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/MapMode.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/MapMode.java	(revision 12630)
@@ -16,4 +16,5 @@
 import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -99,5 +100,5 @@
         Main.pref.addPreferenceChangeListener(this);
         readPreferences();
-        Main.map.mapView.setNewCursor(cursor, this);
+        MainApplication.getMap().mapView.setNewCursor(cursor, this);
         updateStatusLine();
     }
@@ -109,11 +110,12 @@
         putValue("active", Boolean.FALSE);
         Main.pref.removePreferenceChangeListener(this);
-        Main.map.mapView.resetCursor(this);
+        MainApplication.getMap().mapView.resetCursor(this);
     }
 
     protected void updateStatusLine() {
-        if (Main.map != null && Main.map.statusLine != null) {
-            Main.map.statusLine.setHelpText(getModeHelpText());
-            Main.map.statusLine.repaint();
+        MapFrame map = MainApplication.getMap();
+        if (map != null && map.statusLine != null) {
+            map.statusLine.setHelpText(getModeHelpText());
+            map.statusLine.repaint();
         }
     }
@@ -134,6 +136,6 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (Main.isDisplayingMapView()) {
-            Main.map.selectMapMode(this);
+        if (MainApplication.isDisplayingMapView()) {
+            MainApplication.getMap().selectMapMode(this);
         }
     }
@@ -225,5 +227,5 @@
         if (isEnabled()) {
             // request focus in order to enable the expected keyboard shortcuts (see #8710)
-            Main.map.mapView.requestFocus();
+            MainApplication.getMap().mapView.requestFocus();
         }
     }
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java	(revision 12630)
@@ -25,5 +25,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.SystemOfMeasurement;
@@ -40,4 +39,5 @@
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.data.preferences.StrokeProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
@@ -172,6 +172,6 @@
         mv.addTemporaryLayer(temporaryLayer);
 
-        //// Needed to update the mouse cursor if modifiers are changed when the mouse is motionless
-        Main.map.keyDetector.addModifierExListener(this);
+        // Needed to update the mouse cursor if modifiers are changed when the mouse is motionless
+        MainApplication.getMap().keyDetector.addModifierExListener(this);
         sourceWays = new LinkedHashSet<>(getLayerManager().getEditDataSet().getSelectedWays());
         for (Way w : sourceWays) {
@@ -186,7 +186,8 @@
         mv.removeMouseMotionListener(this);
         mv.removeTemporaryLayer(temporaryLayer);
-        Main.map.statusLine.setDist(-1);
-        Main.map.statusLine.repaint();
-        Main.map.keyDetector.removeModifierExListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.statusLine.setDist(-1);
+        map.statusLine.repaint();
+        map.keyDetector.removeModifierExListener(this);
         removeWayHighlighting(sourceWays);
         pWays = null;
@@ -217,5 +218,5 @@
     @Override
     public void modifiersExChanged(int modifiers) {
-        if (Main.map == null || mv == null || !mv.isActiveLayerDrawable())
+        if (MainApplication.getMap() == null || mv == null || !mv.isActiveLayerDrawable())
             return;
 
@@ -431,6 +432,7 @@
         pWays.changeOffset(d);
 
-        Main.map.statusLine.setDist(Math.abs(snappedRealD));
-        Main.map.statusLine.repaint();
+        MapFrame map = MainApplication.getMap();
+        map.statusLine.setDist(Math.abs(snappedRealD));
+        map.statusLine.repaint();
         temporaryLayer.invalidate();
     }
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java	(revision 12630)
@@ -8,6 +8,7 @@
 import java.awt.event.MouseEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.markerlayer.PlayHeadMarker;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -38,12 +39,14 @@
     @Override public void enterMode() {
         super.enterMode();
-        Main.map.mapView.addMouseListener(this);
-        Main.map.mapView.addMouseMotionListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.addMouseListener(this);
+        map.mapView.addMouseMotionListener(this);
     }
 
     @Override public void exitMode() {
         super.exitMode();
-        Main.map.mapView.removeMouseListener(this);
-        Main.map.mapView.removeMouseMotionListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.removeMouseListener(this);
+        map.mapView.removeMouseMotionListener(this);
     }
 
@@ -62,5 +65,5 @@
         }
         if (p.distance(mousePos) == 0) return;
-        playHeadMarker.drag(Main.map.mapView.getEastNorth(ev.getX(), ev.getY()));
+        playHeadMarker.drag(MainApplication.getMap().mapView.getEastNorth(ev.getX(), ev.getY()));
         mousePos = p;
     }
@@ -74,5 +77,5 @@
         updateKeyModifiers(ev);
 
-        EastNorth en = Main.map.mapView.getEastNorth(ev.getX(), ev.getY());
+        EastNorth en = MainApplication.getMap().mapView.getEastNorth(ev.getX(), ev.getY());
         if (!shift) {
             playHeadMarker.reposition(en);
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 12630)
@@ -40,4 +40,5 @@
 import org.openstreetmap.josm.data.osm.visitor.paint.WireframeMapRenderer;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
@@ -209,6 +210,7 @@
         virtualManager.init();
         // This is required to update the cursors when ctrl/shift/alt is pressed
-        Main.map.keyDetector.addModifierExListener(this);
-        Main.map.keyDetector.addKeyListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.keyDetector.addModifierExListener(this);
+        map.keyDetector.addKeyListener(this);
     }
 
@@ -220,6 +222,7 @@
         mv.removeMouseMotionListener(this);
         mv.setVirtualNodesEnabled(false);
-        Main.map.keyDetector.removeModifierExListener(this);
-        Main.map.keyDetector.removeKeyListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.keyDetector.removeModifierExListener(this);
+        map.keyDetector.removeKeyListener(this);
         removeHighlighting();
     }
@@ -227,5 +230,5 @@
     @Override
     public void modifiersExChanged(int modifiers) {
-        if (!Main.isDisplayingMapView() || oldEvent == null) return;
+        if (!MainApplication.isDisplayingMapView() || oldEvent == null) return;
         if (giveUserFeedback(oldEvent, modifiers)) {
             mv.repaint();
@@ -568,4 +571,5 @@
         startingDraggingPos = null;
         mouseReleaseTime = System.currentTimeMillis();
+        MapFrame map = MainApplication.getMap();
 
         if (mode == Mode.SELECT) {
@@ -578,5 +582,5 @@
             // Select Draw Tool if no selection has been made
             if (!cancelDrawMode && getLayerManager().getEditDataSet().selectionEmpty()) {
-                Main.map.selectDrawTool(true);
+                map.selectDrawTool(true);
                 updateStatusLine();
                 return;
@@ -599,5 +603,5 @@
                         // We need to do it like this as otherwise drawAction will see a double
                         // click and switch back to SelectMode
-                        Main.worker.execute(() -> Main.map.selectDrawTool(true));
+                        Main.worker.execute(() -> map.selectDrawTool(true));
                         return;
                     }
@@ -630,5 +634,5 @@
     @Override
     public void doKeyPressed(KeyEvent e) {
-        if (!repeatedKeySwitchLassoOption || !Main.isDisplayingMapView() || !getShortcut().isEvent(e))
+        if (!repeatedKeySwitchLassoOption || !MainApplication.isDisplayingMapView() || !getShortcut().isEvent(e))
             return;
         if (Logging.isDebugEnabled()) {
@@ -636,8 +640,9 @@
         }
         e.consume();
+        MapFrame map = MainApplication.getMap();
         if (!lassoMode) {
-            Main.map.selectMapMode(Main.map.mapModeSelectLasso);
+            map.selectMapMode(map.mapModeSelectLasso);
         } else {
-            Main.map.selectMapMode(Main.map.mapModeSelect);
+            map.selectMapMode(map.mapModeSelect);
         }
     }
@@ -751,5 +756,5 @@
                 Collection<Way> ways = ds.getSelectedWays();
                 if (doesImpactStatusLine(affectedNodes, ways)) {
-                    Main.map.statusLine.setDist(ways);
+                    MainApplication.getMap().statusLine.setDist(ways);
                 }
             } finally {
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java	(revision 12630)
@@ -8,5 +8,5 @@
 import java.awt.event.MouseEvent;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
@@ -53,6 +53,6 @@
     @Override
     public void selectionEnded(Rectangle r, MouseEvent e) {
-        if (r.width >= 3 && r.height >= 3 && Main.isDisplayingMapView()) {
-            MapView mv = Main.map.mapView;
+        if (r.width >= 3 && r.height >= 3 && MainApplication.isDisplayingMapView()) {
+            MapView mv = MainApplication.getMap().mapView;
             mv.zoomToFactor(mv.getEastNorth(r.x+r.width/2, r.y+r.height/2), r.getWidth()/mv.getWidth());
         }
@@ -61,10 +61,10 @@
     @Override public void enterMode() {
         super.enterMode();
-        selectionManager.register(Main.map.mapView, false);
+        selectionManager.register(MainApplication.getMap().mapView, false);
     }
 
     @Override public void exitMode() {
         super.exitMode();
-        selectionManager.unregister(Main.map.mapView);
+        selectionManager.unregister(MainApplication.getMap().mapView);
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/relation/DeleteRelationsAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/relation/DeleteRelationsAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/relation/DeleteRelationsAction.java	(revision 12630)
@@ -10,4 +10,6 @@
 import org.openstreetmap.josm.actions.mapmode.DeleteAction;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -35,6 +37,7 @@
         DeleteAction.deleteRelations(layer, toDelete);
         // clear selection after deletion
-        if (Main.map.relationListDialog != null)
-                Main.map.relationListDialog.selectRelations(null);
+        MapFrame map = MainApplication.getMap();
+        if (map.relationListDialog != null)
+            map.relationListDialog.selectRelations(null);
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java	(revision 12630)
@@ -10,4 +10,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationTask;
 import org.openstreetmap.josm.io.OnlineResource;
@@ -33,5 +34,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (!isEnabled() || relations.isEmpty() || !Main.isDisplayingMapView()) return;
+        if (!isEnabled() || relations.isEmpty() || !MainApplication.isDisplayingMapView()) return;
         Main.worker.submit(new DownloadRelationTask(relations, Main.getLayerManager().getEditLayer()));
     }
Index: /trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java	(revision 12630)
@@ -12,4 +12,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask;
 import org.openstreetmap.josm.io.OnlineResource;
@@ -49,5 +50,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (!isEnabled() || relations.isEmpty() || !Main.isDisplayingMapView()) return;
+        if (!isEnabled() || relations.isEmpty() || !MainApplication.isDisplayingMapView()) return;
         Main.worker.submit(new DownloadRelationMemberTask(
                 relations,
Index: /trunk/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java	(revision 12630)
@@ -16,4 +16,5 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -42,5 +43,5 @@
     public static Set<RelationMember> getMembersForCurrentSelection(Relation r) {
         Set<RelationMember> members = new HashSet<>();
-        if (Main.isDisplayingMapView()) {
+        if (MainApplication.isDisplayingMapView()) {
             OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
             if (editLayer != null && editLayer.data != null) {
@@ -61,5 +62,5 @@
      */
     public static void launchEditor(Relation toEdit) {
-        if (toEdit == null || toEdit.isDeleted() || !Main.isDisplayingMapView()) return;
+        if (toEdit == null || toEdit.isDeleted() || !MainApplication.isDisplayingMapView()) return;
         RelationEditor.getEditor(Main.getLayerManager().getEditLayer(), toEdit,
                 getMembersForCurrentSelection(toEdit)).setVisible(true);
Index: /trunk/src/org/openstreetmap/josm/actions/relation/RecentRelationsAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/relation/RecentRelationsAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/relation/RecentRelationsAction.java	(revision 12630)
@@ -22,4 +22,5 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -123,5 +124,5 @@
      */
     public static List<Relation> getRecentRelationsOnActiveLayer() {
-        if (!Main.isDisplayingMapView())
+        if (!MainApplication.isDisplayingMapView())
             return Collections.emptyList();
         Layer activeLayer = Main.getLayerManager().getActiveLayer();
Index: /trunk/src/org/openstreetmap/josm/actions/relation/SelectInRelationListAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/relation/SelectInRelationListAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/relation/SelectInRelationListAction.java	(revision 12630)
@@ -6,5 +6,6 @@
 import java.awt.event.ActionEvent;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -26,7 +27,8 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (!isEnabled() || relations.isEmpty() || Main.map == null || Main.map.relationListDialog == null) return;
-        Main.map.relationListDialog.unfurlDialog();
-        Main.map.relationListDialog.selectRelations(relations);
+        MapFrame map = MainApplication.getMap();
+        if (!isEnabled() || relations.isEmpty() || map == null || map.relationListDialog == null) return;
+        map.relationListDialog.unfurlDialog();
+        map.relationListDialog.selectRelations(relations);
     }
 }
Index: /trunk/src/org/openstreetmap/josm/actions/relation/SelectMembersAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/relation/SelectMembersAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/relation/SelectMembersAction.java	(revision 12630)
@@ -11,4 +11,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -36,5 +37,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (!isEnabled() || relations.isEmpty() || !Main.isDisplayingMapView()) return;
+        if (!isEnabled() || relations.isEmpty() || !MainApplication.isDisplayingMapView()) return;
 
         Set<OsmPrimitive> members = new HashSet<>();
Index: /trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 12630)
@@ -51,4 +51,6 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSException;
@@ -696,4 +698,5 @@
         public void receiveSearchResult(DataSet ds, Collection<OsmPrimitive> result, int foundMatches, SearchSetting setting) {
             ds.setSelected(result);
+            MapFrame map = MainApplication.getMap();
             if (foundMatches == 0) {
                 final String msg;
@@ -710,6 +713,6 @@
                     msg = null;
                 }
-                if (Main.map != null) {
-                    Main.map.statusLine.setHelpText(msg);
+                if (map != null) {
+                    map.statusLine.setHelpText(msg);
                 }
                 if (!GraphicsEnvironment.isHeadless()) {
@@ -722,5 +725,5 @@
                 }
             } else {
-                Main.map.statusLine.setHelpText(tr("Found {0} matches", foundMatches));
+                map.statusLine.setHelpText(tr("Found {0} matches", foundMatches));
             }
         }
Index: /trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 12630)
@@ -36,4 +36,5 @@
 import org.openstreetmap.josm.data.osm.Tagged;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.mappaint.Environment;
 import org.openstreetmap.josm.gui.mappaint.mapcss.Selector;
@@ -1551,8 +1552,8 @@
         @Override
         protected Collection<Bounds> getBounds(OsmPrimitive primitive) {
-            if (!Main.isDisplayingMapView()) {
+            if (!MainApplication.isDisplayingMapView()) {
                 return null;
             }
-            return Collections.singleton(Main.map.mapView.getRealBounds());
+            return Collections.singleton(MainApplication.getMap().mapView.getRealBounds());
         }
 
Index: /trunk/src/org/openstreetmap/josm/actions/upload/UploadNotesTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/upload/UploadNotesTask.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/upload/UploadNotesTask.java	(revision 12630)
@@ -15,4 +15,5 @@
 import org.openstreetmap.josm.data.osm.NoteData;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -123,9 +124,10 @@
                 StringBuilder sb = new StringBuilder();
                 for (Map.Entry<Note, Exception> entry : failedNotes.entrySet()) {
-                    sb.append(tr("Note {0} failed: {1}", entry.getKey().getId(), entry.getValue().getMessage()));
-                    sb.append('\n');
+                    sb.append(tr("Note {0} failed: {1}", entry.getKey().getId(), entry.getValue().getMessage()))
+                      .append('\n');
                 }
                 Logging.error("Notes failed to upload: " + sb.toString());
-                JOptionPane.showMessageDialog(Main.map, sb.toString(), tr("Notes failed to upload"), JOptionPane.ERROR_MESSAGE);
+                JOptionPane.showMessageDialog(MainApplication.getMap(), sb.toString(),
+                        tr("Notes failed to upload"), JOptionPane.ERROR_MESSAGE);
                 ExceptionDialogUtil.explainException(failedNotes.values().iterator().next());
             }
Index: /trunk/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java	(revision 12630)
@@ -22,4 +22,6 @@
 import org.openstreetmap.josm.data.validation.util.AggregatePrimitivesVisitor;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.dialogs.validator.ValidatorTreePanel;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -77,6 +79,7 @@
             editLayer.validationErrors.addAll(errors);
         }
-        if (Main.map != null) {
-            Main.map.validatorDialog.tree.setErrors(errors);
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
+            map.validatorDialog.tree.setErrors(errors);
         }
         if (errors.isEmpty())
@@ -148,5 +151,5 @@
             OsmValidator.initializeTests();
             OsmValidator.initializeErrorLayer();
-            Main.map.validatorDialog.unfurlDialog();
+            MainApplication.getMap().validatorDialog.unfurlDialog();
             Main.getLayerManager().getLayersOfType(ValidatorLayer.class).forEach(ValidatorLayer::invalidate);
             return false;
Index: /trunk/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java	(revision 12630)
@@ -15,4 +15,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -64,5 +65,5 @@
     @Override
     public void undoCommand() {
-        if (Main.isDisplayingMapView() && !Main.getLayerManager().containsLayer(getLayer())) {
+        if (MainApplication.isDisplayingMapView() && !Main.getLayerManager().containsLayer(getLayer())) {
             Logging.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 12629)
+++ /trunk/src/org/openstreetmap/josm/command/conflict/ConflictResolveCommand.java	(revision 12630)
@@ -10,4 +10,5 @@
 import org.openstreetmap.josm.data.conflict.Conflict;
 import org.openstreetmap.josm.data.conflict.ConflictCollection;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.Logging;
@@ -71,5 +72,5 @@
         super.undoCommand();
 
-        if (Main.isDisplayingMapView()) {
+        if (MainApplication.isDisplayingMapView()) {
             if (!Main.getLayerManager().containsLayer(getLayer())) {
                 Logging.warn(tr("Cannot undo command ''{0}'' because layer ''{1}'' is not present any more",
Index: /trunk/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java	(revision 12630)
@@ -19,4 +19,5 @@
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.data.projection.Projections;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
@@ -246,6 +247,6 @@
     public static void bookmarkOffset(String name, AbstractTileSourceLayer layer) {
         LatLon center;
-        if (Main.isDisplayingMapView()) {
-            center = Main.getProjection().eastNorth2latlon(Main.map.mapView.getCenter());
+        if (MainApplication.isDisplayingMapView()) {
+            center = Main.getProjection().eastNorth2latlon(MainApplication.getMap().mapView.getCenter());
         } else {
             center = LatLon.ZERO;
Index: /trunk/src/org/openstreetmap/josm/data/osm/FilterMatcher.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/FilterMatcher.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/data/osm/FilterMatcher.java	(revision 12630)
@@ -6,5 +6,4 @@
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.search.SearchAction.SearchMode;
 import org.openstreetmap.josm.actions.search.SearchCompiler;
@@ -12,4 +11,6 @@
 import org.openstreetmap.josm.actions.search.SearchCompiler.Not;
 import org.openstreetmap.josm.actions.search.SearchCompiler.ParseError;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
@@ -224,7 +225,7 @@
 
     private static FilterType test(List<FilterInfo> filters, OsmPrimitive primitive, boolean hidden) {
-
+        MapFrame map = MainApplication.getMap();
         if (primitive.isIncomplete() ||
-                (Main.map != null && Main.map.mapMode != null && Main.map.mapMode.getPreservedPrimitives().contains(primitive)))
+                (map != null && map.mapMode != null && map.mapMode.getPreservedPrimitives().contains(primitive)))
             return FilterType.NOT_FILTERED;
 
Index: /trunk/src/org/openstreetmap/josm/data/osm/FilterModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/FilterModel.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/data/osm/FilterModel.java	(revision 12630)
@@ -19,4 +19,5 @@
 import org.openstreetmap.josm.actions.search.SearchCompiler.ParseError;
 import org.openstreetmap.josm.data.osm.Filter.FilterPreferenceEntry;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.widgets.OSDLabel;
@@ -323,5 +324,5 @@
         lblOSD.setSize(lblOSD.getPreferredSize());
 
-        int dx = Main.map.mapView.getWidth() - lblOSD.getPreferredSize().width - 15;
+        int dx = MainApplication.getMap().mapView.getWidth() - lblOSD.getPreferredSize().width - 15;
         int dy = 15;
         g.translate(dx, dy);
Index: /trunk/src/org/openstreetmap/josm/data/osm/NoteData.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/NoteData.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/data/osm/NoteData.java	(revision 12630)
@@ -10,5 +10,4 @@
 import java.util.Map;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.notes.Note;
@@ -16,4 +15,6 @@
 import org.openstreetmap.josm.data.notes.NoteComment;
 import org.openstreetmap.josm.gui.JosmUserIdentityManager;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.tools.ListenerList;
 import org.openstreetmap.josm.tools.Logging;
@@ -85,5 +86,6 @@
     }
 
-    /** Returns the currently selected note
+    /**
+     * Returns the currently selected note
      * @return currently selected note
      */
@@ -92,5 +94,6 @@
     }
 
-    /** Set a selected note. Causes the dialog to select the note and
+    /**
+     * Set a selected note. Causes the dialog to select the note and
      * the note layer to draw the selected note's comments.
      * @param note Selected note. Null indicates no selection
@@ -98,6 +101,7 @@
     public void setSelectedNote(Note note) {
         selectedNote = note;
-        if (Main.map != null) {
-            Main.map.noteDialog.selectionChanged();
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
+            map.noteDialog.selectionChanged();
         }
         listeners.fireEvent(l -> l.selectedNoteChanged(this));
@@ -232,6 +236,6 @@
 
     private void dataUpdated() {
-        if (Main.isDisplayingMapView()) {
-            Main.map.noteDialog.setNotes(getSortedNotes());
+        if (MainApplication.isDisplayingMapView()) {
+            MainApplication.getMap().noteDialog.setNotes(getSortedNotes());
         }
         listeners.fireEvent(l -> l.noteDataUpdated(this));
Index: /trunk/src/org/openstreetmap/josm/data/osm/history/HistoryDataSet.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/history/HistoryDataSet.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/data/osm/history/HistoryDataSet.java	(revision 12630)
@@ -18,4 +18,5 @@
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
@@ -226,5 +227,5 @@
     @Override
     public void layerRemoving(LayerRemoveEvent e) {
-        if (!Main.isDisplayingMapView()) return;
+        if (!MainApplication.isDisplayingMapView()) return;
         if (Main.getLayerManager().getLayers().isEmpty()) {
             data.clear();
Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java	(revision 12630)
@@ -15,4 +15,6 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 
 /**
@@ -197,5 +199,6 @@
             return;
         // convert size from meters to east/north units
-        double enSize = size * Main.map.mapView.getScale() / Main.map.mapView.getDist100Pixel() * 100;
+        MapFrame map = MainApplication.getMap();
+        double enSize = size * map.mapView.getScale() / map.mapView.getDist100Pixel() * 100;
         visit(bounds.getMin().add(-enSize/2, -enSize/2));
         visit(bounds.getMax().add(+enSize/2, +enSize/2));
Index: /trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java	(revision 12630)
@@ -160,6 +160,6 @@
         // list all imagery entries where the current map location
         // is within the imagery bounds
-        if (Main.isDisplayingMapView()) {
-            MapView mv = Main.map.mapView;
+        if (MainApplication.isDisplayingMapView()) {
+            MapView mv = MainApplication.getMap().mapView;
             LatLon pos = mv.getProjection().eastNorth2latlon(mv.getCenter());
             final List<ImageryInfo> inViewLayers = new ArrayList<>();
Index: /trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 12630)
@@ -106,4 +106,9 @@
     private static final List<String> COMMAND_LINE_ARGS = new ArrayList<>();
 
+    /**
+     * The MapFrame.
+     */
+    static MapFrame map;
+
     private final MainFrame mainFrame;
 
@@ -225,4 +230,30 @@
     public static List<String> getCommandLineArgs() {
         return Collections.unmodifiableList(COMMAND_LINE_ARGS);
+    }
+
+    /**
+     * Returns the MapFrame.
+     * <p>
+     * There should be no need to access this to access any map data. Use {@link #layerManager} instead.
+     * @return the MapFrame
+     * @see MainPanel
+     * @since 12630 (as a replacement to {@code Main.map})
+     */
+    public static MapFrame getMap() {
+        return map;
+    }
+
+    /**
+     * Replies true if JOSM currently displays a map view. False, if it doesn't, i.e. if
+     * it only shows the MOTD panel.
+     * <p>
+     * You do not need this when accessing the layer manager. The layer manager will be empty if no map view is shown.
+     *
+     * @return <code>true</code> if JOSM currently displays a map view
+     * @since 12630 (as a replacement to {@code Main.isDisplayingMapView()})
+     */
+    @SuppressWarnings("deprecation")
+    public static boolean isDisplayingMapView() {
+        return map != null && map.mapView != null;
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/MainPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MainPanel.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/MainPanel.java	(revision 12630)
@@ -44,4 +44,5 @@
      * @param showMap If the map should be displayed.
      */
+    @SuppressWarnings("deprecation")
     protected synchronized void updateContent(boolean showMap) {
         GuiHelper.assertCallFromEdt();
@@ -65,4 +66,5 @@
             map = null;
             Main.map = map;
+            MainApplication.map = map;
             add(getGettingStarted(), BorderLayout.CENTER);
         }
@@ -83,8 +85,10 @@
     }
 
+    @SuppressWarnings("deprecation")
     private MapFrame createNewMapFrame() {
         MapFrame mapFrame = new MapFrame(null);
         // Required by many components.
         Main.map = mapFrame;
+        MainApplication.map = mapFrame;
 
         mapFrame.fillPanel(this);
Index: /trunk/src/org/openstreetmap/josm/gui/MapMover.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapMover.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/MapMover.java	(revision 12630)
@@ -169,8 +169,9 @@
         boolean allowMovement = (e.getModifiersEx() & (MouseEvent.BUTTON3_DOWN_MASK | offMask)) == MouseEvent.BUTTON3_DOWN_MASK;
         if (Main.isPlatformOsx()) {
+            MapFrame map = MainApplication.getMap();
             int macMouseMask = MouseEvent.CTRL_DOWN_MASK | MouseEvent.BUTTON1_DOWN_MASK;
             boolean macMovement = e.getModifiersEx() == macMouseMask;
-            boolean allowedMode = !Main.map.mapModeSelect.equals(Main.map.mapMode)
-                              || SelectAction.Mode.SELECT.equals(Main.map.mapModeSelect.getMode());
+            boolean allowedMode = !map.mapModeSelect.equals(map.mapMode)
+                              || SelectAction.Mode.SELECT.equals(map.mapModeSelect.getMode());
             allowMovement |= macMovement && allowedMode;
         }
Index: /trunk/src/org/openstreetmap/josm/gui/MapStatus.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 12630)
@@ -406,5 +406,5 @@
                     try {
                         final MouseState ms = incomingMouseState.take();
-                        if (parent != Main.map)
+                        if (parent != MainApplication.getMap())
                             return; // exit, if new parent.
 
Index: /trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 12630)
@@ -562,8 +562,9 @@
         }
 
+        MapFrame map = MainApplication.getMap();
         if (AutoFilterManager.getInstance().getCurrentAutoFilter() != null) {
             AutoFilterManager.getInstance().drawOSDText(tempG);
-        } else if (Main.isDisplayingMapView() && Main.map.filterDialog != null) {
-            Main.map.filterDialog.drawOSDText(tempG);
+        } else if (MainApplication.isDisplayingMapView() && map.filterDialog != null) {
+            map.filterDialog.drawOSDText(tempG);
         }
 
@@ -660,5 +661,6 @@
     @Override
     public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
-        if (Main.map != null) {
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
             /* This only makes the buttons look disabled. Disabling the actions as well requires
              * the user to re-select the tool after i.e. moving a layer. While testing I found
@@ -666,5 +668,5 @@
              * order. This way it works as visual clue for new users */
             // FIXME: This does not belong here.
-            for (final AbstractButton b: Main.map.allMapModeButtons) {
+            for (final AbstractButton b: map.allMapModeButtons) {
                 MapMode mode = (MapMode) b.getAction();
                 final boolean activeLayerSupported = mode.layerIsSupported(layerManager.getActiveLayer());
Index: /trunk/src/org/openstreetmap/josm/gui/NotificationManager.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/NotificationManager.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/NotificationManager.java	(revision 12630)
@@ -114,9 +114,10 @@
                 int x;
                 int y;
-                if (Main.isDisplayingMapView() && Main.map.mapView.getHeight() > 0) {
-                    MapView mv = Main.map.mapView;
+                MapFrame map = MainApplication.getMap();
+                if (MainApplication.isDisplayingMapView() && map.mapView.getHeight() > 0) {
+                    MapView mv = map.mapView;
                     Point mapViewPos = SwingUtilities.convertPoint(mv.getParent(), mv.getX(), mv.getY(), Main.parent);
                     x = mapViewPos.x + margin;
-                    y = mapViewPos.y + mv.getHeight() - Main.map.statusLine.getHeight() - size.height - margin;
+                    y = mapViewPos.y + mv.getHeight() - map.statusLine.getHeight() - size.height - margin;
                 } else {
                     x = margin;
Index: /trunk/src/org/openstreetmap/josm/gui/SelectionManager.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/SelectionManager.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/SelectionManager.java	(revision 12630)
@@ -184,5 +184,5 @@
     public void mousePressed(MouseEvent e) {
         if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() > 1 && Main.getLayerManager().getEditDataSet() != null) {
-            SelectByInternalPointAction.performSelection(Main.map.mapView.getEastNorth(e.getX(), e.getY()),
+            SelectByInternalPointAction.performSelection(MainApplication.getMap().mapView.getEastNorth(e.getX(), e.getY()),
                     (e.getModifiersEx() & MouseEvent.SHIFT_DOWN_MASK) != 0,
                     (e.getModifiersEx() & MouseEvent.CTRL_DOWN_MASK) != 0);
Index: /trunk/src/org/openstreetmap/josm/gui/autofilter/AutoFilterButton.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/autofilter/AutoFilterButton.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/autofilter/AutoFilterButton.java	(revision 12630)
@@ -11,7 +11,7 @@
 import javax.swing.JButton;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.preferences.ColorProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 
 /**
@@ -36,5 +36,5 @@
                 if (filter.equals(afm.getCurrentAutoFilter())) {
                     afm.setCurrentAutoFilter(null);
-                    Main.map.filterDialog.getFilterModel().executeFilters();
+                    MainApplication.getMap().filterDialog.getFilterModel().executeFilters();
                 } else {
                     afm.setCurrentAutoFilter(filter);
Index: /trunk/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java	(revision 12630)
@@ -43,6 +43,8 @@
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.data.preferences.StringProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapFrame.MapModeChangeListener;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.NavigatableComponent.ZoomChangeListener;
@@ -130,6 +132,7 @@
 
     private synchronized void updateButtons() {
-        if (enabledRule != null && Main.map != null
-                && enabledRule.getMinZoomLevel() <= Selector.GeneralSelector.scale2level(Main.map.mapView.getDist100Pixel())) {
+        MapFrame map = MainApplication.getMap();
+        if (enabledRule != null && map != null
+                && enabledRule.getMinZoomLevel() <= Selector.GeneralSelector.scale2level(map.mapView.getDist100Pixel())) {
             // Retrieve the values from current rule visible on screen
             NavigableSet<String> values = getNumericValues(enabledRule.getKey(), enabledRule.getValueComparator());
@@ -148,4 +151,5 @@
         int i = 0;
         int maxWidth = 16;
+        MapView mapView = MainApplication.getMap().mapView;
         for (final String value : values.descendingSet()) {
             Filter filter = new Filter();
@@ -161,15 +165,15 @@
             buttons.put(value, button);
             maxWidth = Math.max(maxWidth, button.getPreferredSize().width);
-            Main.map.mapView.add(button).setLocation(3, 60 + 22*i++);
+            mapView.add(button).setLocation(3, 60 + 22*i++);
         }
         for (AutoFilterButton b : buttons.values()) {
             b.setSize(maxWidth, 20);
         }
-        Main.map.mapView.validate();
+        mapView.validate();
     }
 
     private void removeAllButtons() {
         for (Iterator<String> it = buttons.keySet().iterator(); it.hasNext();) {
-            Main.map.mapView.remove(buttons.get(it.next()));
+            MainApplication.getMap().mapView.remove(buttons.get(it.next()));
             it.remove();
         }
@@ -193,5 +197,5 @@
         Set<String> values = new TreeSet<>();
         if (ds != null) {
-            BBox bbox = Main.map.mapView.getState().getViewArea().getLatLonBoundsBox().toBBox();
+            BBox bbox = MainApplication.getMap().mapView.getState().getViewArea().getLatLonBoundsBox().toBBox();
             Consumer<OsmPrimitive> consumer = getTagValuesConsumer(key, values);
             ds.searchNodes(bbox).forEach(consumer);
@@ -388,6 +392,7 @@
         setCurrentAutoFilter(null);
         removeAllButtons();
-        if (Main.map != null) {
-            Main.map.filterDialog.getFilterModel().executeFilters();
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
+            map.filterDialog.getFilterModel().executeFilters();
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java	(revision 12630)
@@ -42,4 +42,5 @@
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -463,5 +464,5 @@
                 break;
             }
-            Main.map.repaint();
+            MainApplication.getMap().repaint();
         }
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 12630)
@@ -56,4 +56,5 @@
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
@@ -130,5 +131,5 @@
             lstConflicts.addMouseListener(new MouseEventHandler());
         }
-        addListSelectionListener(e -> Main.map.mapView.repaint());
+        addListSelectionListener(e -> MainApplication.getMap().mapView.repaint());
 
         SideButton btnResolve = new SideButton(actResolve);
@@ -210,5 +211,5 @@
             lstConflicts.setSelectedIndex(index);
         }
-        Main.map.mapView.repaint();
+        MainApplication.getMap().mapView.repaint();
     }
 
@@ -632,5 +633,5 @@
                 );
                 unfurlDialog();
-                Main.map.repaint();
+                MainApplication.getMap().repaint();
             });
         }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java	(revision 12630)
@@ -40,4 +40,5 @@
 import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
 import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapFrame.MapModeChangeListener;
@@ -88,5 +89,5 @@
         MapFrame.removeMapModeChangeListener(this);
         filterModel.model.clearFilterFlags();
-        Main.map.mapView.repaint();
+        MainApplication.getMap().mapView.repaint();
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java	(revision 12630)
@@ -11,8 +11,9 @@
 import javax.swing.table.AbstractTableModel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Filter;
 import org.openstreetmap.josm.data.osm.FilterModel;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.autofilter.AutoFilterManager;
 import org.openstreetmap.josm.gui.widgets.OSDLabel;
@@ -87,6 +88,7 @@
 
     private void updateMap() {
-        if (Main.map != null && model.isChanged()) {
-            Main.map.filterDialog.updateDialogHeader();
+        MapFrame map = MainApplication.getMap();
+        if (map != null && model.isChanged()) {
+            map.filterDialog.updateDialogHeader();
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java	(revision 12630)
@@ -26,4 +26,5 @@
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -116,5 +117,5 @@
         final Collection<OsmPrimitive> sel = Main.getLayerManager().getEditDataSet().getAllSelected();
         ElemStyles elemstyles = MapPaintStyles.getStyles();
-        NavigatableComponent nc = Main.map.mapView;
+        NavigatableComponent nc = MainApplication.getMap().mapView;
         double scale = nc.getDist100Pixel();
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 12630)
@@ -44,4 +44,6 @@
 import org.openstreetmap.josm.actions.MergeLayerAction;
 import org.openstreetmap.josm.data.preferences.AbstractProperty;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.SideButton;
@@ -507,5 +509,5 @@
             Layer layer = (Layer) value;
             if (layer instanceof NativeScaleLayer) {
-                boolean active = ((NativeScaleLayer) layer) == Main.map.mapView.getNativeScaleLayer();
+                boolean active = ((NativeScaleLayer) layer) == MainApplication.getMap().mapView.getNativeScaleLayer();
                 cb.setSelected(active);
                 cb.setToolTipText(active
@@ -824,9 +826,10 @@
             List<Integer> sel = getSelectedRows();
             List<Layer> layers = getLayers();
+            MapView mapView = MainApplication.getMap().mapView;
             for (int row : sel) {
                 Layer l1 = layers.get(row);
                 Layer l2 = layers.get(row-1);
-                Main.map.mapView.moveLayer(l2, row);
-                Main.map.mapView.moveLayer(l1, row-1);
+                mapView.moveLayer(l2, row);
+                mapView.moveLayer(l1, row-1);
             }
             fireTableDataChanged();
@@ -859,9 +862,10 @@
             Collections.reverse(sel);
             List<Layer> layers = getLayers();
+            MapView mapView = MainApplication.getMap().mapView;
             for (int row : sel) {
                 Layer l1 = layers.get(row);
                 Layer l2 = layers.get(row+1);
-                Main.map.mapView.moveLayer(l1, row+1);
-                Main.map.mapView.moveLayer(l2, row);
+                mapView.moveLayer(l1, row+1);
+                mapView.moveLayer(l2, row);
             }
             fireTableDataChanged();
@@ -999,9 +1003,10 @@
                     break;
                 case 1:
-                    NativeScaleLayer oldLayer = Main.map.mapView.getNativeScaleLayer();
+                    MapFrame map = MainApplication.getMap();
+                    NativeScaleLayer oldLayer = map.mapView.getNativeScaleLayer();
                     if (oldLayer == l) {
-                        Main.map.mapView.setNativeScaleLayer(null);
+                        map.mapView.setNativeScaleLayer(null);
                     } else if (l instanceof NativeScaleLayer) {
-                        Main.map.mapView.setNativeScaleLayer((NativeScaleLayer) l);
+                        map.mapView.setNativeScaleLayer((NativeScaleLayer) l);
                         if (oldLayer != null) {
                             int idx = getLayers().indexOf(oldLayer);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/MinimapDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/MinimapDialog.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/MinimapDialog.java	(revision 12630)
@@ -8,6 +8,6 @@
 import java.util.Collections;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.NavigatableComponent;
@@ -55,6 +55,6 @@
     @Override
     public void zoomChanged() {
-        if (!skipEvents && Main.isDisplayingMapView()) {
-            MapView mv = Main.map.mapView;
+        if (!skipEvents && MainApplication.isDisplayingMapView()) {
+            MapView mv = MainApplication.getMap().mapView;
             final Bounds currentBounds = new Bounds(
                     mv.getLatLon(0, mv.getHeight()),
@@ -72,5 +72,5 @@
         if (!skipEvents) {
             skipEvents = true;
-            Main.map.mapView.zoomTo(slippyMap.getBoundingBox());
+            MainApplication.getMap().mapView.zoomTo(slippyMap.getBoundingBox());
             skipEvents = false;
         }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java	(revision 12630)
@@ -36,4 +36,6 @@
 import org.openstreetmap.josm.data.notes.NoteComment;
 import org.openstreetmap.josm.data.osm.NoteData;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.NoteInputDialog;
 import org.openstreetmap.josm.gui.NoteSortDialog;
@@ -99,5 +101,5 @@
             public void mouseClicked(MouseEvent e) {
                 if (SwingUtilities.isLeftMouseButton(e) && e.getClickCount() == 2 && noteData != null && noteData.getSelectedNote() != null) {
-                    Main.map.mapView.zoomTo(noteData.getSelectedNote().getLatLon());
+                    MainApplication.getMap().mapView.zoomTo(noteData.getSelectedNote().getLatLon());
                 }
             }
@@ -161,6 +163,7 @@
             noteData = null;
             model.clearData();
-            if (Main.map.mapMode instanceof AddNoteAction) {
-                Main.map.selectMapMode(Main.map.mapModeSelect);
+            MapFrame map = MainApplication.getMap();
+            if (map.mapMode instanceof AddNoteAction) {
+                map.selectMapMode(map.mapModeSelect);
             }
         }
@@ -297,5 +300,5 @@
             Note note = displayList.getSelectedValue();
             if (note == null) {
-                JOptionPane.showMessageDialog(Main.map,
+                JOptionPane.showMessageDialog(MainApplication.getMap(),
                         "You must select a note first",
                         "No note selected",
@@ -355,5 +358,5 @@
                 Main.getLayerManager().addLayer(new NoteLayer());
             }
-            Main.map.selectMapMode(new AddNoteAction(noteData));
+            MainApplication.getMap().selectMapMode(new AddNoteAction(noteData));
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 12630)
@@ -57,4 +57,5 @@
 import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.NavigatableComponent;
@@ -209,6 +210,6 @@
 
         //update highlights
-        if (highlightEnabled && focused == displaylist && Main.isDisplayingMapView() && highlightHelper.highlightOnly(sel)) {
-            Main.map.mapView.repaint();
+        if (highlightEnabled && focused == displaylist && MainApplication.isDisplayingMapView() && highlightHelper.highlightOnly(sel)) {
+            MainApplication.getMap().mapView.repaint();
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 12630)
@@ -67,4 +67,6 @@
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
 import org.openstreetmap.josm.gui.PopupMenuHandler;
@@ -212,6 +214,6 @@
                     actEditRelationSelection.actionPerformed(null);
                 }
-            } else if (highlightEnabled && Main.isDisplayingMapView() && helper.highlightOnly(model.getElementAt(idx))) {
-                Main.map.mapView.repaint();
+            } else if (highlightEnabled && MainApplication.isDisplayingMapView() && helper.highlightOnly(model.getElementAt(idx))) {
+                MainApplication.getMap().mapView.repaint();
             }
         }
@@ -442,5 +444,5 @@
                 return;
             box.enlargeBoundingBox();
-            Main.map.mapView.zoomTo(box);
+            MainApplication.getMap().mapView.zoomTo(box);
         }
 
@@ -615,4 +617,5 @@
                     if (selection != null) {
                         remember(selection);
+                        MapFrame map = MainApplication.getMap();
                         if (selection.size() == 2) {
                             Iterator<? extends OsmPrimitive> it = selection.iterator();
@@ -624,10 +627,10 @@
                                 LatLon c2 = ((Node) n2).getCoor();
                                 if (c1 != null && c2 != null) {
-                                    Main.map.statusLine.setDist(c1.greatCircleDistance(c2));
+                                    map.statusLine.setDist(c1.greatCircleDistance(c2));
                                     return;
                                 }
                             }
                         }
-                        Main.map.statusLine.setDist(
+                        map.statusLine.setDist(
                                 new SubclassFilteredCollection<OsmPrimitive, Way>(selection, Way.class::isInstance));
                     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 12630)
@@ -43,4 +43,6 @@
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.data.validation.ValidatorVisitor;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.PopupMenuHandler;
@@ -315,5 +317,5 @@
             tree.resetErrors();
             OsmValidator.saveIgnoredErrors();
-            Main.map.repaint();
+            MainApplication.getMap().repaint();
         }
     }
@@ -524,6 +526,7 @@
             fixButton.setEnabled(hasFixes);
             popupMenuHandler.setPrimitives(sel);
-            if (Main.map != null) {
-                Main.map.repaint();
+            MapFrame map = MainApplication.getMap();
+            if (map != null) {
+                map.repaint();
             }
         }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java	(revision 12630)
@@ -22,4 +22,6 @@
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.gui.JosmUserIdentityManager;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
@@ -165,8 +167,7 @@
         }
 
-        // query for changesets in the current map view only if there *is* a current
-        // map view
+        // query for changesets in the current map view only if there *is* a current map view
         lbl = lblQueries.get(BasicQuery.CHANGESETS_IN_MAP_VIEW);
-        if (!Main.isDisplayingMapView()) {
+        if (!MainApplication.isDisplayingMapView()) {
             rbQueries.get(BasicQuery.CHANGESETS_IN_MAP_VIEW).setEnabled(false);
             lbl.setText(tr("<html>Download changesets in the current map view.<br><em>Disabled. " +
@@ -241,5 +242,6 @@
             break;
         case CHANGESETS_IN_MAP_VIEW:
-            Bounds b = Main.map.mapView.getLatLonBounds(Main.map.mapView.getBounds());
+            MapView mapView = MainApplication.getMap().mapView;
+            Bounds b = mapView.getLatLonBounds(mapView.getBounds());
             query = query.inBbox(b);
             break;
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 12630)
@@ -83,4 +83,5 @@
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PopupMenuHandler;
 import org.openstreetmap.josm.gui.SideButton;
@@ -385,8 +386,8 @@
             public void mouseClicked(MouseEvent e) {
                 //update highlights
-                if (Main.isDisplayingMapView()) {
+                if (MainApplication.isDisplayingMapView()) {
                     int row = membershipTable.rowAtPoint(e.getPoint());
                     if (row >= 0 && highlightHelper.highlightOnly((Relation) membershipTable.getValueAt(row, 0))) {
-                        Main.map.mapView.repaint();
+                        MainApplication.getMap().mapView.repaint();
                     }
                 }
@@ -484,5 +485,5 @@
     private void editMembership(int row) {
         Relation relation = (Relation) membershipData.getValueAt(row, 0);
-        Main.map.relationListDialog.selectRelation(relation);
+        MainApplication.getMap().relationListDialog.selectRelation(relation);
         RelationEditor.getEditor(
                 Main.getLayerManager().getEditLayer(),
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java	(revision 12630)
@@ -36,4 +36,5 @@
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -420,5 +421,5 @@
                     refreshView(r);
                 }
-                SwingUtilities.invokeLater(Main.map::repaint);
+                SwingUtilities.invokeLater(MainApplication.getMap()::repaint);
             } catch (OsmTransferException e) {
                 if (canceled) {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationMemberTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationMemberTask.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationMemberTask.java	(revision 12630)
@@ -13,5 +13,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -19,4 +18,5 @@
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -83,5 +83,5 @@
     @Override
     protected void finish() {
-        Main.map.repaint();
+        MainApplication.getMap().repaint();
         if (canceled)
             return;
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationTask.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationTask.java	(revision 12630)
@@ -10,5 +10,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.DataSetMerger;
@@ -16,4 +15,5 @@
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -102,5 +102,5 @@
                 layer.mergeFrom(allDownloads);
                 layer.onPostDownloadFromServer();
-                Main.map.repaint();
+                MainApplication.getMap().repaint();
             });
         } catch (OsmTransferException | InvocationTargetException | InterruptedException e) {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java	(revision 12630)
@@ -28,4 +28,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType.Direction;
@@ -108,5 +109,5 @@
 
     private transient ListSelectionListener highlighterListener = lse -> {
-        if (Main.isDisplayingMapView()) {
+        if (MainApplication.isDisplayingMapView()) {
             Collection<RelationMember> sel = getMemberTableModel().getSelectedMembers();
             final Set<OsmPrimitive> toHighlight = new HashSet<>();
@@ -117,6 +118,6 @@
             }
             SwingUtilities.invokeLater(() -> {
-                if (Main.isDisplayingMapView() && highlightHelper.highlightOnly(toHighlight)) {
-                    Main.map.mapView.repaint();
+                if (MainApplication.isDisplayingMapView() && highlightHelper.highlightOnly(toHighlight)) {
+                    MainApplication.getMap().mapView.repaint();
                 }
             });
@@ -128,7 +129,7 @@
         if (!highlightEnabled) return;
         getMemberTableModel().getSelectionModel().addListSelectionListener(highlighterListener);
-        if (Main.isDisplayingMapView()) {
+        if (MainApplication.isDisplayingMapView()) {
             HighlightHelper.clearAllHighlighted();
-            Main.map.mapView.repaint();
+            MainApplication.getMap().mapView.repaint();
         }
     }
@@ -153,7 +154,7 @@
         getMemberTableModel().getSelectionModel().removeListSelectionListener(highlighterListener);
         highlighterListener = null;
-        if (Main.isDisplayingMapView()) {
+        if (MainApplication.isDisplayingMapView()) {
             HighlightHelper.clearAllHighlighted();
-            Main.map.mapView.repaint();
+            MainApplication.getMap().mapView.repaint();
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java	(revision 12630)
@@ -21,4 +21,5 @@
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
@@ -82,5 +83,5 @@
         }
         // Relation list gets update in EDT so selecting my be postponed to following EDT run
-        SwingUtilities.invokeLater(() -> Main.map.relationListDialog.selectRelation(newRelation));
+        SwingUtilities.invokeLater(() -> MainApplication.getMap().relationListDialog.selectRelation(newRelation));
     }
 
@@ -140,5 +141,5 @@
         );
         if (ret == 0) {
-            Main.map.conflictDialog.unfurlDialog();
+            MainApplication.getMap().conflictDialog.unfurlDialog();
         }
         return ret == 0;
Index: /trunk/src/org/openstreetmap/josm/gui/download/DownloadDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/download/DownloadDialog.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/download/DownloadDialog.java	(revision 12630)
@@ -39,4 +39,5 @@
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
@@ -408,6 +409,6 @@
         tpDownloadAreaSelectors.setSelectedIndex(idx);
 
-        if (Main.isDisplayingMapView()) {
-            MapView mv = Main.map.mapView;
+        if (MainApplication.isDisplayingMapView()) {
+            MapView mv = MainApplication.getMap().mapView;
             currentBounds = new Bounds(
                     mv.getLatLon(0, mv.getHeight()),
Index: /trunk/src/org/openstreetmap/josm/gui/io/AbstractPrimitiveTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/AbstractPrimitiveTask.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/io/AbstractPrimitiveTask.java	(revision 12630)
@@ -7,5 +7,4 @@
 import java.util.Set;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -16,4 +15,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -186,5 +186,5 @@
         GuiHelper.runInEDTAndWait(() -> {
             layer.mergeFrom(ds);
-            if (zoom && Main.map != null)
+            if (zoom && MainApplication.getMap() != null)
                 AutoScaleAction.zoomTo(ds.allPrimitives());
             layer.onPostDownloadFromServer();
Index: /trunk/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java	(revision 12630)
@@ -28,4 +28,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Changeset;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
@@ -84,5 +85,5 @@
         sourceLabel.addHyperlinkListener(e -> {
             if (HyperlinkEvent.EventType.ACTIVATED.equals(e.getEventType())) {
-                final String source = Main.map.mapView.getLayerInformationForSourceTag();
+                final String source = MainApplication.getMap().mapView.getLayerInformationForSourceTag();
                 hcbUploadSource.setText(Utils.shortenString(source, Changeset.MAX_CHANGESET_TAG_LENGTH));
                 // Fix #9965
Index: /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 12630)
@@ -89,4 +89,5 @@
 import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.NavigatableComponent.ZoomChangeListener;
@@ -261,5 +262,5 @@
 
     protected void initTileSource(T tileSource) {
-        coordinateConverter = new TileCoordinateConverter(Main.map.mapView, tileSource, getDisplaySettings());
+        coordinateConverter = new TileCoordinateConverter(MainApplication.getMap().mapView, tileSource, getDisplaySettings());
         attribution.initialize(tileSource);
 
@@ -852,5 +853,5 @@
 
     private TileSet getVisibleTileSet() {
-        ProjectionBounds bounds = Main.map.mapView.getState().getViewArea().getProjectionBounds();
+        ProjectionBounds bounds = MainApplication.getMap().mapView.getState().getViewArea().getProjectionBounds();
         return getTileSet(bounds, currentZoomLevel);
     }
@@ -987,5 +988,6 @@
                 drawImageInside(g, img, anchorImage, anchorScreen, null);
             }
-            if (tile instanceof ReprojectionTile && ((ReprojectionTile) tile).needsUpdate(Main.map.mapView.getScale())) {
+            MapView mapView = MainApplication.getMap().mapView;
+            if (tile instanceof ReprojectionTile && ((ReprojectionTile) tile).needsUpdate(mapView.getScale())) {
                 // This means we have a reprojected tile in memory cache, but not at
                 // current scale. Generally, the positioning of the tile will still
Index: /trunk/src/org/openstreetmap/josm/gui/layer/AlignImageryPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/AlignImageryPanel.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/AlignImageryPanel.java	(revision 12630)
@@ -15,7 +15,8 @@
 import javax.swing.border.EtchedBorder;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
@@ -54,6 +55,6 @@
         closeButton.setToolTipText(tr("Hide this message and never show it again"));
         closeButton.addActionListener(e -> {
-            if (Main.isDisplayingMapView()) {
-                Main.map.removeTopPanel(AlignImageryPanel.class);
+            if (MainApplication.isDisplayingMapView()) {
+                MainApplication.getMap().removeTopPanel(AlignImageryPanel.class);
                 if (doNotShowAgain.isSelected()) {
                     showAgain.put(Boolean.FALSE);
@@ -83,8 +84,9 @@
     public static void addNagPanelIfNeeded(ImageryInfo infoToAdd) {
         BooleanProperty showAgain = new BooleanProperty("message.imagery.nagPanel." + infoToAdd.getUrl(), true);
-        if (Main.isDisplayingMapView() && showAgain.get() && !infoToAdd.isGeoreferenceValid()
-                && Main.map.getTopPanel(AlignImageryPanel.class) == null) {
+        MapFrame map = MainApplication.getMap();
+        if (MainApplication.isDisplayingMapView() && showAgain.get() && !infoToAdd.isGeoreferenceValid()
+                && map.getTopPanel(AlignImageryPanel.class) == null) {
             double w = GuiHelper.getScreenSize().getWidth();
-            Main.map.addTopPanel(new AlignImageryPanel(w > 1300, showAgain, infoToAdd));
+            map.addTopPanel(new AlignImageryPanel(w > 1300, showAgain, infoToAdd));
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java	(revision 12630)
@@ -35,4 +35,6 @@
 import org.openstreetmap.josm.data.imagery.OffsetBookmark;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.MenuScroller;
 import org.openstreetmap.josm.gui.layer.imagery.ImageryFilterSettings;
@@ -81,8 +83,9 @@
 
     public double getPPD() {
-        if (!Main.isDisplayingMapView())
+        if (!MainApplication.isDisplayingMapView())
             return Main.getProjection().getDefaultZoomInPPD();
-        ProjectionBounds bounds = Main.map.mapView.getProjectionBounds();
-        return Main.map.mapView.getWidth() / (bounds.maxEast - bounds.minEast);
+        MapView mapView = MainApplication.getMap().mapView;
+        ProjectionBounds bounds = mapView.getProjectionBounds();
+        return mapView.getWidth() / (bounds.maxEast - bounds.minEast);
     }
 
@@ -206,5 +209,5 @@
             setOffset(b);
             Main.main.menu.imageryMenu.refreshOffsetMenu();
-            Main.map.repaint();
+            MainApplication.getMap().repaint();
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/LayerManager.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/LayerManager.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/LayerManager.java	(revision 12630)
@@ -12,5 +12,5 @@
 import java.util.function.Consumer;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
@@ -232,5 +232,5 @@
         insertLayerAt(layer, position);
         fireLayerAdded(layer, initialZoom);
-        if (Main.map != null) {
+        if (MainApplication.getMap() != null) {
             layer.hookUpMapView(); // needs to be after fireLayerAdded
         }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/NoteLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/NoteLayer.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/NoteLayer.java	(revision 12630)
@@ -32,4 +32,5 @@
 import org.openstreetmap.josm.data.osm.NoteData.NoteDataUpdateListener;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
@@ -73,10 +74,10 @@
     @Override
     public void hookUpMapView() {
-        Main.map.mapView.addMouseListener(this);
+        MainApplication.getMap().mapView.addMouseListener(this);
     }
 
     @Override
     public synchronized void destroy() {
-        Main.map.mapView.removeMouseListener(this);
+        MainApplication.getMap().mapView.removeMouseListener(this);
         noteData.removeNoteDataUpdateListener(this);
         super.destroy();
@@ -134,5 +135,5 @@
             int width = icon.getIconWidth();
             int height = icon.getIconHeight();
-            g.drawImage(icon.getImage(), p.x - (width / 2), p.y - height, Main.map.mapView);
+            g.drawImage(icon.getImage(), p.x - (width / 2), p.y - height, MainApplication.getMap().mapView);
         }
         if (noteData.getSelectedNote() != null) {
@@ -260,5 +261,5 @@
         Note closestNote = null;
         for (Note note : noteData.getNotes()) {
-            Point notePoint = Main.map.mapView.getPoint(note.getLatLon());
+            Point notePoint = MainApplication.getMap().mapView.getPoint(note.getLatLon());
             //move the note point to the center of the icon where users are most likely to click when selecting
             notePoint.setLocation(notePoint.getX(), notePoint.getY() - iconHeight / 2);
Index: /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 12630)
@@ -87,4 +87,6 @@
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.MapViewState.MapViewPoint;
@@ -176,6 +178,7 @@
     public void setRecentRelation(Relation relation) {
         recentRelations.put(relation, null);
-        if (Main.map != null && Main.map.relationListDialog != null) {
-            Main.map.relationListDialog.enableRecentRelations();
+        MapFrame map = MainApplication.getMap();
+        if (map != null && map.relationListDialog != null) {
+            map.relationListDialog.enableRecentRelations();
         }
     }
@@ -188,6 +191,7 @@
     public void removeRecentRelation(Relation relation) {
         recentRelations.remove(relation);
-        if (Main.map != null && Main.map.relationListDialog != null) {
-            Main.map.relationListDialog.enableRecentRelations();
+        MapFrame map = MainApplication.getMap();
+        if (map != null && map.relationListDialog != null) {
+            map.relationListDialog.enableRecentRelations();
         }
     }
@@ -478,5 +482,5 @@
         Rendering painter = MapRendererFactory.getInstance().createActiveRenderer(g, mv, inactive);
         painter.render(data, virtual, box);
-        Main.map.conflictDialog.paintConflicts(g, mv);
+        MainApplication.getMap().conflictDialog.paintConflicts(g, mv);
     }
 
@@ -571,6 +575,7 @@
         invalidate();
         // warn about new conflicts
-        if (numNewConflicts > 0 && Main.map != null && Main.map.conflictDialog != null) {
-            Main.map.conflictDialog.warnNumNewConflicts(numNewConflicts);
+        MapFrame map = MainApplication.getMap();
+        if (numNewConflicts > 0 && map != null && map.conflictDialog != null) {
+            map.conflictDialog.warnNumNewConflicts(numNewConflicts);
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/ValidatorLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/ValidatorLayer.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/ValidatorLayer.java	(revision 12630)
@@ -22,4 +22,5 @@
 import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.TestError;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
@@ -49,5 +50,5 @@
         super(tr("Validation errors"));
         Main.getLayerManager().addLayerChangeListener(this);
-        Main.map.validatorDialog.tree.addInvalidationListener(invalidator);
+        MainApplication.getMap().validatorDialog.tree.addInvalidationListener(invalidator);
     }
 
@@ -68,5 +69,5 @@
     @Override
     public void paint(final Graphics2D g, final MapView mv, Bounds bounds) {
-        DefaultMutableTreeNode root = Main.map.validatorDialog.tree.getRoot();
+        DefaultMutableTreeNode root = MainApplication.getMap().validatorDialog.tree.getRoot();
         if (root == null || root.getChildCount() == 0)
             return;
@@ -94,5 +95,5 @@
     public String getToolTipText() {
         MultiMap<Severity, TestError> errorTree = new MultiMap<>();
-        List<TestError> errors = Main.map.validatorDialog.tree.getErrors();
+        List<TestError> errors = MainApplication.getMap().validatorDialog.tree.getErrors();
         for (TestError e : errors) {
             errorTree.put(e.getSeverity(), e);
@@ -173,5 +174,5 @@
     @Override
     public synchronized void destroy() {
-        Main.map.validatorDialog.tree.removeInvalidationListener(invalidator);
+        MainApplication.getMap().validatorDialog.tree.removeInvalidationListener(invalidator);
         Main.getLayerManager().removeLayerChangeListener(this);
         super.destroy();
Index: /trunk/src/org/openstreetmap/josm/gui/layer/WMTSLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/WMTSLayer.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/WMTSLayer.java	(revision 12630)
@@ -14,4 +14,5 @@
 import org.openstreetmap.josm.data.imagery.WMTSTileSource;
 import org.openstreetmap.josm.data.projection.Projection;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.imagery.TileSourceDisplaySettings;
 import org.openstreetmap.josm.tools.Logging;
@@ -71,5 +72,5 @@
     @Override
     public int getBestZoom() {
-        if (!Main.isDisplayingMapView())
+        if (!MainApplication.isDisplayingMapView())
             return 0;
         ScaleList scaleList = getNativeScales();
@@ -77,5 +78,5 @@
             return getMaxZoomLvl();
         }
-        double displayScale = Main.map.mapView.getScale();
+        double displayScale = MainApplication.getMap().mapView.getScale();
         if (coordinateConverter.requiresReprojection()) {
             displayScale *= Main.getProjection().getMetersPerUnit();
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 12630)
@@ -71,4 +71,5 @@
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -194,5 +195,5 @@
                     BoundingXYVisitor bbox = new BoundingXYVisitor();
                     yLayer.visitBoundingBox(bbox);
-                    Main.map.mapView.zoomTo(bbox);
+                    MainApplication.getMap().mapView.zoomTo(bbox);
                 }
 
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 12630)
@@ -47,4 +47,5 @@
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapFrame.MapModeChangeListener;
@@ -458,5 +459,5 @@
 
     private static Dimension scaledDimension(Image thumb) {
-        final double d = Main.map.mapView.getDist100Pixel();
+        final double d = MainApplication.getMap().mapView.getDist100Pixel();
         final double size = 10 /*meter*/;     /* size of the photo on the map */
         double s = size * 100 /*px*/ / d;
@@ -778,5 +779,5 @@
             ImageEntry img = data.get(idx);
             if (img.getPos() != null) {
-                Point imgCenter = Main.map.mapView.getPoint(img.getPos());
+                Point imgCenter = MainApplication.getMap().mapView.getPoint(img.getPos());
                 Rectangle imgRect;
                 if (useThumbs && img.hasThumbnail()) {
@@ -932,5 +933,6 @@
         mouseAdapter = new MouseAdapter() {
             private boolean isMapModeOk() {
-                return Main.map.mapMode == null || isSupportedMapMode(Main.map.mapMode);
+                MapMode mapMode = MainApplication.getMap().mapMode;
+                return mapMode == null || isSupportedMapMode(mapMode);
             }
 
@@ -977,20 +979,21 @@
 
         mapModeListener = (oldMapMode, newMapMode) -> {
+            MapView mapView = MainApplication.getMap().mapView;
             if (newMapMode == null || isSupportedMapMode(newMapMode)) {
-                Main.map.mapView.addMouseListener(mouseAdapter);
-                Main.map.mapView.addMouseMotionListener(mouseMotionAdapter);
+                mapView.addMouseListener(mouseAdapter);
+                mapView.addMouseMotionListener(mouseMotionAdapter);
             } else {
-                Main.map.mapView.removeMouseListener(mouseAdapter);
-                Main.map.mapView.removeMouseMotionListener(mouseMotionAdapter);
+                mapView.removeMouseListener(mouseAdapter);
+                mapView.removeMouseMotionListener(mouseMotionAdapter);
             }
         };
 
         MapFrame.addMapModeChangeListener(mapModeListener);
-        mapModeListener.mapModeChange(null, Main.map.mapMode);
+        mapModeListener.mapModeChange(null, MainApplication.getMap().mapMode);
 
         Main.getLayerManager().addActiveLayerChangeListener(e -> {
             if (Main.getLayerManager().getActiveLayer() == this) {
                 // only in select mode it is possible to click the images
-                Main.map.selectSelectTool(false);
+                MainApplication.getMap().selectSelectTool(false);
             }
         });
@@ -1006,6 +1009,7 @@
                 if (e.getRemovedLayer() == GeoImageLayer.this) {
                     stopLoadThumbs();
-                    Main.map.mapView.removeMouseListener(mouseAdapter);
-                    Main.map.mapView.removeMouseMotionListener(mouseMotionAdapter);
+                    MapView mapView = MainApplication.getMap().mapView;
+                    mapView.removeMouseListener(mouseAdapter);
+                    mapView.removeMouseMotionListener(mouseMotionAdapter);
                     MapFrame.removeMapModeChangeListener(mapModeListener);
                     currentPhoto = -1;
@@ -1025,7 +1029,8 @@
         });
 
-        if (Main.map.getToggleDialog(ImageViewerDialog.class) == null) {
+        MapFrame map = MainApplication.getMap();
+        if (map.getToggleDialog(ImageViewerDialog.class) == null) {
             ImageViewerDialog.newInstance();
-            Main.map.addToggleDialog(ImageViewerDialog.getInstance());
+            map.addToggleDialog(ImageViewerDialog.getInstance());
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 12630)
@@ -23,4 +23,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.DialogsPanel.Action;
 import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
@@ -236,5 +237,5 @@
                 centerView = button.isEnabled() && button.isSelected();
                 if (centerView && currentEntry != null && currentEntry.getPos() != null) {
-                    Main.map.mapView.zoomTo(currentEntry.getPos());
+                    MainApplication.getMap().mapView.zoomTo(currentEntry.getPos());
                 }
             } else if (COMMAND_ZOOM.equals(action)) {
@@ -309,6 +310,6 @@
             imageChanged = currentEntry != entry;
 
-            if (centerView && entry != null && Main.isDisplayingMapView() && entry.getPos() != null) {
-                Main.map.mapView.zoomTo(entry.getPos());
+            if (centerView && entry != null && MainApplication.isDisplayingMapView() && entry.getPos() != null) {
+                MainApplication.getMap().mapView.zoomTo(entry.getPos());
             }
 
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ThumbsLoader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ThumbsLoader.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ThumbsLoader.java	(revision 12630)
@@ -21,4 +21,5 @@
 import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry;
 import org.openstreetmap.josm.data.cache.JCSCacheManager;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.ExifReader;
 import org.openstreetmap.josm.tools.Logging;
@@ -79,5 +80,5 @@
     public void run() {
         Logging.debug("Load Thumbnails");
-        tracker = new MediaTracker(Main.map.mapView);
+        tracker = new MediaTracker(MainApplication.getMap().mapView);
         for (ImageEntry entry : data) {
             if (stop) return;
@@ -87,5 +88,5 @@
                 entry.setThumbnail(loadThumb(entry));
 
-                if (layer != null && Main.isDisplayingMapView()) {
+                if (layer != null && MainApplication.isDisplayingMapView()) {
                     layer.updateBufferAndRepaint();
                 }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java	(revision 12630)
@@ -36,4 +36,5 @@
 import org.openstreetmap.josm.data.gpx.GpxTrack;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.tools.GBC;
@@ -279,5 +280,5 @@
             if (v != 1 && v != 2) {
                 layer.trackVisibility = Arrays.copyOf(trackVisibilityBackup, layer.trackVisibility.length);
-                Main.map.repaint();
+                MainApplication.getMap().repaint();
                 return;
             }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java	(revision 12630)
@@ -19,4 +19,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -111,5 +112,5 @@
             panel.savePreferences(layer.getName(), f);
         }
-        Main.map.repaint();
+        MainApplication.getMap().repaint();
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 12630)
@@ -26,4 +26,5 @@
 import org.openstreetmap.josm.data.gpx.WayPoint;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.markerlayer.AudioMarker;
@@ -115,5 +116,5 @@
             }
             Main.getLayerManager().addLayer(ml);
-            Main.map.repaint();
+            MainApplication.getMap().repaint();
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/imagery/ReprojectionTile.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/imagery/ReprojectionTile.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/imagery/ReprojectionTile.java	(revision 12630)
@@ -13,4 +13,5 @@
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.data.projection.Projections;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.ImageWarp;
 import org.openstreetmap.josm.tools.Utils;
@@ -101,9 +102,9 @@
      */
     protected void transform(BufferedImage imageIn) {
-        if (!Main.isDisplayingMapView()) {
+        if (!MainApplication.isDisplayingMapView()) {
             reset();
             return;
         }
-        double scaleMapView = Main.map.mapView.getScale();
+        double scaleMapView = MainApplication.getMap().mapView.getScale();
         ImageWarp.Interpolation interpolation;
         switch (Main.pref.get("imagery.warp.pixel-interpolation", "bilinear")) {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/imagery/ZoomToNativeLevelAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/imagery/ZoomToNativeLevelAction.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/imagery/ZoomToNativeLevelAction.java	(revision 12630)
@@ -8,5 +8,5 @@
 import javax.swing.AbstractAction;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
 
@@ -31,5 +31,5 @@
     public void actionPerformed(ActionEvent ae) {
         double newFactor = Math.sqrt(layer.getScaleFactor(layer.getZoomLevel()));
-        Main.map.mapView.zoomToFactor(newFactor);
+        MainApplication.getMap().mapView.zoomToFactor(newFactor);
         layer.invalidate();
     }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/AudioMarker.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/AudioMarker.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/AudioMarker.java	(revision 12630)
@@ -7,9 +7,9 @@
 import java.util.Collections;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.gpx.GpxConstants;
 import org.openstreetmap.josm.data.gpx.GpxLink;
 import org.openstreetmap.josm.data.gpx.WayPoint;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.io.audio.AudioPlayer;
 import org.openstreetmap.josm.io.audio.AudioUtil;
@@ -56,5 +56,5 @@
         try {
             // first enable tracing the audio along the track
-            Main.map.mapView.playHeadMarker.animate();
+            MainApplication.getMap().mapView.playHeadMarker.animate();
 
             AudioPlayer.play(audioUrl, offset + syncOffset + after);
Index: /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/ButtonMarker.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/ButtonMarker.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/ButtonMarker.java	(revision 12630)
@@ -13,4 +13,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.tools.template_engine.TemplateEngineDataProvider;
@@ -38,5 +39,5 @@
 
     @Override public boolean containsPoint(Point p) {
-        Point screen = Main.map.mapView.getPoint(getEastNorth());
+        Point screen = MainApplication.getMap().mapView.getPoint(getEastNorth());
         buttonRectangle.setLocation(screen.x+4, screen.y+2);
         return buttonRectangle.contains(p);
Index: /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 12630)
@@ -39,4 +39,5 @@
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.data.preferences.ColorProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
@@ -351,5 +352,5 @@
             }
         }
-        Main.map.mapView.zoomTo(currentMarker.getEastNorth());
+        MainApplication.getMap().mapView.zoomTo(currentMarker.getEastNorth());
     }
 
@@ -370,5 +371,5 @@
             }
         }
-        Main.map.mapView.zoomTo(currentMarker.getEastNorth());
+        MainApplication.getMap().mapView.zoomTo(currentMarker.getEastNorth());
     }
 
@@ -413,5 +414,5 @@
 
     private static void playAdjacentMarker(Marker startMarker, boolean next) {
-        if (!Main.isDisplayingMapView())
+        if (!MainApplication.isDisplayingMapView())
             return;
         Marker m = null;
@@ -565,5 +566,5 @@
                 return;
             }
-            PlayHeadMarker playHeadMarker = Main.map.mapView.playHeadMarker;
+            PlayHeadMarker playHeadMarker = MainApplication.getMap().mapView.playHeadMarker;
             if (playHeadMarker == null)
                 return;
Index: /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java	(revision 12630)
@@ -22,4 +22,6 @@
 import org.openstreetmap.josm.data.gpx.GpxTrackSegment;
 import org.openstreetmap.josm.data.gpx.WayPoint;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
@@ -63,14 +65,15 @@
         if (!enabled) return;
         dropTolerance = Main.pref.getInteger("marker.playHeadDropTolerance", 50);
-        if (Main.isDisplayingMapView()) {
-            Main.map.mapView.addMouseListener(new MouseAdapter() {
+        if (MainApplication.isDisplayingMapView()) {
+            MapFrame map = MainApplication.getMap();
+            map.mapView.addMouseListener(new MouseAdapter() {
                 @Override public void mousePressed(MouseEvent ev) {
                     if (ev.getButton() == MouseEvent.BUTTON1 && playHead.containsPoint(ev.getPoint())) {
                         /* when we get a click on the marker, we need to switch mode to avoid
                          * getting confused with other drag operations (like select) */
-                        oldMode = Main.map.mapMode;
+                        oldMode = map.mapMode;
                         oldCoor = getCoor();
                         PlayHeadDragMode playHeadDragMode = new PlayHeadDragMode(playHead);
-                        Main.map.selectMapMode(playHeadDragMode);
+                        map.selectMapMode(playHeadDragMode);
                         playHeadDragMode.mousePressed(ev);
                     }
@@ -82,5 +85,5 @@
     @Override
     public boolean containsPoint(Point p) {
-        Point screen = Main.map.mapView.getPoint(getEastNorth());
+        Point screen = MainApplication.getMap().mapView.getPoint(getEastNorth());
         Rectangle r = new Rectangle(screen.x, screen.y, symbol.getIconWidth(),
                 symbol.getIconHeight());
@@ -121,6 +124,7 @@
             setCoor(oldCoor);
         }
-        Main.map.selectMapMode(oldMode);
-        Main.map.mapView.repaint();
+        MapFrame map = MainApplication.getMap();
+        map.selectMapMode(oldMode);
+        map.mapView.repaint();
         if (timer != null) {
             timer.start();
@@ -134,5 +138,5 @@
     public void drag(EastNorth en) {
         setEastNorth(en);
-        Main.map.mapView.repaint();
+        MainApplication.getMap().mapView.repaint();
     }
 
@@ -148,6 +152,7 @@
         if (recent != null && recent.parentLayer != null && recent.parentLayer.fromLayer != null) {
             /* work out EastNorth equivalent of 50 (default) pixels tolerance */
-            Point p = Main.map.mapView.getPoint(en);
-            EastNorth enPlus25px = Main.map.mapView.getEastNorth(p.x+dropTolerance, p.y);
+            MapView mapView = MainApplication.getMap().mapView;
+            Point p = mapView.getPoint(en);
+            EastNorth enPlus25px = mapView.getEastNorth(p.x+dropTolerance, p.y);
             cw = recent.parentLayer.fromLayer.data.nearestPointOnTrack(en, enPlus25px.east() - en.east());
         }
@@ -202,5 +207,6 @@
             return;
         /* First, see if we dropped onto an existing audio marker in the layer being played */
-        Point startPoint = Main.map.mapView.getPoint(en);
+        MapView mapView = MainApplication.getMap().mapView;
+        Point startPoint = mapView.getPoint(en);
         AudioMarker ca = null;
         if (recent.parentLayer != null) {
@@ -225,6 +231,6 @@
         if (ca == null) {
             /* work out EastNorth equivalent of 50 (default) pixels tolerance */
-            Point p = Main.map.mapView.getPoint(en);
-            EastNorth enPlus25px = Main.map.mapView.getEastNorth(p.x+dropTolerance, p.y);
+            Point p = mapView.getPoint(en);
+            EastNorth enPlus25px = mapView.getEastNorth(p.x+dropTolerance, p.y);
             WayPoint cw = recent.parentLayer.fromLayer.data.nearestPointOnTrack(en, enPlus25px.east() - en.east());
             if (cw == null) {
@@ -345,9 +351,10 @@
                             (audioTime - w1.time)/(w2.time - w1.time)));
         time = audioTime;
+        MapView mapView = MainApplication.getMap().mapView;
         if (jumpToMarker) {
             jumpToMarker = false;
-            Main.map.mapView.zoomTo(w1.getEastNorth());
-        }
-        Main.map.mapView.repaint();
+            mapView.zoomTo(w1.getEastNorth());
+        }
+        mapView.repaint();
     }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java	(revision 12630)
@@ -14,4 +14,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.MapPaintDialog;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
@@ -66,5 +67,5 @@
         @Override
         public void updateEnabledState() {
-            setEnabled(Main.isDisplayingMapView() && (Main.getLayerManager().getEditLayer() != null || mapHasGpxorMarkerLayer()));
+            setEnabled(MainApplication.isDisplayingMapView() && (Main.getLayerManager().getEditLayer() != null || mapHasGpxorMarkerLayer()));
         }
 
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/MapImage.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/MapImage.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/MapImage.java	(revision 12630)
@@ -12,5 +12,6 @@
 import javax.swing.ImageIcon;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.mappaint.StyleSource;
@@ -149,6 +150,7 @@
                         if (temporary) {
                             disabledImgCache = null;
-                            Main.map.mapView.preferenceChanged(null); // otherwise repaint is ignored, because layer hasn't changed
-                            Main.map.mapView.repaint();
+                            MapView mapView = MainApplication.getMap().mapView;
+                            mapView.preferenceChanged(null); // otherwise repaint is ignored, because layer hasn't changed
+                            mapView.repaint();
                         }
                         temporary = false;
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java	(revision 12630)
@@ -20,4 +20,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
@@ -179,5 +180,5 @@
             MapPaintStyles.readFromPreferences();
         }
-        if (Main.isDisplayingMapView()) {
+        if (MainApplication.isDisplayingMapView()) {
             MapPaintStyles.getStyles().clearCached();
         }
Index: /trunk/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java	(revision 12630)
@@ -12,4 +12,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapStatus.BackgroundProgressMonitor;
@@ -107,5 +108,5 @@
 
         BackgroundProgressMonitor backgroundMonitor = null;
-        MapFrame map = Main.map;
+        MapFrame map = MainApplication.getMap();
         if (map != null) {
             backgroundMonitor = map.statusLine.progressMonitor;
@@ -314,5 +315,5 @@
         }
         BackgroundProgressMonitor backgroundMonitor = null;
-        MapFrame map = Main.map;
+        MapFrame map = MainApplication.getMap();
         if (map != null) {
             backgroundMonitor = map.statusLine.progressMonitor;
@@ -339,5 +340,5 @@
                 dialog = null;
                 Main.currentProgressMonitor = null;
-                MapFrame map = Main.map;
+                MapFrame map = MainApplication.getMap();
                 if (map != null) {
                     map.statusLine.progressMonitor.setVisible(false);
@@ -354,5 +355,5 @@
         doInEDT(() -> {
             if (dialog != null) {
-                dialog.setInBackgroundPossible(taskId != null && Main.isDisplayingMapView());
+                dialog.setInBackgroundPossible(taskId != null && MainApplication.isDisplayingMapView());
                 reset();
                 getDialog();
@@ -366,5 +367,5 @@
         doInEDT(() -> {
             if (dialog != null) {
-                dialog.setInBackgroundPossible(taskId != null && Main.isDisplayingMapView());
+                dialog.setInBackgroundPossible(taskId != null && MainApplication.isDisplayingMapView());
             }
         });
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java	(revision 12630)
@@ -24,4 +24,6 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
@@ -51,6 +53,7 @@
         @Override
         public void focusLost(FocusEvent e) {
-            if (Main.map != null) {
-                Main.map.keyDetector.setEnabled(true);
+            MapFrame map = MainApplication.getMap();
+            if (map != null) {
+                map.keyDetector.setEnabled(true);
             }
         }
@@ -58,6 +61,7 @@
         @Override
         public void focusGained(FocusEvent e) {
-            if (Main.map != null) {
-                Main.map.keyDetector.setEnabled(false);
+            MapFrame map = MainApplication.getMap();
+            if (map != null) {
+                map.keyDetector.setEnabled(false);
             }
             // save unix system selection (middle mouse paste)
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/JosmPasswordField.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/JosmPasswordField.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/JosmPasswordField.java	(revision 12630)
@@ -13,5 +13,6 @@
 import javax.swing.text.JTextComponent;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.tools.Logging;
 
@@ -99,6 +100,7 @@
     @Override
     public void focusGained(FocusEvent e) {
-        if (Main.map != null) {
-            Main.map.keyDetector.setEnabled(false);
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
+            map.keyDetector.setEnabled(false);
         }
     }
@@ -106,6 +108,7 @@
     @Override
     public void focusLost(FocusEvent e) {
-        if (Main.map != null) {
-            Main.map.keyDetector.setEnabled(true);
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
+            map.keyDetector.setEnabled(true);
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/JosmTextArea.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/JosmTextArea.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/JosmTextArea.java	(revision 12630)
@@ -9,5 +9,6 @@
 import javax.swing.text.Document;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 
 /**
@@ -105,6 +106,7 @@
     @Override
     public void focusGained(FocusEvent e) {
-        if (Main.map != null) {
-            Main.map.keyDetector.setEnabled(false);
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
+            map.keyDetector.setEnabled(false);
         }
     }
@@ -112,6 +114,7 @@
     @Override
     public void focusLost(FocusEvent e) {
-        if (Main.map != null) {
-            Main.map.keyDetector.setEnabled(true);
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
+            map.keyDetector.setEnabled(true);
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java	(revision 12630)
@@ -14,5 +14,6 @@
 import javax.swing.text.Document;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 
 /**
@@ -168,6 +169,7 @@
     @Override
     public void focusGained(FocusEvent e) {
-        if (Main.map != null) {
-            Main.map.keyDetector.setEnabled(false);
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
+            map.keyDetector.setEnabled(false);
         }
         repaint();
@@ -176,6 +178,7 @@
     @Override
     public void focusLost(FocusEvent e) {
-        if (Main.map != null) {
-            Main.map.keyDetector.setEnabled(true);
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
+            map.keyDetector.setEnabled(true);
         }
         repaint();
Index: /trunk/src/org/openstreetmap/josm/io/NoteImporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/NoteImporter.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/io/NoteImporter.java	(revision 12630)
@@ -12,4 +12,5 @@
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.notes.Note;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.NoteLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -63,5 +64,5 @@
         final List<Note> fileNotes = new NoteReader(in).parse();
         List<NoteLayer> noteLayers = null;
-        if (Main.map != null) {
+        if (MainApplication.getMap() != null) {
             noteLayers = Main.getLayerManager().getLayersOfType(NoteLayer.class);
         }
Index: /trunk/src/org/openstreetmap/josm/io/OsmApi.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 12630)
@@ -30,4 +30,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -241,5 +242,5 @@
              * to load the layers in the first place because they would have
              * been disabled! */
-            if (Main.isDisplayingMapView()) {
+            if (MainApplication.isDisplayingMapView()) {
                 for (Layer l : Main.getLayerManager().getLayersOfType(ImageryLayer.class)) {
                     if (((ImageryLayer) l).getInfo().isBlacklisted()) {
Index: /trunk/src/org/openstreetmap/josm/io/WMSLayerExporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/WMSLayerExporter.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/io/WMSLayerExporter.java	(revision 12630)
@@ -7,7 +7,7 @@
 import java.io.ObjectOutputStream;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryPreferenceEntry;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -40,5 +40,5 @@
             try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file))) {
                 oos.writeInt(CURRENT_FILE_VERSION); // file version
-                oos.writeObject(Main.map.mapView.getCenter());
+                oos.writeObject(MainApplication.getMap().mapView.getCenter());
                 ImageryPreferenceEntry entry = new ImageryPreferenceEntry(((AbstractTileSourceLayer) layer).getInfo());
                 oos.writeObject(Preferences.serializeStruct(entry, ImageryPreferenceEntry.class));
Index: /trunk/src/org/openstreetmap/josm/io/WMSLayerImporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/WMSLayerImporter.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/io/WMSLayerImporter.java	(revision 12630)
@@ -17,4 +17,5 @@
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryPreferenceEntry;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -88,5 +89,5 @@
             Main.getLayerManager().addLayer(layer);
             if (zoomTo != null) {
-                Main.map.mapView.zoomTo(zoomTo);
+                MainApplication.getMap().mapView.zoomTo(zoomTo);
             }
         });
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java	(revision 12630)
@@ -14,4 +14,6 @@
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.remotecontrol.AddTagsDialog;
@@ -85,7 +87,8 @@
         Node node = null;
 
-        if (Main.isDisplayingMapView()) {
-            Point p = Main.map.mapView.getPoint(ll);
-            node = Main.map.mapView.getNearestNode(p, OsmPrimitive::isUsable);
+        if (MainApplication.isDisplayingMapView()) {
+            MapView mapView = MainApplication.getMap().mapView;
+            Point p = mapView.getPoint(ll);
+            node = mapView.getNearestNode(p, OsmPrimitive::isUsable);
             if (node != null && node.getCoor().greatCircleDistance(ll) > Main.pref.getDouble("remotecontrol.tolerance", 0.1)) {
                 node = null; // node is too far
@@ -103,5 +106,5 @@
             AutoScaleAction.autoScale("selection");
         } else {
-            Main.map.mapView.repaint();
+            MainApplication.getMap().mapView.repaint();
         }
         // parse parameter addtags=tag1=value1|tag2=vlaue2
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java	(revision 12630)
@@ -4,5 +4,4 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.awt.Point;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -23,4 +22,6 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.remotecontrol.AddTagsDialog;
@@ -125,7 +126,7 @@
         Node nd = null;
 
-        if (Main.isDisplayingMapView()) {
-            Point p = Main.map.mapView.getPoint(ll);
-            nd = Main.map.mapView.getNearestNode(p, OsmPrimitive::isUsable);
+        if (MainApplication.isDisplayingMapView()) {
+            MapView mapView = MainApplication.getMap().mapView;
+            nd = mapView.getNearestNode(mapView.getPoint(ll), OsmPrimitive::isUsable);
             if (nd != null && nd.getCoor().greatCircleDistance(ll) > Main.pref.getDouble("remote.tolerance", 0.1)) {
                 nd = null; // node is too far
@@ -171,5 +172,5 @@
             AutoScaleAction.autoScale("selection");
         } else {
-            Main.map.mapView.repaint();
+            MainApplication.getMap().mapView.repaint();
         }
         return way;
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java	(revision 12630)
@@ -10,4 +10,5 @@
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
 import org.openstreetmap.josm.data.imagery.ImageryLayerInfo;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -95,5 +96,5 @@
     protected void handleRequest() throws RequestHandlerErrorException {
         final ImageryInfo imgInfo = buildImageryInfo();
-        if (Main.isDisplayingMapView()) {
+        if (MainApplication.isDisplayingMapView()) {
             for (ImageryLayer layer : Main.getLayerManager().getLayersOfType(ImageryLayer.class)) {
                 if (layer.getInfo().equals(imgInfo)) {
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java	(revision 12630)
@@ -26,4 +26,6 @@
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.remotecontrol.AddTagsDialog;
@@ -184,8 +186,9 @@
                 ds.setSelected(newSel);
                 zoom(newSel, bbox);
-                if (Main.isDisplayingMapView() && Main.map.relationListDialog != null) {
-                    Main.map.relationListDialog.selectRelations(null); // unselect all relations to fix #7342
-                    Main.map.relationListDialog.dataChanged(null);
-                    Main.map.relationListDialog.selectRelations(Utils.filteredCollection(newSel, Relation.class));
+                MapFrame map = MainApplication.getMap();
+                if (MainApplication.isDisplayingMapView() && map.relationListDialog != null) {
+                    map.relationListDialog.selectRelations(null); // unselect all relations to fix #7342
+                    map.relationListDialog.dataChanged(null);
+                    map.relationListDialog.selectRelations(Utils.filteredCollection(newSel, Relation.class));
                 }
             });
@@ -233,10 +236,10 @@
         if (!"download".equals(args.get("zoom_mode")) && !primitives.isEmpty()) {
             AutoScaleAction.autoScale("selection");
-        } else if (Main.isDisplayingMapView()) {
+        } else if (MainApplication.isDisplayingMapView()) {
             // make sure this isn't called unless there *is* a MapView
             GuiHelper.executeByMainWorkerInEDT(() -> {
                 BoundingXYVisitor bbox1 = new BoundingXYVisitor();
                 bbox1.visit(bbox);
-                Main.map.mapView.zoomTo(bbox1);
+                MainApplication.getMap().mapView.zoomTo(bbox1);
             });
         }
Index: /trunk/src/org/openstreetmap/josm/io/session/SessionWriter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/session/SessionWriter.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/io/session/SessionWriter.java	(revision 12630)
@@ -32,4 +32,6 @@
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.projection.Projections;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -262,5 +264,6 @@
         Element centerEl = doc.createElement("center");
         viewportEl.appendChild(centerEl);
-        EastNorth center = Main.map.mapView.getCenter();
+        MapView mapView = MainApplication.getMap().mapView;
+        EastNorth center = mapView.getCenter();
         LatLon centerLL = Projections.inverseProject(center);
         centerEl.setAttribute("lat", Double.toString(centerLL.lat()));
@@ -268,5 +271,5 @@
         Element scale = doc.createElement("scale");
         viewportEl.appendChild(scale);
-        double dist100px = Main.map.mapView.getDist100Pixel();
+        double dist100px = mapView.getDist100Pixel();
         scale.setAttribute("meter-per-pixel", Double.toString(dist100px / 100));
     }
Index: /trunk/src/org/openstreetmap/josm/tools/Geometry.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/Geometry.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/tools/Geometry.java	(revision 12630)
@@ -35,4 +35,6 @@
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.data.projection.Projections;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 
@@ -553,5 +555,6 @@
      */
     public static Area getAreaLatLon(Relation multipolygon) {
-        final Multipolygon mp = Main.map == null || Main.map.mapView == null
+        MapFrame map = MainApplication.getMap();
+        final Multipolygon mp = map == null || map.mapView == null
                 ? new Multipolygon(multipolygon)
                 : MultipolygonCache.getInstance().get(multipolygon);
@@ -693,5 +696,6 @@
     public static double multipolygonArea(Relation multipolygon) {
         double area = 0.0;
-        final Multipolygon mp = Main.map == null || Main.map.mapView == null
+        MapFrame map = MainApplication.getMap();
+        final Multipolygon mp = map == null || map.mapView == null
                 ? new Multipolygon(multipolygon)
                 : MultipolygonCache.getInstance().get(multipolygon);
Index: /trunk/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java	(revision 12630)
@@ -24,4 +24,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.MultikeyShortcutAction.MultikeyInfo;
 
@@ -42,5 +43,5 @@
             @Override
             public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
-                Main.map.statusLine.resetHelpText(STATUS_BAR_ID);
+                MainApplication.getMap().statusLine.resetHelpText(STATUS_BAR_ID);
             }
 
@@ -114,5 +115,5 @@
                 }
                 lastAction = null;
-                Main.map.statusLine.resetHelpText(STATUS_BAR_ID);
+                MainApplication.getMap().statusLine.resetHelpText(STATUS_BAR_ID);
                 return true;
             }
@@ -147,5 +148,5 @@
             lastAction = this;
             timer.schedule(new MyTimerTask(lastTimestamp, lastAction), DIALOG_DELAY);
-            Main.map.statusLine.setHelpText(STATUS_BAR_ID, tr("{0}... [please type its number]", (String) action.getValue(SHORT_DESCRIPTION)));
+            MainApplication.getMap().statusLine.setHelpText(STATUS_BAR_ID, tr("{0}... [please type its number]", (String) action.getValue(SHORT_DESCRIPTION)));
         }
 
Index: /trunk/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java	(revision 12629)
+++ /trunk/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java	(revision 12630)
@@ -15,4 +15,6 @@
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.data.projection.Projections;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 
@@ -204,6 +206,7 @@
 
     private static Dimension getScreenSize() {
-        if (Main.isDisplayingMapView()) {
-            return new Dimension(Main.map.mapView.getWidth(), Main.map.mapView.getHeight());
+        if (MainApplication.isDisplayingMapView()) {
+            MapView mapView = MainApplication.getMap().mapView;
+            return new Dimension(mapView.getWidth(), mapView.getHeight());
         } else {
             return GuiHelper.getScreenSize();
Index: /trunk/test/performance/org/openstreetmap/josm/gui/mappaint/MapRendererPerformanceTest.java
===================================================================
--- /trunk/test/performance/org/openstreetmap/josm/gui/mappaint/MapRendererPerformanceTest.java	(revision 12629)
+++ /trunk/test/performance/org/openstreetmap/josm/gui/mappaint/MapRendererPerformanceTest.java	(revision 12630)
@@ -26,5 +26,4 @@
 import org.junit.rules.Timeout;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.PerformanceTestUtils;
 import org.openstreetmap.josm.TestUtils;
@@ -36,4 +35,5 @@
 import org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer.StyleRecord;
 import org.openstreetmap.josm.data.projection.Projections;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.mappaint.StyleSetting.BooleanStyleSetting;
@@ -95,5 +95,5 @@
         g.setColor(Color.BLACK);
         g.fillRect(0, 0, IMG_WIDTH, IMG_WIDTH);
-        nc = Main.map.mapView;
+        nc = MainApplication.getMap().mapView;
         nc.setBounds(0, 0, IMG_WIDTH, IMG_HEIGHT);
 
Index: /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/AddNoteActionTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/AddNoteActionTest.java	(revision 12629)
+++ /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/AddNoteActionTest.java	(revision 12630)
@@ -13,4 +13,6 @@
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.NoteData;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -39,8 +41,9 @@
             Main.getLayerManager().addLayer(layer);
             AddNoteAction mapMode = new AddNoteAction(new NoteData(Collections.<Note>emptyList()));
-            MapMode oldMapMode = Main.map.mapMode;
-            assertTrue(Main.map.selectMapMode(mapMode));
-            assertEquals(mapMode, Main.map.mapMode);
-            assertTrue(Main.map.selectMapMode(oldMapMode));
+            MapFrame map = MainApplication.getMap();
+            MapMode oldMapMode = map.mapMode;
+            assertTrue(map.selectMapMode(mapMode));
+            assertEquals(mapMode, map.mapMode);
+            assertTrue(map.selectMapMode(oldMapMode));
         } finally {
             Main.getLayerManager().removeLayer(layer);
Index: /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/DeleteActionTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/DeleteActionTest.java	(revision 12629)
+++ /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/DeleteActionTest.java	(revision 12630)
@@ -11,4 +11,6 @@
 import org.openstreetmap.josm.actions.mapmode.DeleteAction.DeleteMode;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -37,8 +39,9 @@
             Main.getLayerManager().addLayer(layer);
             DeleteAction mapMode = new DeleteAction();
-            MapMode oldMapMode = Main.map.mapMode;
-            assertTrue(Main.map.selectMapMode(mapMode));
-            assertEquals(mapMode, Main.map.mapMode);
-            assertTrue(Main.map.selectMapMode(oldMapMode));
+            MapFrame map = MainApplication.getMap();
+            MapMode oldMapMode = map.mapMode;
+            assertTrue(map.selectMapMode(mapMode));
+            assertEquals(mapMode, map.mapMode);
+            assertTrue(map.selectMapMode(oldMapMode));
         } finally {
             Main.getLayerManager().removeLayer(layer);
Index: /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/DrawActionTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/DrawActionTest.java	(revision 12629)
+++ /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/DrawActionTest.java	(revision 12630)
@@ -23,4 +23,6 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -56,5 +58,6 @@
 
         // fix map view position
-        Main.map.mapView.zoomTo(new EastNorth(0, 0), 1);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.zoomTo(new EastNorth(0, 0), 1);
 
         Node n1 = new Node(new EastNorth(0, 0));
@@ -69,8 +72,8 @@
 
         try {
-            assertTrue(Main.map.selectDrawTool(false));
+            assertTrue(map.selectDrawTool(false));
 
-            Main.map.mapModeDraw.mouseReleased(new MouseEvent(
-                    Main.map,
+            map.mapModeDraw.mouseReleased(new MouseEvent(
+                    map,
                     MouseEvent.MOUSE_RELEASED,
                     2000,
Index: /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/ExtrudeActionTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/ExtrudeActionTest.java	(revision 12629)
+++ /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/ExtrudeActionTest.java	(revision 12630)
@@ -11,4 +11,6 @@
 import org.openstreetmap.josm.actions.mapmode.ExtrudeAction.Mode;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -37,8 +39,9 @@
             Main.getLayerManager().addLayer(layer);
             ExtrudeAction mapMode = new ExtrudeAction();
-            MapMode oldMapMode = Main.map.mapMode;
-            assertTrue(Main.map.selectMapMode(mapMode));
-            assertEquals(mapMode, Main.map.mapMode);
-            assertTrue(Main.map.selectMapMode(oldMapMode));
+            MapFrame map = MainApplication.getMap();
+            MapMode oldMapMode = map.mapMode;
+            assertTrue(map.selectMapMode(mapMode));
+            assertEquals(mapMode, map.mapMode);
+            assertTrue(map.selectMapMode(oldMapMode));
         } finally {
             Main.getLayerManager().removeLayer(layer);
Index: /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyActionTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyActionTest.java	(revision 12629)
+++ /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyActionTest.java	(revision 12630)
@@ -11,4 +11,6 @@
 import org.openstreetmap.josm.actions.mapmode.ImproveWayAccuracyAction.State;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -37,8 +39,9 @@
             Main.getLayerManager().addLayer(layer);
             ImproveWayAccuracyAction mapMode = new ImproveWayAccuracyAction();
-            MapMode oldMapMode = Main.map.mapMode;
-            assertTrue(Main.map.selectMapMode(mapMode));
-            assertEquals(mapMode, Main.map.mapMode);
-            assertTrue(Main.map.selectMapMode(oldMapMode));
+            MapFrame map = MainApplication.getMap();
+            MapMode oldMapMode = map.mapMode;
+            assertTrue(map.selectMapMode(mapMode));
+            assertEquals(mapMode, map.mapMode);
+            assertTrue(map.selectMapMode(oldMapMode));
         } finally {
             Main.getLayerManager().removeLayer(layer);
Index: /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/ParallelWayActionTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/ParallelWayActionTest.java	(revision 12629)
+++ /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/ParallelWayActionTest.java	(revision 12630)
@@ -12,4 +12,6 @@
 import org.openstreetmap.josm.actions.mapmode.ParallelWayAction.Modifier;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -37,9 +39,10 @@
         try {
             Main.getLayerManager().addLayer(layer);
-            ParallelWayAction mapMode = new ParallelWayAction(Main.map);
-            MapMode oldMapMode = Main.map.mapMode;
-            assertTrue(Main.map.selectMapMode(mapMode));
-            assertEquals(mapMode, Main.map.mapMode);
-            assertTrue(Main.map.selectMapMode(oldMapMode));
+            MapFrame map = MainApplication.getMap();
+            ParallelWayAction mapMode = new ParallelWayAction(map);
+            MapMode oldMapMode = map.mapMode;
+            assertTrue(map.selectMapMode(mapMode));
+            assertEquals(mapMode, map.mapMode);
+            assertTrue(map.selectMapMode(oldMapMode));
         } finally {
             Main.getLayerManager().removeLayer(layer);
Index: /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/PlayHeadDragModeTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/PlayHeadDragModeTest.java	(revision 12629)
+++ /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/PlayHeadDragModeTest.java	(revision 12630)
@@ -9,4 +9,6 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.layer.markerlayer.PlayHeadMarker;
@@ -36,8 +38,9 @@
             Main.getLayerManager().addLayer(layer);
             PlayHeadDragMode mapMode = new PlayHeadDragMode(PlayHeadMarker.create());
-            MapMode oldMapMode = Main.map.mapMode;
-            assertTrue(Main.map.selectMapMode(mapMode));
-            assertEquals(mapMode, Main.map.mapMode);
-            assertTrue(Main.map.selectMapMode(oldMapMode));
+            MapFrame map = MainApplication.getMap();
+            MapMode oldMapMode = map.mapMode;
+            assertTrue(map.selectMapMode(mapMode));
+            assertEquals(mapMode, map.mapMode);
+            assertTrue(map.selectMapMode(oldMapMode));
         } finally {
             Main.getLayerManager().removeLayer(layer);
Index: /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java	(revision 12629)
+++ /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java	(revision 12630)
@@ -22,4 +22,5 @@
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.MainLayerManager;
@@ -90,5 +91,6 @@
         Main.getLayerManager().addLayer(layer);
         try {
-            SelectAction action = new SelectActionMock(Main.map, dataSet, layer);
+            MapFrame map = MainApplication.getMap();
+            SelectAction action = new SelectActionMock(map, dataSet, layer);
             nodesMerged = false;
 
@@ -97,5 +99,5 @@
 
             MouseEvent event;
-            event = new MouseEvent(Main.map,
+            event = new MouseEvent(map,
                                    MouseEvent.MOUSE_PRESSED,
                                    0,
@@ -105,5 +107,5 @@
                                    false, MouseEvent.BUTTON1);
             action.mousePressed(event);
-            event = new MouseEvent(Main.map,
+            event = new MouseEvent(map,
                                    MouseEvent.MOUSE_DRAGGED,
                                    1000,
@@ -113,5 +115,5 @@
                                    false, MouseEvent.BUTTON1);
             action.mouseDragged(event);
-            event = new MouseEvent(Main.map,
+            event = new MouseEvent(map,
                                    MouseEvent.MOUSE_RELEASED,
                                    2000,
Index: /trunk/test/unit/org/openstreetmap/josm/gui/MapScalerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/MapScalerTest.java	(revision 12629)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/MapScalerTest.java	(revision 12630)
@@ -38,5 +38,5 @@
         Main.getLayerManager().addLayer(new OsmDataLayer(new DataSet(), "", null));
         assertEquals(Color.WHITE, MapScaler.getColor());
-        MapScaler ms = new MapScaler(Main.map.mapView);
+        MapScaler ms = new MapScaler(MainApplication.getMap().mapView);
         assertEquals("/MapView/Scaler", ms.helpTopic());
         ms.paint(TestUtils.newGraphics());
Index: /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/CommandStackDialogTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/CommandStackDialogTest.java	(revision 12629)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/CommandStackDialogTest.java	(revision 12630)
@@ -11,4 +11,6 @@
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -57,9 +59,10 @@
             assertFalse(Main.main.undoRedo.redoCommands.isEmpty());
 
+            MapFrame map = MainApplication.getMap();
             CommandStackDialog dlg = new CommandStackDialog();
-            Main.map.addToggleDialog(dlg);
+            map.addToggleDialog(dlg);
             dlg.unfurlDialog();
             assertTrue(dlg.isVisible());
-            Main.map.removeToggleDialog(dlg);
+            map.removeToggleDialog(dlg);
             dlg.hideDialog();
             assertFalse(dlg.isVisible());
Index: /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/ConflictDialogTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/ConflictDialogTest.java	(revision 12629)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/ConflictDialogTest.java	(revision 12630)
@@ -17,4 +17,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.ConflictDialog.ConflictPainter;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -57,5 +58,6 @@
     public void testConflictPainter() {
         Main.getLayerManager().addLayer(new OsmDataLayer(new DataSet(), "", null));
-        ConflictPainter cp = new ConflictPainter(Main.map.mapView, new BufferedImage(800, 600, BufferedImage.TYPE_3BYTE_BGR).createGraphics());
+        ConflictPainter cp = new ConflictPainter(MainApplication.getMap().mapView,
+                new BufferedImage(800, 600, BufferedImage.TYPE_3BYTE_BGR).createGraphics());
         Node n1 = new Node(1, 1);
         n1.setCoor(new LatLon(1, 1));
Index: /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/MapPaintDialogTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/MapPaintDialogTest.java	(revision 12629)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/MapPaintDialogTest.java	(revision 12630)
@@ -6,4 +6,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -29,5 +30,5 @@
     public void testInfoAction() {
         Main.getLayerManager().addLayer(new OsmDataLayer(new DataSet(), "", null));
-        Main.map.mapPaintDialog.new InfoAction().actionPerformed(null);
+        MainApplication.getMap().mapPaintDialog.new InfoAction().actionPerformed(null);
     }
 }
Index: /trunk/test/unit/org/openstreetmap/josm/gui/layer/GpxLayerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/layer/GpxLayerTest.java	(revision 12629)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/layer/GpxLayerTest.java	(revision 12630)
@@ -24,4 +24,5 @@
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.projection.Projections;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.io.GpxReaderTest;
@@ -211,5 +212,5 @@
             Main.getLayerManager().addLayer(layer);
             assertTrue(layer.getMenuEntries().length > 0);
-            layer.paint(TestUtils.newGraphics(), Main.map.mapView, layer.data.getMetaBounds());
+            layer.paint(TestUtils.newGraphics(), MainApplication.getMap().mapView, layer.data.getMetaBounds());
         } finally {
             Main.getLayerManager().removeLayer(layer);
Index: /trunk/test/unit/org/openstreetmap/josm/gui/layer/MarkerLayerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/layer/MarkerLayerTest.java	(revision 12629)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/layer/MarkerLayerTest.java	(revision 12630)
@@ -10,4 +10,6 @@
 import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -32,13 +34,14 @@
     @Test
     public void testPlayHeadMarker() {
+        MapFrame map = MainApplication.getMap();
         try {
             Main.getLayerManager().addLayer(new OsmDataLayer(new DataSet(), "", null));
             MarkerLayer layer = new MarkerLayer(new GpxData(), null, null, null);
-            assertNull(Main.map.mapView.playHeadMarker);
+            assertNull(map.mapView.playHeadMarker);
             Main.getLayerManager().addLayer(layer);
-            assertNotNull(Main.map.mapView.playHeadMarker);
+            assertNotNull(map.mapView.playHeadMarker);
             Main.getLayerManager().removeLayer(layer);
         } finally {
-            Main.map.mapView.playHeadMarker = null;
+            map.mapView.playHeadMarker = null;
         }
     }
Index: /trunk/test/unit/org/openstreetmap/josm/gui/layer/OsmDataLayerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/layer/OsmDataLayerTest.java	(revision 12629)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/layer/OsmDataLayerTest.java	(revision 12630)
@@ -22,4 +22,5 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 
 /**
@@ -136,5 +137,5 @@
             Main.getLayerManager().addLayer(layer);
             assertTrue(layer.getMenuEntries().length > 0);
-            layer.paint(TestUtils.newGraphics(), Main.map.mapView, new Bounds(LatLon.ZERO));
+            layer.paint(TestUtils.newGraphics(), MainApplication.getMap().mapView, new Bounds(LatLon.ZERO));
         } finally {
             Main.getLayerManager().removeLayer(layer);
Index: /trunk/test/unit/org/openstreetmap/josm/io/NoteImporterTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/io/NoteImporterTest.java	(revision 12629)
+++ /trunk/test/unit/org/openstreetmap/josm/io/NoteImporterTest.java	(revision 12630)
@@ -11,4 +11,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -30,5 +31,5 @@
     public void testTicket12531() {
         Main.getLayerManager().resetState();
-        assertNull(Main.map);
+        assertNull(MainApplication.getMap());
         assertTrue(new NoteImporter().importDataHandleExceptions(
                 new File(TestUtils.getRegressionDataFile(12531, "notes.osn")), null));
