Index: trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- trunk/src/org/openstreetmap/josm/Main.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/Main.java	(revision 12636)
@@ -37,5 +37,4 @@
 
 import org.openstreetmap.josm.actions.JosmAction;
-import org.openstreetmap.josm.actions.mapmode.DrawAction;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.Preferences;
@@ -52,5 +51,4 @@
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapFrameListener;
-import org.openstreetmap.josm.gui.io.SaveLayersDialog;
 import org.openstreetmap.josm.gui.layer.MainLayerManager;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer.CommandQueueListener;
@@ -59,6 +57,4 @@
 import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
 import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
-import org.openstreetmap.josm.gui.util.GuiHelper;
-import org.openstreetmap.josm.gui.util.RedirectInputMap;
 import org.openstreetmap.josm.io.FileWatcher;
 import org.openstreetmap.josm.io.OnlineResource;
@@ -145,10 +141,4 @@
 
     /**
-     * Provides access to the layers displayed in the main view.
-     * @since 10271
-     */
-    private static final MainLayerManager layerManager = new MainLayerManager();
-
-    /**
      * The toolbar preference control to register new actions.
      */
@@ -650,7 +640,9 @@
      * @return The layer manager. The value returned will never change.
      * @since 10279
-     */
+     * @deprecated use {@link MainApplication#getLayerManager} instead
+     */
+    @Deprecated
     public static MainLayerManager getLayerManager() {
-        return layerManager;
+        return MainApplication.getLayerManager();
     }
 
@@ -658,18 +650,9 @@
      * Replies the current selected primitives, from a end-user point of view.
      * It is not always technically the same collection of primitives than {@link DataSet#getSelected()}.
-     * Indeed, if the user is currently in drawing mode, only the way currently being drawn is returned,
-     * see {@link DrawAction#getInProgressSelection()}.
-     *
      * @return The current selected primitives, from a end-user point of view. Can be {@code null}.
      * @since 6546
      */
     public Collection<OsmPrimitive> getInProgressSelection() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) return null;
-        return ds.getSelected();
-    }
-
-    public static void redirectToMainContentPane(JComponent source) {
-        RedirectInputMap.redirect(source, contentPanePrivate);
+        return Collections.emptyList();
     }
 
@@ -826,26 +809,18 @@
     /**
      * Closes JOSM and optionally terminates the Java Virtual Machine (JVM).
-     * If there are some unsaved data layers, asks first for user confirmation.
      * @param exit If {@code true}, the JVM is terminated by running {@link System#exit} with a given return code.
      * @param exitCode The return code
-     * @param reason the reason for exiting
-     * @return {@code true} if JOSM has been closed, {@code false} if the user has cancelled the operation.
-     * @since 11093 (3378 with a different function signature)
-     */
-    public static boolean exitJosm(boolean exit, int exitCode, SaveLayersDialog.Reason reason) {
-        final boolean proceed = Boolean.TRUE.equals(GuiHelper.runInEDTAndWaitAndReturn(() ->
-                SaveLayersDialog.saveUnsavedModifications(getLayerManager().getLayers(),
-                        reason != null ? reason : SaveLayersDialog.Reason.EXIT)));
-        if (proceed) {
-            if (Main.main != null) {
-                Main.main.shutdown();
-            }
-
-            if (exit) {
-                System.exit(exitCode);
-            }
-            return true;
-        }
-        return false;
+     * @return {@code true}
+     * @since 12636
+     */
+    public static boolean exitJosm(boolean exit, int exitCode) {
+        if (Main.main != null) {
+            Main.main.shutdown();
+        }
+
+        if (exit) {
+            System.exit(exitCode);
+        }
+        return true;
     }
 
@@ -858,6 +833,4 @@
             JCSCacheManager.shutdown();
         }
-        // Remove all layers because somebody may rely on layerRemoved events (like AutosaveTask)
-        getLayerManager().resetState();
         try {
             pref.saveDefaults();
Index: trunk/src/org/openstreetmap/josm/actions/AbstractPasteAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AbstractPasteAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/AbstractPasteAction.java	(revision 12636)
@@ -9,5 +9,4 @@
 import java.awt.event.ActionEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.gui.MainApplication;
@@ -92,5 +91,5 @@
 
     protected void doPaste(ActionEvent e, Transferable contents) {
-        transferHandler.pasteOn(Main.getLayerManager().getEditLayer(), computePastePosition(e), contents);
+        transferHandler.pasteOn(getLayerManager().getEditLayer(), computePastePosition(e), contents);
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java	(revision 12636)
@@ -139,5 +139,5 @@
             final ImageryInfo infoToAdd = convertImagery(info);
             if (infoToAdd != null) {
-                Main.getLayerManager().addLayer(ImageryLayer.create(infoToAdd));
+                getLayerManager().addLayer(ImageryLayer.create(infoToAdd));
                 AlignImageryPanel.addNagPanelIfNeeded(infoToAdd);
             }
Index: trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 12636)
@@ -71,10 +71,9 @@
     /**
      * Zooms the current map view to the currently selected primitives.
-     * Does nothing if there either isn't a current map view or if there isn't a current data
-     * layer.
+     * Does nothing if there either isn't a current map view or if there isn't a current data layer.
      *
      */
     public static void zoomToSelection() {
-        DataSet dataSet = Main.getLayerManager().getEditDataSet();
+        DataSet dataSet = MainApplication.getLayerManager().getEditDataSet();
         if (dataSet == null) {
             return;
@@ -225,5 +224,5 @@
      */
     protected Layer getFirstSelectedLayer() {
-        if (Main.getLayerManager().getActiveLayer() == null) {
+        if (getLayerManager().getActiveLayer() == null) {
             return null;
         }
@@ -268,5 +267,5 @@
 
     private static BoundingXYVisitor modeData(BoundingXYVisitor v) {
-        for (Layer l : Main.getLayerManager().getLayers()) {
+        for (Layer l : MainApplication.getLayerManager().getLayers()) {
             l.visitBoundingBox(v);
         }
@@ -337,5 +336,5 @@
                 } else {
                     lastZoomArea = -1;
-                    Area sourceArea = Main.getLayerManager().getEditDataSet().getDataSourceArea();
+                    Area sourceArea = getLayerManager().getEditDataSet().getDataSourceArea();
                     if (sourceArea != null) {
                         v.visit(new Bounds(sourceArea.getBounds2D()));
Index: trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(revision 12636)
@@ -117,9 +117,10 @@
                             if (Main.pref.getBoolean("multipoly.show-relation-editor", false)) {
                                 //Open relation edit window, if set up in preferences
-                                RelationEditor editor = RelationEditor.getEditor(Main.getLayerManager().getEditLayer(), relation, null);
+                                RelationEditor editor = RelationEditor.getEditor(
+                                        MainApplication.getLayerManager().getEditLayer(), relation, null);
                                 editor.setModal(true);
                                 editor.setVisible(true);
                             } else {
-                                Main.getLayerManager().getEditLayer().setRecentRelation(relation);
+                                MainApplication.getLayerManager().getEditLayer().setRecentRelation(relation);
                             }
                     });
@@ -130,5 +131,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        DataSet dataSet = Main.getLayerManager().getEditDataSet();
+        DataSet dataSet = getLayerManager().getEditDataSet();
         if (dataSet == null) {
             new Notification(
@@ -162,9 +163,9 @@
             if (!multipolygonRelation.isNew() && multipolygonRelation.isIncomplete()) {
                 MainApplication.worker.submit(
-                        new DownloadRelationTask(Collections.singleton(multipolygonRelation), Main.getLayerManager().getEditLayer()));
+                        new DownloadRelationTask(Collections.singleton(multipolygonRelation), getLayerManager().getEditLayer()));
             } else if (multipolygonRelation.hasIncompleteMembers()) {
                 MainApplication.worker.submit(new DownloadRelationMemberTask(multipolygonRelation,
                         DownloadSelectedIncompleteMembersAction.buildSetOfIncompleteMembers(Collections.singleton(multipolygonRelation)),
-                        Main.getLayerManager().getEditLayer()));
+                        getLayerManager().getEditLayer()));
             }
         }
Index: trunk/src/org/openstreetmap/josm/actions/DeleteLayerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DeleteLayerAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/DeleteLayerAction.java	(revision 12636)
@@ -9,5 +9,4 @@
 import java.util.Collections;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.io.SaveLayersDialog;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -31,5 +30,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        Layer activeLayer = Main.getLayerManager().getActiveLayer();
+        Layer activeLayer = getLayerManager().getActiveLayer();
         if (activeLayer == null) {
             return;
@@ -38,10 +37,10 @@
             return;
         }
-        Main.getLayerManager().removeLayer(activeLayer);
+        getLayerManager().removeLayer(activeLayer);
     }
 
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.getLayerManager().getActiveLayer() != null);
+        setEnabled(getLayerManager().getActiveLayer() != null);
     }
 }
Index: trunk/src/org/openstreetmap/josm/actions/DownloadNotesInViewAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DownloadNotesInViewAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/DownloadNotesInViewAction.java	(revision 12636)
@@ -53,5 +53,5 @@
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.getLayerManager().getActiveLayer() != null
+        setEnabled(getLayerManager().getActiveLayer() != null
                 && !Main.isOffline(OnlineResource.OSM_API));
     }
Index: trunk/src/org/openstreetmap/josm/actions/DownloadOsmInViewAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DownloadOsmInViewAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/DownloadOsmInViewAction.java	(revision 12636)
@@ -41,5 +41,5 @@
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.getLayerManager().getActiveLayer() != null
+        setEnabled(getLayerManager().getActiveLayer() != null
                 && !Main.isOffline(OnlineResource.OSM_API));
     }
Index: trunk/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java	(revision 12636)
@@ -9,5 +9,4 @@
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.gui.MainApplication;
@@ -59,5 +58,5 @@
                 final List<PrimitiveId> downloaded = task.getDownloadedId();
                 if (downloaded != null) {
-                    GuiHelper.runInEDT(() -> Main.getLayerManager().getEditDataSet().setSelected(downloaded));
+                    GuiHelper.runInEDT(() -> MainApplication.getLayerManager().getEditDataSet().setSelected(downloaded));
                 }
         });
Index: trunk/src/org/openstreetmap/josm/actions/DownloadReferrersAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DownloadReferrersAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/DownloadReferrersAction.java	(revision 12636)
@@ -9,5 +9,4 @@
 import java.util.Collection;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadReferrersTask;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -53,5 +52,5 @@
         if (!isEnabled())
             return;
-        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer layer = getLayerManager().getEditLayer();
         if (layer == null)
             return;
Index: trunk/src/org/openstreetmap/josm/actions/ExitAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ExitAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/ExitAction.java	(revision 12636)
@@ -8,5 +8,5 @@
 import java.awt.event.KeyEvent;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -28,5 +28,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        Main.exitJosm(true, 0, null);
+        MainApplication.exitJosm(true, 0, null);
     }
 }
Index: trunk/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java	(revision 12636)
@@ -16,5 +16,5 @@
 import javax.swing.filechooser.FileFilter;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
 import org.openstreetmap.josm.io.AllFormatsImporter;
@@ -112,5 +112,5 @@
                 FileExporter exporter = exporterClass.getConstructor().newInstance();
                 exporters.add(exporter);
-                Main.getLayerManager().addAndFireActiveLayerChangeListener(exporter);
+                MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(exporter);
             } catch (ReflectiveOperationException e) {
                 Logging.debug(e);
Index: trunk/src/org/openstreetmap/josm/actions/FollowLineAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/FollowLineAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/FollowLineAction.java	(revision 12636)
@@ -62,5 +62,5 @@
     @Override
     public void actionPerformed(ActionEvent evt) {
-        OsmDataLayer osmLayer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer osmLayer = getLayerManager().getEditLayer();
         if (osmLayer == null)
             return;
Index: trunk/src/org/openstreetmap/josm/actions/GpxExportAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/GpxExportAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/GpxExportAction.java	(revision 12636)
@@ -44,5 +44,5 @@
      */
     protected Layer getLayer() {
-        Layer layer = Main.getLayerManager().getActiveLayer();
+        Layer layer = getLayerManager().getActiveLayer();
         return (layer instanceof GpxLayer || layer instanceof OsmDataLayer) ? layer : null;
     }
Index: trunk/src/org/openstreetmap/josm/actions/InfoAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/InfoAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/InfoAction.java	(revision 12636)
@@ -9,5 +9,4 @@
 import java.util.Collection;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -37,5 +36,5 @@
         DataSet set = getLayerManager().getEditDataSet();
         if (set != null) {
-            new InspectPrimitiveDialog(set.getAllSelected(), Main.getLayerManager().getEditLayer()).showDialog();
+            new InspectPrimitiveDialog(set.getAllSelected(), getLayerManager().getEditLayer()).showDialog();
         }
     }
Index: trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 12636)
@@ -470,5 +470,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        join(Main.getLayerManager().getEditDataSet().getSelectedWays());
+        join(getLayerManager().getEditDataSet().getSelectedWays());
     }
 
@@ -692,5 +692,5 @@
         // Delete the discarded inner ways
         if (!discardedWays.isEmpty()) {
-            Command deleteCmd = DeleteCommand.delete(Main.getLayerManager().getEditLayer(), discardedWays, true);
+            Command deleteCmd = DeleteCommand.delete(getLayerManager().getEditLayer(), discardedWays, true);
             if (deleteCmd != null) {
                 cmds.add(deleteCmd);
@@ -1459,5 +1459,5 @@
     private RelationRole addOwnMultipolygonRelation(Collection<Way> inner) {
         if (inner.isEmpty()) return null;
-        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer layer = getLayerManager().getEditLayer();
         // Create new multipolygon relation and add all inner ways to it
         Relation newRel = new Relation();
@@ -1537,5 +1537,5 @@
         }
 
-        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer layer = getLayerManager().getEditLayer();
         Relation newRel;
         switch (multiouters.size()) {
Index: trunk/src/org/openstreetmap/josm/actions/JosmAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/JosmAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/JosmAction.java	(revision 12636)
@@ -270,5 +270,5 @@
      */
     public MainLayerManager getLayerManager() {
-        return Main.getLayerManager();
+        return MainApplication.getLayerManager();
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java	(revision 12636)
@@ -25,4 +25,5 @@
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.layer.WMSLayer;
@@ -246,10 +247,10 @@
             }
         }
-        Main.getLayerManager().addLayer(new WMSLayer(info));
+        MainApplication.getLayerManager().addLayer(new WMSLayer(info));
     }
 
     @Override
     protected void updateEnabledState() {
-        setEnabled(!Main.getLayerManager().getLayers().isEmpty());
+        setEnabled(!getLayerManager().getLayers().isEmpty());
     }
 }
Index: trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java	(revision 12636)
@@ -12,5 +12,4 @@
 import java.util.concurrent.Future;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
@@ -65,10 +64,10 @@
                         }
                         targetLayer.mergeFrom(sourceLayer);
-                        GuiHelper.runInEDTAndWait(() -> Main.getLayerManager().removeLayer(sourceLayer));
+                        GuiHelper.runInEDTAndWait(() -> getLayerManager().removeLayer(sourceLayer));
                         layerMerged = true;
                     }
                 }
                 if (layerMerged) {
-                    Main.getLayerManager().setActiveLayer(targetLayer);
+                    getLayerManager().setActiveLayer(targetLayer);
                     Logging.info(tr("{0} completed in {1}", actionName, Utils.getDurationString(System.currentTimeMillis() - start)));
                 }
@@ -131,5 +130,5 @@
      */
     protected Layer getSourceLayer() {
-        return Main.getLayerManager().getActiveLayer();
+        return getLayerManager().getActiveLayer();
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 12636)
@@ -93,8 +93,8 @@
         if (targetNode != null) {
             Node targetLocationNode = selectTargetLocationNode(selectedNodes);
-            Command cmd = mergeNodes(Main.getLayerManager().getEditLayer(), selectedNodes, targetNode, targetLocationNode);
+            Command cmd = mergeNodes(getLayerManager().getEditLayer(), selectedNodes, targetNode, targetLocationNode);
             if (cmd != null) {
                 Main.main.undoRedo.add(cmd);
-                Main.getLayerManager().getEditLayer().data.setSelected(targetNode);
+                getLayerManager().getEditLayer().data.setSelected(targetNode);
             }
         }
Index: trunk/src/org/openstreetmap/josm/actions/NewAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/NewAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/NewAction.java	(revision 12636)
@@ -2,11 +2,10 @@
 package org.openstreetmap.josm.actions;
 
+import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 import static org.openstreetmap.josm.tools.I18n.tr;
-import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -30,5 +29,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        Main.getLayerManager().addLayer(new OsmDataLayer(new DataSet(), OsmDataLayer.createNewName(), null));
+        getLayerManager().addLayer(new OsmDataLayer(new DataSet(), OsmDataLayer.createNewName(), null));
     }
 }
Index: trunk/src/org/openstreetmap/josm/actions/PurgeAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/PurgeAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/PurgeAction.java	(revision 12636)
@@ -139,5 +139,5 @@
      */
     public PurgeCommand getPurgeCommand(Collection<OsmPrimitive> sel) {
-        layer = Main.getLayerManager().getEditLayer();
+        layer = getLayerManager().getEditLayer();
 
         toPurge = new HashSet<>(sel);
Index: trunk/src/org/openstreetmap/josm/actions/RestartAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/RestartAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/RestartAction.java	(revision 12636)
@@ -83,8 +83,8 @@
         String scriptRestart = System.getProperty("josm.restart");
         if ("true".equals(scriptRestart)) {
-            Main.exitJosm(true, 9, SaveLayersDialog.Reason.RESTART);
-        }
-
-        if (isRestartSupported() && !Main.exitJosm(false, 0, SaveLayersDialog.Reason.RESTART)) return;
+            MainApplication.exitJosm(true, 9, SaveLayersDialog.Reason.RESTART);
+        }
+
+        if (isRestartSupported() && !MainApplication.exitJosm(false, 0, SaveLayersDialog.Reason.RESTART)) return;
         final List<String> cmd;
         // special handling for OSX .app package
Index: trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 12636)
@@ -53,5 +53,5 @@
      */
     public boolean doSave() {
-        Layer layer = Main.getLayerManager().getActiveLayer();
+        Layer layer = getLayerManager().getActiveLayer();
         if (layer != null && layer.isSavable()) {
             return doSave(layer);
@@ -133,5 +133,5 @@
     @Override
     protected void updateEnabledState() {
-        Layer activeLayer = Main.getLayerManager().getActiveLayer();
+        Layer activeLayer = getLayerManager().getActiveLayer();
         setEnabled(activeLayer != null && activeLayer.isSavable());
     }
Index: trunk/src/org/openstreetmap/josm/actions/SelectByInternalPointAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SelectByInternalPointAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/SelectByInternalPointAction.java	(revision 12636)
@@ -8,5 +8,4 @@
 import java.util.TreeMap;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.BBox;
@@ -39,5 +38,5 @@
      */
     public static Collection<OsmPrimitive> getSurroundingObjects(EastNorth internalPoint) {
-        return getSurroundingObjects(Main.getLayerManager().getEditDataSet(), internalPoint, false);
+        return getSurroundingObjects(MainApplication.getLayerManager().getEditDataSet(), internalPoint, false);
     }
 
@@ -104,5 +103,5 @@
     public static void performSelection(EastNorth internalPoint, boolean doAdd, boolean doRemove) {
         final Collection<OsmPrimitive> surroundingObjects = getSurroundingObjects(internalPoint);
-        final DataSet ds = Main.getLayerManager().getEditDataSet();
+        final DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         if (surroundingObjects.isEmpty()) {
             return;
Index: trunk/src/org/openstreetmap/josm/actions/SelectNonBranchingWaySequencesAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SelectNonBranchingWaySequencesAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/SelectNonBranchingWaySequencesAction.java	(revision 12636)
@@ -2,12 +2,11 @@
 package org.openstreetmap.josm.actions;
 
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.data.osm.DataSet;
-import org.openstreetmap.josm.tools.Shortcut;
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 
-import static org.openstreetmap.josm.tools.I18n.tr;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -20,5 +19,4 @@
     /**
      * Creates a new {@link SelectNonBranchingWaySequencesAction}
-     *
      */
     public SelectNonBranchingWaySequencesAction() {
@@ -32,5 +30,5 @@
     @Override
     public void actionPerformed(ActionEvent ev) {
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = getLayerManager().getEditDataSet();
         SelectNonBranchingWaySequences ws = new SelectNonBranchingWaySequences(ds.getSelectedWays());
         ws.extend(ds);
@@ -39,10 +37,9 @@
     /**
      * Update the enabled state of the action when something in
-     * the JOSM state changes, i.e. when a layer is removed or
-     * added.
+     * the JOSM state changes, i.e. when a layer is removed or added.
      */
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.getLayerManager().getEditDataSet() != null);
+        setEnabled(getLayerManager().getEditDataSet() != null);
     }
 }
Index: trunk/src/org/openstreetmap/josm/actions/SessionLoadAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SessionLoadAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/SessionLoadAction.java	(revision 12636)
@@ -138,8 +138,8 @@
                     if (canceled)
                         return;
-                    Main.getLayerManager().addLayer(l);
+                    MainApplication.getLayerManager().addLayer(l);
                 }
                 if (active != null) {
-                    Main.getLayerManager().setActiveLayer(active);
+                    MainApplication.getLayerManager().setActiveLayer(active);
                 }
                 if (noMap && viewport != null) {
Index: trunk/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java	(revision 12636)
@@ -159,5 +159,5 @@
 
         int active = -1;
-        Layer activeLayer = Main.getLayerManager().getActiveLayer();
+        Layer activeLayer = getLayerManager().getActiveLayer();
         if (activeLayer != null) {
             active = layersOut.indexOf(activeLayer);
@@ -203,5 +203,5 @@
          */
         public final void initialize() {
-            layers = new ArrayList<>(Main.getLayerManager().getLayers());
+            layers = new ArrayList<>(getLayerManager().getLayers());
             exporters = new HashMap<>();
             dependencies = new MultiMap<>();
Index: trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java	(revision 12636)
@@ -177,5 +177,5 @@
         }
         if (Main.main != null) {
-            DataSet dataset = Main.getLayerManager().getEditDataSet();
+            DataSet dataset = MainApplication.getLayerManager().getEditDataSet();
             if (dataset != null) {
                 String result = DatasetConsistencyTest.runTests(dataset);
Index: trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 12636)
@@ -294,9 +294,9 @@
             toggleSaveState(); // necessary since #showDialog() does not handle it due to the non-modal dialog
             if (getValue() == 1) {
-                SplitWayResult result = doSplitWay(Main.getLayerManager().getEditLayer(),
+                SplitWayResult result = doSplitWay(MainApplication.getLayerManager().getEditLayer(),
                         selectedWay, list.getSelectedValue(), newWays, selection);
                 Main.main.undoRedo.add(result.getCommand());
                 if (!result.getNewSelection().isEmpty()) {
-                    Main.getLayerManager().getEditDataSet().setSelected(result.getNewSelection());
+                    MainApplication.getLayerManager().getEditDataSet().setSelected(result.getNewSelection());
                 }
             }
Index: trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java	(revision 12636)
@@ -43,8 +43,8 @@
     public static void handlePrimitiveGoneException(long id, OsmPrimitiveType type) {
         MultiFetchServerObjectReader reader = MultiFetchServerObjectReader.create();
-        reader.append(Main.getLayerManager().getEditDataSet(), id, type);
+        reader.append(MainApplication.getLayerManager().getEditDataSet(), id, type);
         try {
             DataSet ds = reader.parseOsm(NullProgressMonitor.INSTANCE);
-            Main.getLayerManager().getEditLayer().mergeFrom(ds);
+            MainApplication.getLayerManager().getEditLayer().mergeFrom(ds);
         } catch (OsmTransferException e) {
             ExceptionDialogUtil.explainException(e);
@@ -60,5 +60,5 @@
      */
     public static void updatePrimitives(final Collection<OsmPrimitive> selection) {
-        MainApplication.worker.submit(new UpdatePrimitivesTask(Main.getLayerManager().getEditLayer(), selection));
+        MainApplication.worker.submit(new UpdatePrimitivesTask(MainApplication.getLayerManager().getEditLayer(), selection));
     }
 
@@ -75,5 +75,5 @@
         ensureParameterNotNull(id, "id");
         updatePrimitives(Collections.<OsmPrimitive>singleton(Optional.ofNullable(Optional.ofNullable(
-                Main.getLayerManager().getEditLayer()).orElseThrow(
+                MainApplication.getLayerManager().getEditLayer()).orElseThrow(
                         () -> new IllegalStateException(tr("No current dataset found")))
                 .data.getPrimitiveById(id)).orElseThrow(
Index: trunk/src/org/openstreetmap/josm/actions/UploadAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 12636)
@@ -269,6 +269,6 @@
             return;
         }
-        APIDataSet apiData = new APIDataSet(Main.getLayerManager().getEditDataSet());
-        uploadData(Main.getLayerManager().getEditLayer(), apiData);
+        APIDataSet apiData = new APIDataSet(getLayerManager().getEditDataSet());
+        uploadData(getLayerManager().getEditLayer(), apiData);
     }
 }
Index: trunk/src/org/openstreetmap/josm/actions/UploadNotesAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UploadNotesAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/UploadNotesAction.java	(revision 12636)
@@ -7,5 +7,4 @@
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.upload.UploadNotesTask;
 import org.openstreetmap.josm.data.osm.NoteData;
@@ -32,5 +31,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        List<NoteLayer> noteLayers = Main.getLayerManager().getLayersOfType(NoteLayer.class);
+        List<NoteLayer> noteLayers = getLayerManager().getLayersOfType(NoteLayer.class);
         NoteLayer layer;
         if (!noteLayers.isEmpty()) {
Index: trunk/src/org/openstreetmap/josm/actions/ValidateAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ValidateAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/ValidateAction.java	(revision 12636)
@@ -12,5 +12,4 @@
 import java.util.Optional;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.validation.OsmValidator;
@@ -77,7 +76,7 @@
         Collection<OsmPrimitive> selection;
         if (getSelectedItems) {
-            selection = Main.getLayerManager().getEditDataSet().getAllSelected();
+            selection = getLayerManager().getEditDataSet().getAllSelected();
             if (selection.isEmpty()) {
-                selection = Main.getLayerManager().getEditDataSet().allNonDeletedPrimitives();
+                selection = getLayerManager().getEditDataSet().allNonDeletedPrimitives();
                 lastSelection = null;
             } else {
@@ -88,5 +87,5 @@
         } else {
             selection = Optional.ofNullable(lastSelection).orElseGet(
-                    () -> Main.getLayerManager().getEditDataSet().allNonDeletedPrimitives());
+                    () -> getLayerManager().getEditDataSet().allNonDeletedPrimitives());
         }
 
@@ -147,5 +146,5 @@
                 map.validatorDialog.unfurlDialog();
                 //FIXME: nicer way to find / invalidate the corresponding error layer
-                Main.getLayerManager().getLayersOfType(ValidatorLayer.class).forEach(ValidatorLayer::invalidate);
+                MainApplication.getLayerManager().getLayersOfType(ValidatorLayer.class).forEach(ValidatorLayer::invalidate);
             });
         }
Index: trunk/src/org/openstreetmap/josm/actions/ViewportFollowToggleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ViewportFollowToggleAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/ViewportFollowToggleAction.java	(revision 12636)
@@ -8,5 +8,4 @@
 import java.awt.event.KeyEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.mapmode.DrawAction;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -43,5 +42,5 @@
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.getLayerManager().getEditDataSet() != null);
+        setEnabled(getLayerManager().getEditDataSet() != null);
     }
 }
Index: trunk/src/org/openstreetmap/josm/actions/WireframeToggleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/WireframeToggleAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/WireframeToggleAction.java	(revision 12636)
@@ -38,5 +38,5 @@
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.getLayerManager().getEditLayer() != null);
+        setEnabled(getLayerManager().getEditLayer() != null);
     }
 
@@ -51,5 +51,5 @@
 
         notifySelectedState();
-        Main.getLayerManager().getLayersOfType(OsmDataLayer.class).forEach(OsmDataLayer::invalidate);
+        getLayerManager().getLayersOfType(OsmDataLayer.class).forEach(OsmDataLayer::invalidate);
     }
 }
Index: trunk/src/org/openstreetmap/josm/actions/ZoomInAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ZoomInAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/ZoomInAction.java	(revision 12636)
@@ -53,5 +53,5 @@
     @Override
     protected void updateEnabledState() {
-        setEnabled(!Main.getLayerManager().getLayers().isEmpty());
+        setEnabled(!getLayerManager().getLayers().isEmpty());
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/ZoomOutAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ZoomOutAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/ZoomOutAction.java	(revision 12636)
@@ -39,5 +39,5 @@
     @Override
     protected void updateEnabledState() {
-        setEnabled(!Main.getLayerManager().getLayers().isEmpty());
+        setEnabled(!getLayerManager().getLayers().isEmpty());
     }
 }
Index: trunk/src/org/openstreetmap/josm/actions/ZoomToAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ZoomToAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/ZoomToAction.java	(revision 12636)
@@ -12,4 +12,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.conflict.pair.nodes.NodeListTable;
 import org.openstreetmap.josm.gui.conflict.pair.relation.RelationMemberTable;
@@ -104,5 +105,5 @@
 
     protected final void updateEnabledState() {
-        if (Main.main == null || Main.getLayerManager().getEditLayer() != this.table.getLayer()) {
+        if (Main.main == null || MainApplication.getLayerManager().getEditLayer() != this.table.getLayer()) {
             setEnabled(false);
             putValue(SHORT_DESCRIPTION, descriptionInactiveLayer);
Index: trunk/src/org/openstreetmap/josm/actions/audio/AbstractAudioAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/audio/AbstractAudioAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/audio/AbstractAudioAction.java	(revision 12636)
@@ -2,6 +2,6 @@
 package org.openstreetmap.josm.actions.audio;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.markerlayer.AudioMarker;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
@@ -33,5 +33,5 @@
      */
     protected static boolean isAudioMarkerPresent() {
-        return Main.getLayerManager().getLayersOfType(MarkerLayer.class).stream()
+        return MainApplication.getLayerManager().getLayersOfType(MarkerLayer.class).stream()
                 .flatMap(ml -> ml.data.stream())
                 .anyMatch(m -> m instanceof AudioMarker);
Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java	(revision 12636)
@@ -167,5 +167,5 @@
             if (layer == null) return null;
             if (newLayer || mergeLayer == null) {
-                Main.getLayerManager().addLayer(layer, zoomAfterDownload);
+                MainApplication.getLayerManager().addLayer(layer, zoomAfterDownload);
                 return layer;
             } else {
@@ -182,8 +182,8 @@
         private GpxLayer findGpxMergeLayer() {
             boolean merge = Main.pref.getBoolean("download.gps.mergeWithLocal", false);
-            Layer active = Main.getLayerManager().getActiveLayer();
+            Layer active = MainApplication.getLayerManager().getActiveLayer();
             if (active instanceof GpxLayer && (merge || ((GpxLayer) active).data.fromServer))
                 return (GpxLayer) active;
-            for (GpxLayer l : Main.getLayerManager().getLayersOfType(GpxLayer.class)) {
+            for (GpxLayer l : MainApplication.getLayerManager().getLayersOfType(GpxLayer.class)) {
                 if (merge || l.data.fromServer)
                     return l;
@@ -193,5 +193,5 @@
 
         private MarkerLayer findMarkerMergeLayer(GpxLayer fromLayer) {
-            for (MarkerLayer l : Main.getLayerManager().getLayersOfType(MarkerLayer.class)) {
+            for (MarkerLayer l : MainApplication.getLayerManager().getLayersOfType(MarkerLayer.class)) {
                 if (fromLayer != null && l.fromLayer == fromLayer)
                     return l;
Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java	(revision 12636)
@@ -131,5 +131,5 @@
 
             noteLayer = new NoteLayer(notesData, tr("Notes"));
-            List<NoteLayer> noteLayers = Main.getLayerManager().getLayersOfType(NoteLayer.class);
+            List<NoteLayer> noteLayers = MainApplication.getLayerManager().getLayersOfType(NoteLayer.class);
             if (!noteLayers.isEmpty()) {
                 noteLayers.get(0).getNoteData().addNotes(notesData);
@@ -139,5 +139,5 @@
                 }
             } else {
-                Main.getLayerManager().addLayer(noteLayer, zoomAfterDownload);
+                MainApplication.getLayerManager().addLayer(noteLayer, zoomAfterDownload);
             }
         }
Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 12636)
@@ -16,5 +16,4 @@
 import java.util.regex.Pattern;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.DataSource;
@@ -231,13 +230,13 @@
         protected OsmDataLayer getEditLayer() {
             if (!MainApplication.isDisplayingMapView()) return null;
-            return Main.getLayerManager().getEditLayer();
+            return MainApplication.getLayerManager().getEditLayer();
         }
 
         protected int getNumDataLayers() {
-            return Main.getLayerManager().getLayersOfType(OsmDataLayer.class).size();
+            return MainApplication.getLayerManager().getLayersOfType(OsmDataLayer.class).size();
         }
 
         protected OsmDataLayer getFirstDataLayer() {
-            return Utils.find(Main.getLayerManager().getLayers(), OsmDataLayer.class);
+            return Utils.find(MainApplication.getLayerManager().getLayers(), OsmDataLayer.class);
         }
 
@@ -270,5 +269,5 @@
                 //
                 final OsmDataLayer layer = createNewLayer(newLayerName);
-                Main.getLayerManager().addLayer(layer, zoomAfterDownload);
+                MainApplication.getLayerManager().addLayer(layer, zoomAfterDownload);
                 return layer;
             }
Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java	(revision 12636)
@@ -73,6 +73,6 @@
         if (newLayer) {
             Layer l = new OsmDataLayer(new DataSet(), OsmDataLayer.createNewName(), null);
-            Main.getLayerManager().addLayer(l);
-            Main.getLayerManager().setActiveLayer(l);
+            MainApplication.getLayerManager().addLayer(l);
+            MainApplication.getLayerManager().setActiveLayer(l);
         }
 
@@ -288,5 +288,5 @@
                 }
             }
-            final OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+            final OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
             if (editLayer != null && osmData) {
                 final Set<OsmPrimitive> myPrimitives = getCompletePrimitives(editLayer.data);
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 12636)
@@ -141,5 +141,5 @@
      */
     public void doActionPerformed(ActionEvent e) {
-        MainLayerManager lm = Main.getLayerManager();
+        MainLayerManager lm = MainApplication.getLayerManager();
         OsmDataLayer editLayer = lm.getEditLayer();
         if (editLayer == null) {
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 12636)
@@ -951,5 +951,5 @@
     @Override
     public void mouseExited(MouseEvent e) {
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         if (editLayer == null)
             return;
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 12636)
@@ -722,5 +722,5 @@
         Node targetNode = MergeNodesAction.selectTargetNode(changedNodes);
         Node locNode = MergeNodesAction.selectTargetLocationNode(changedNodes);
-        Command mergeCmd = MergeNodesAction.mergeNodes(Main.getLayerManager().getEditLayer(), changedNodes, targetNode, locNode);
+        Command mergeCmd = MergeNodesAction.mergeNodes(MainApplication.getLayerManager().getEditLayer(), changedNodes, targetNode, locNode);
         if (mergeCmd != null) {
             Main.main.undoRedo.add(mergeCmd);
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 12636)
@@ -920,5 +920,5 @@
         Collection<Node> nodesToMerge = new LinkedList<>(selNodes);
         nodesToMerge.add(target);
-        mergeNodes(Main.getLayerManager().getEditLayer(), nodesToMerge, target);
+        mergeNodes(MainApplication.getLayerManager().getEditLayer(), nodesToMerge, target);
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java	(revision 12636)
@@ -17,4 +17,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.Notification;
 import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor;
@@ -39,5 +40,5 @@
         Collection<Command> cmds = new LinkedList<>();
         for (Relation orig : relations) {
-            Command c = GenericRelationEditor.addPrimitivesToRelation(orig, Main.getLayerManager().getEditDataSet().getSelected());
+            Command c = GenericRelationEditor.addPrimitivesToRelation(orig, MainApplication.getLayerManager().getEditDataSet().getSelected());
             if (c != null) {
                 cmds.add(c);
Index: trunk/src/org/openstreetmap/josm/actions/relation/DeleteRelationsAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/relation/DeleteRelationsAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/relation/DeleteRelationsAction.java	(revision 12636)
@@ -7,5 +7,4 @@
 import java.util.Collection;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.mapmode.DeleteAction;
 import org.openstreetmap.josm.data.osm.Relation;
@@ -31,5 +30,5 @@
 
     protected void deleteRelation(Collection<Relation> toDelete) {
-        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
         if (toDelete == null || layer == null)
             return;
Index: trunk/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java	(revision 12636)
@@ -35,5 +35,5 @@
     public void actionPerformed(ActionEvent e) {
         if (!isEnabled() || relations.isEmpty() || !MainApplication.isDisplayingMapView()) return;
-        MainApplication.worker.submit(new DownloadRelationTask(relations, Main.getLayerManager().getEditLayer()));
+        MainApplication.worker.submit(new DownloadRelationTask(relations, MainApplication.getLayerManager().getEditLayer()));
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java	(revision 12636)
@@ -54,5 +54,5 @@
                 relations,
                 incompleteMembers,
-                Main.getLayerManager().getEditLayer()));
+                MainApplication.getLayerManager().getEditLayer()));
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/relation/DuplicateRelationAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/relation/DuplicateRelationAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/relation/DuplicateRelationAction.java	(revision 12636)
@@ -6,6 +6,6 @@
 import java.awt.event.ActionEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -34,5 +34,5 @@
         copy.setModified(true);
         RelationEditor editor = RelationEditor.getEditor(
-                Main.getLayerManager().getEditLayer(),
+                MainApplication.getLayerManager().getEditLayer(),
                 copy,
                 null /* no selected members */
Index: trunk/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java	(revision 12636)
@@ -44,5 +44,5 @@
         Set<RelationMember> members = new HashSet<>();
         if (MainApplication.isDisplayingMapView()) {
-            OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+            OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
             if (editLayer != null && editLayer.data != null) {
                 Collection<OsmPrimitive> selection = editLayer.data.getSelected();
@@ -63,5 +63,5 @@
     public static void launchEditor(Relation toEdit) {
         if (toEdit == null || toEdit.isDeleted() || !MainApplication.isDisplayingMapView()) return;
-        RelationEditor.getEditor(Main.getLayerManager().getEditLayer(), toEdit,
+        RelationEditor.getEditor(MainApplication.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 12635)
+++ trunk/src/org/openstreetmap/josm/actions/relation/RecentRelationsAction.java	(revision 12636)
@@ -95,5 +95,5 @@
         return relation != null &&
             !relation.isDeleted() &&
-            Main.getLayerManager().getEditDataSet().containsRelation(relation);
+            MainApplication.getLayerManager().getEditDataSet().containsRelation(relation);
     }
 
@@ -126,5 +126,5 @@
         if (!MainApplication.isDisplayingMapView())
             return Collections.emptyList();
-        Layer activeLayer = Main.getLayerManager().getActiveLayer();
+        Layer activeLayer = MainApplication.getLayerManager().getActiveLayer();
         if (!(activeLayer instanceof OsmDataLayer)) {
             return Collections.emptyList();
Index: trunk/src/org/openstreetmap/josm/actions/relation/SelectMembersAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/relation/SelectMembersAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/relation/SelectMembersAction.java	(revision 12636)
@@ -8,5 +8,4 @@
 import java.util.Set;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
@@ -44,7 +43,7 @@
         }
         if (add) {
-            Main.getLayerManager().getEditLayer().data.addSelected(members);
+            MainApplication.getLayerManager().getEditLayer().data.addSelected(members);
         } else {
-            Main.getLayerManager().getEditLayer().data.setSelected(members);
+            MainApplication.getLayerManager().getEditLayer().data.setSelected(members);
         }
     }
Index: trunk/src/org/openstreetmap/josm/actions/relation/SelectRelationAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/relation/SelectRelationAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/relation/SelectRelationAction.java	(revision 12636)
@@ -6,5 +6,5 @@
 import java.awt.event.ActionEvent;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -34,5 +34,5 @@
     public void actionPerformed(ActionEvent e) {
         if (!isEnabled() || relations.isEmpty()) return;
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         if (editLayer == null || editLayer.data == null) return;
         if (add) {
Index: trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 12636)
@@ -764,5 +764,5 @@
 
         static SearchTask newSearchTask(SearchSetting setting, SearchReceiver resultReceiver) {
-            final DataSet ds = Main.getLayerManager().getEditDataSet();
+            final DataSet ds = MainApplication.getLayerManager().getEditDataSet();
             return newSearchTask(setting, ds, resultReceiver);
         }
Index: trunk/src/org/openstreetmap/josm/actions/upload/ApiPreconditionCheckerHook.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/upload/ApiPreconditionCheckerHook.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/upload/ApiPreconditionCheckerHook.java	(revision 12636)
@@ -14,4 +14,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.progress.NullProgressMonitor;
 import org.openstreetmap.josm.io.OnlineResource;
@@ -79,5 +80,5 @@
                             JOptionPane.ERROR_MESSAGE
                     );
-                    Main.getLayerManager().getEditDataSet().setSelected(Collections.singleton(osmPrimitive));
+                    MainApplication.getLayerManager().getEditDataSet().setSelected(Collections.singleton(osmPrimitive));
                     return false;
                 }
@@ -96,5 +97,5 @@
                         JOptionPane.ERROR_MESSAGE
                 );
-                Main.getLayerManager().getEditDataSet().setSelected(Collections.singleton(osmPrimitive));
+                MainApplication.getLayerManager().getEditDataSet().setSelected(Collections.singleton(osmPrimitive));
                 return false;
             }
Index: trunk/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java	(revision 12636)
@@ -74,5 +74,5 @@
             }
         }
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         if (editLayer != null) {
             editLayer.validationErrors.clear();
@@ -152,5 +152,5 @@
             OsmValidator.initializeErrorLayer();
             MainApplication.getMap().validatorDialog.unfurlDialog();
-            Main.getLayerManager().getLayersOfType(ValidatorLayer.class).forEach(ValidatorLayer::invalidate);
+            MainApplication.getLayerManager().getLayersOfType(ValidatorLayer.class).forEach(ValidatorLayer::invalidate);
             return false;
         }
Index: trunk/src/org/openstreetmap/josm/command/Command.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/Command.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/command/Command.java	(revision 12636)
@@ -25,4 +25,5 @@
 import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -144,5 +145,5 @@
      */
     public Command() {
-        this.layer = Main.getLayerManager().getEditLayer();
+        this.layer = MainApplication.getLayerManager().getEditLayer();
         this.data = layer != null ? layer.data : null;
     }
Index: trunk/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java	(revision 12636)
@@ -65,5 +65,5 @@
     @Override
     public void undoCommand() {
-        if (MainApplication.isDisplayingMapView() && !Main.getLayerManager().containsLayer(getLayer())) {
+        if (MainApplication.isDisplayingMapView() && !MainApplication.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 12635)
+++ trunk/src/org/openstreetmap/josm/command/conflict/ConflictResolveCommand.java	(revision 12636)
@@ -6,5 +6,4 @@
 import java.util.Objects;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.conflict.Conflict;
@@ -73,5 +72,5 @@
 
         if (MainApplication.isDisplayingMapView()) {
-            if (!Main.getLayerManager().containsLayer(getLayer())) {
+            if (!MainApplication.getLayerManager().containsLayer(getLayer())) {
                 Logging.warn(tr("Cannot undo command ''{0}'' because layer ''{1}'' is not present any more",
                         this.toString(),
@@ -81,5 +80,5 @@
             }
 
-            Main.getLayerManager().setActiveLayer(getLayer());
+            MainApplication.getLayerManager().setActiveLayer(getLayer());
         }
         reconstituteConflicts();
Index: trunk/src/org/openstreetmap/josm/command/conflict/RelationMemberConflictResolverCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/conflict/RelationMemberConflictResolverCommand.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/command/conflict/RelationMemberConflictResolverCommand.java	(revision 12636)
@@ -10,9 +10,9 @@
 import javax.swing.Icon;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.conflict.Conflict;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 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.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -72,5 +72,5 @@
     public void undoCommand() {
         OsmDataLayer layer = getLayer();
-        if (!Main.getLayerManager().containsLayer(layer)) {
+        if (!MainApplication.getLayerManager().containsLayer(layer)) {
             Logging.warn(tr("Cannot undo command ''{0}'' because layer ''{1}'' is not present any more",
                     this.toString(),
@@ -80,6 +80,6 @@
         }
 
-        Main.getLayerManager().setActiveLayer(layer);
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        MainApplication.getLayerManager().setActiveLayer(layer);
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
 
         // restore the former state
Index: trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java	(revision 12636)
@@ -11,4 +11,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.layer.Layer;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
@@ -44,5 +45,5 @@
      */
     public UndoRedoHandler() {
-        Main.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
     }
 
@@ -85,5 +86,5 @@
      */
     public synchronized void add(final Command c) {
-        DataSet ds = Optional.ofNullable(c.getAffectedDataSet()).orElseGet(() -> Main.getLayerManager().getEditDataSet());
+        DataSet ds = Optional.ofNullable(c.getAffectedDataSet()).orElseGet(() -> MainApplication.getLayerManager().getEditDataSet());
         Collection<? extends OsmPrimitive> oldSelection = null;
         if (ds != null) {
@@ -114,5 +115,5 @@
         if (commands.isEmpty())
             return;
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         Collection<? extends OsmPrimitive> oldSelection = null;
         if (ds != null) {
@@ -155,5 +156,5 @@
         if (redoCommands.isEmpty())
             return;
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         Collection<? extends OsmPrimitive> oldSelection = ds.getSelected();
         for (int i = 0; i < num; ++i) {
Index: trunk/src/org/openstreetmap/josm/data/osm/FilterModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/FilterModel.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/data/osm/FilterModel.java	(revision 12636)
@@ -96,5 +96,5 @@
      */
     public void executeFilters() {
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         changed = false;
         if (ds == null) {
@@ -145,5 +145,5 @@
      */
     public void executeFilters(Collection<? extends OsmPrimitive> primitives) {
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         if (ds == null)
             return;
@@ -197,5 +197,5 @@
 
     private static void updateMap() {
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         if (editLayer != null) {
             editLayer.invalidate();
@@ -207,5 +207,5 @@
      */
     public void clearFilterFlags() {
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         if (ds != null) {
             FilterWorker.clearFilterFlags(ds.allPrimitives());
Index: trunk/src/org/openstreetmap/josm/data/osm/event/DatasetEventManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/event/DatasetEventManager.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/data/osm/event/DatasetEventManager.java	(revision 12636)
@@ -12,7 +12,7 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.event.DataSetListenerAdapter.Listener;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
@@ -152,5 +152,5 @@
      */
     public DatasetEventManager() {
-        Main.getLayerManager().addActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(this);
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/event/SelectionEventManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/event/SelectionEventManager.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/data/osm/event/SelectionEventManager.java	(revision 12636)
@@ -11,9 +11,9 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.SelectionChangedListener;
 import org.openstreetmap.josm.data.osm.DataSelectionListener;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.MainLayerManager;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
@@ -105,5 +105,5 @@
      */
     protected SelectionEventManager() {
-        MainLayerManager layerManager = Main.getLayerManager();
+        MainLayerManager layerManager = MainApplication.getLayerManager();
         // We do not allow for destructing this object.
         // Currently, this is a singleton class, so this is not required.
@@ -212,5 +212,5 @@
         inEDTListeners.clear();
         immedatelyListeners.clear();
-        Main.getLayerManager().addAndFireActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(this);
     }
 }
Index: trunk/src/org/openstreetmap/josm/data/osm/history/HistoryDataSet.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/history/HistoryDataSet.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/data/osm/history/HistoryDataSet.java	(revision 12636)
@@ -12,5 +12,4 @@
 import java.util.concurrent.CopyOnWriteArrayList;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.IPrimitive;
@@ -42,5 +41,5 @@
         if (historyDataSet == null) {
             historyDataSet = new HistoryDataSet();
-            Main.getLayerManager().addLayerChangeListener(historyDataSet);
+            MainApplication.getLayerManager().addLayerChangeListener(historyDataSet);
         }
         return historyDataSet;
@@ -228,5 +227,5 @@
     public void layerRemoving(LayerRemoveEvent e) {
         if (!MainApplication.isDisplayingMapView()) return;
-        if (Main.getLayerManager().getLayers().isEmpty()) {
+        if (MainApplication.getLayerManager().getLayers().isEmpty()) {
             data.clear();
             fireCacheCleared();
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/MultipolygonCache.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/MultipolygonCache.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/MultipolygonCache.java	(revision 12636)
@@ -28,4 +28,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.layer.LayerManager.LayerAddEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
@@ -51,5 +52,5 @@
         Main.addProjectionChangeListener(this);
         DataSet.addSelectionListener(this);
-        Main.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
     }
 
Index: trunk/src/org/openstreetmap/josm/data/validation/OsmValidator.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/OsmValidator.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/data/validation/OsmValidator.java	(revision 12636)
@@ -58,4 +58,5 @@
 import org.openstreetmap.josm.data.validation.tests.WayConnectedToArea;
 import org.openstreetmap.josm.data.validation.tests.WronglyOrderedWays;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.ValidatorLayer;
 import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
@@ -238,5 +239,5 @@
         if (errorLayer == null) {
             errorLayer = new ValidatorLayer();
-            Main.getLayerManager().addLayer(errorLayer);
+            MainApplication.getLayerManager().addLayer(errorLayer);
         }
     }
Index: trunk/src/org/openstreetmap/josm/data/validation/Test.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/Test.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/data/validation/Test.java	(revision 12636)
@@ -15,5 +15,4 @@
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.search.SearchCompiler.NotOutsideDataSourceArea;
 import org.openstreetmap.josm.command.Command;
@@ -24,4 +23,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -331,5 +331,5 @@
         }
         if (!primitivesToDelete.isEmpty()) {
-            return DeleteCommand.delete(Main.getLayerManager().getEditLayer(), primitivesToDelete);
+            return DeleteCommand.delete(MainApplication.getLayerManager().getEditLayer(), primitivesToDelete);
         } else {
             return null;
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/DuplicateNode.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/DuplicateNode.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/DuplicateNode.java	(revision 12636)
@@ -34,4 +34,5 @@
 import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.tools.MultiMap;
@@ -333,5 +334,5 @@
 
             if (Command.checkOutlyingOrIncompleteOperation(nodes, Collections.singleton(target)) == Command.IS_OK)
-                return MergeNodesAction.mergeNodes(Main.getLayerManager().getEditLayer(), nodes, target);
+                return MergeNodesAction.mergeNodes(MainApplication.getLayerManager().getEditLayer(), nodes, target);
         }
 
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java	(revision 12636)
@@ -31,4 +31,5 @@
 import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.preferences.validator.ValidatorPreference;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -168,5 +169,5 @@
         mindist = Main.pref.getDouble(PREFIX + ".node_way_distance", 10.0);
         minmiddledist = Main.pref.getDouble(PREFIX + ".way_way_distance", 0.0);
-        DataSet dataSet = Main.getLayerManager().getEditDataSet();
+        DataSet dataSet = MainApplication.getLayerManager().getEditDataSet();
         dsArea = dataSet == null ? null : dataSet.getDataSourceArea();
     }
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/UntaggedWay.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/UntaggedWay.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/UntaggedWay.java	(revision 12636)
@@ -9,5 +9,4 @@
 import java.util.Set;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -19,4 +18,5 @@
 import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 
@@ -142,5 +142,5 @@
     public void startTest(ProgressMonitor monitor) {
         super.startTest(monitor);
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         if (ds == null)
             return;
Index: trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java	(revision 12636)
@@ -58,5 +58,5 @@
         @Override
         public void actionPerformed(ActionEvent e) {
-            Collection<ImageryLayer> layers = Main.getLayerManager().getLayersOfType(ImageryLayer.class);
+            Collection<ImageryLayer> layers = MainApplication.getLayerManager().getLayersOfType(ImageryLayer.class);
             if (layers.isEmpty()) {
                 setEnabled(false);
@@ -112,5 +112,5 @@
         super(trc("menu", "Imagery"));
         setupMenuScroller();
-        Main.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
         // build dynamically
         addMenuListener(new MenuListener() {
@@ -211,5 +211,5 @@
 
     private JMenuItem getNewOffsetMenu() {
-        Collection<ImageryLayer> layers = Main.getLayerManager().getLayersOfType(ImageryLayer.class);
+        Collection<ImageryLayer> layers = MainApplication.getLayerManager().getLayersOfType(ImageryLayer.class);
         if (layers.isEmpty()) {
             offsetAction.setEnabled(false);
Index: trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 12636)
@@ -63,4 +63,5 @@
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.Version;
+import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.validation.OsmValidator;
@@ -69,5 +70,7 @@
 import org.openstreetmap.josm.gui.download.DownloadDialog;
 import org.openstreetmap.josm.gui.io.CustomConfigurator.XMLCommandProcessor;
+import org.openstreetmap.josm.gui.io.SaveLayersDialog;
 import org.openstreetmap.josm.gui.layer.AutosaveTask;
+import org.openstreetmap.josm.gui.layer.MainLayerManager;
 import org.openstreetmap.josm.gui.layer.TMSLayer;
 import org.openstreetmap.josm.gui.preferences.imagery.ImageryPreference;
@@ -78,4 +81,5 @@
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.RedirectInputMap;
 import org.openstreetmap.josm.io.CertificateAmendment;
 import org.openstreetmap.josm.io.DefaultProxySelector;
@@ -134,4 +138,9 @@
 
     /**
+     * Provides access to the layers displayed in the main view.
+     */
+    private static final MainLayerManager layerManager = new MainLayerManager();
+
+    /**
      * Constructs a new {@code MainApplication} without a window.
      */
@@ -228,5 +237,5 @@
         } else {
             // required for running some tests.
-            panel = new MainPanel(Main.getLayerManager());
+            panel = new MainPanel(MainApplication.getLayerManager());
             menu = new MainMenu();
         }
@@ -246,4 +255,6 @@
             map.rememberToggleDialogWidth();
         }
+        // Remove all layers because somebody may rely on layerRemoved events (like AutosaveTask)
+        getLayerManager().resetState();
         super.shutdown();
         if (!GraphicsEnvironment.isHeadless()) {
@@ -264,4 +275,13 @@
     }
 
+    /**
+     * Replies the current selected primitives, from a end-user point of view.
+     * It is not always technically the same collection of primitives than {@link DataSet#getSelected()}.
+     * Indeed, if the user is currently in drawing mode, only the way currently being drawn is returned,
+     * see {@link DrawAction#getInProgressSelection()}.
+     *
+     * @return The current selected primitives, from a end-user point of view. Can be {@code null}.
+     * @since 6546
+     */
     @Override
     public Collection<OsmPrimitive> getInProgressSelection() {
@@ -269,5 +289,7 @@
             return ((DrawAction) map.mapMode).getInProgressSelection();
         } else {
-            return super.getInProgressSelection();
+            DataSet ds = getLayerManager().getEditDataSet();
+            if (ds == null) return null;
+            return ds.getSelected();
         }
     }
@@ -280,4 +302,14 @@
     public static List<String> getCommandLineArgs() {
         return Collections.unmodifiableList(COMMAND_LINE_ARGS);
+    }
+
+    /**
+     * Returns the main layer manager that is used by the map view.
+     * @return The layer manager. The value returned will never change.
+     * @since 12636 (as a replacement to {@code MainApplication.getLayerManager()})
+     */
+    @SuppressWarnings("deprecation")
+    public static MainLayerManager getLayerManager() {
+        return layerManager;
     }
 
@@ -306,4 +338,27 @@
     public static boolean isDisplayingMapView() {
         return map != null && map.mapView != null;
+    }
+
+    /**
+     * Closes JOSM and optionally terminates the Java Virtual Machine (JVM).
+     * If there are some unsaved data layers, asks first for user confirmation.
+     * @param exit If {@code true}, the JVM is terminated by running {@link System#exit} with a given return code.
+     * @param exitCode The return code
+     * @param reason the reason for exiting
+     * @return {@code true} if JOSM has been closed, {@code false} if the user has cancelled the operation.
+     * @since 12636 (specialized version of {@link Main#exitJosm})
+     */
+    public static boolean exitJosm(boolean exit, int exitCode, SaveLayersDialog.Reason reason) {
+        final boolean proceed = Boolean.TRUE.equals(GuiHelper.runInEDTAndWaitAndReturn(() ->
+                SaveLayersDialog.saveUnsavedModifications(MainApplication.getLayerManager().getLayers(),
+                        reason != null ? reason : SaveLayersDialog.Reason.EXIT)));
+        if (proceed) {
+            return Main.exitJosm(exit, exitCode);
+        }
+        return false;
+    }
+
+    public static void redirectToMainContentPane(JComponent source) {
+        RedirectInputMap.redirect(source, contentPanePrivate);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/MainFrame.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainFrame.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/MainFrame.java	(revision 12636)
@@ -67,5 +67,5 @@
         super();
         this.geometry = geometry;
-        this.panel = new MainPanel(Main.getLayerManager());
+        this.panel = new MainPanel(MainApplication.getLayerManager());
         setContentPane(new JPanel(new BorderLayout()));
     }
@@ -94,6 +94,6 @@
 
         // This listener is never removed, since the main frame exists forever.
-        Main.getLayerManager().addActiveLayerChangeListener(e -> refreshTitle());
-        Main.getLayerManager().addAndFireLayerChangeListener(new ManageLayerListeners());
+        MainApplication.getLayerManager().addActiveLayerChangeListener(e -> refreshTitle());
+        MainApplication.getLayerManager().addAndFireLayerChangeListener(new ManageLayerListeners());
 
         refreshTitle();
@@ -156,5 +156,5 @@
      */
     public void refreshTitle() {
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         boolean dirty = editLayer != null && (editLayer.requiresSaveToFile()
                 || (editLayer.requiresUploadToServer() && !editLayer.isUploadDiscouraged()));
@@ -164,5 +164,5 @@
 
     private void onLayerChange(OsmDataLayer layer) {
-        if (layer == Main.getLayerManager().getEditLayer()) {
+        if (layer == MainApplication.getLayerManager().getEditLayer()) {
             refreshTitle();
         }
@@ -172,5 +172,5 @@
         @Override
         public void windowClosing(final WindowEvent evt) {
-            Main.exitJosm(true, 0, null);
+            MainApplication.exitJosm(true, 0, null);
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/MainMenu.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 12636)
@@ -893,5 +893,5 @@
         PresetsMenuEnabler(JMenu presetsMenu) {
             this.presetsMenu = presetsMenu;
-            Main.getLayerManager().addAndFireActiveLayerChangeListener(this);
+            MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(this);
         }
 
Index: trunk/src/org/openstreetmap/josm/gui/MainPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainPanel.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/MainPanel.java	(revision 12636)
@@ -95,5 +95,5 @@
 
         //TODO: Move this to some better place
-        List<Layer> layers = Main.getLayerManager().getLayers();
+        List<Layer> layers = MainApplication.getLayerManager().getLayers();
         if (!layers.isEmpty()) {
             mapFrame.selectMapMode((MapMode) mapFrame.getDefaultButtonAction(), layers.get(0));
Index: trunk/src/org/openstreetmap/josm/gui/MapFrame.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 12636)
@@ -202,5 +202,5 @@
         setLayout(new BorderLayout());
 
-        mapView = new MapView(Main.getLayerManager(), viewportData);
+        mapView = new MapView(MainApplication.getLayerManager(), viewportData);
 
         splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true);
@@ -282,6 +282,6 @@
         // status line below the map
         statusLine = new MapStatus(this);
-        Main.getLayerManager().addLayerChangeListener(this);
-        Main.getLayerManager().addActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(this);
 
         boolean unregisterTab = Shortcut.findShortcut(KeyEvent.VK_TAB, 0).isPresent();
@@ -342,6 +342,6 @@
     @Override
     public void destroy() {
-        Main.getLayerManager().removeLayerChangeListener(this);
-        Main.getLayerManager().removeActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().removeLayerChangeListener(this);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(this);
         dialogsPanel.destroy();
         Main.pref.removePreferenceChangeListener(sidetoolbarPreferencesChangedListener);
Index: trunk/src/org/openstreetmap/josm/gui/MapStatus.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 12636)
@@ -486,5 +486,5 @@
          */
         private void popupCycleSelection(Collection<OsmPrimitive> osms, int mods) {
-            DataSet ds = Main.getLayerManager().getEditDataSet();
+            DataSet ds = MainApplication.getLayerManager().getEditDataSet();
             // Find some items that are required for cycling through
             OsmPrimitive firstItem = null;
@@ -577,5 +577,5 @@
          */
         private void popupSetLabelColors(JLabel lbl, OsmPrimitive osm) {
-            DataSet ds = Main.getLayerManager().getEditDataSet();
+            DataSet ds = MainApplication.getLayerManager().getEditDataSet();
             if (ds.isSelected(osm)) {
                 lbl.setBackground(SystemColor.textHighlight);
@@ -650,5 +650,5 @@
                 @Override
                 public void mouseClicked(MouseEvent e) {
-                    DataSet ds = Main.getLayerManager().getEditDataSet();
+                    DataSet ds = MainApplication.getLayerManager().getEditDataSet();
                     // Let the user toggle the selection
                     ds.toggleSelected(osm);
Index: trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 12636)
@@ -902,5 +902,5 @@
     private Map<Double, List<Node>> getNearestNodesImpl(Point p, Predicate<OsmPrimitive> predicate) {
         Map<Double, List<Node>> nearestMap = new TreeMap<>();
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
 
         if (ds != null) {
@@ -1111,5 +1111,5 @@
     private Map<Double, List<WaySegment>> getNearestWaySegmentsImpl(Point p, Predicate<OsmPrimitive> predicate) {
         Map<Double, List<WaySegment>> nearestMap = new TreeMap<>();
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
 
         if (ds != null) {
@@ -1472,5 +1472,5 @@
     public final OsmPrimitive getNearestNodeOrWay(Point p, Predicate<OsmPrimitive> predicate, boolean useSelected) {
         Collection<OsmPrimitive> sel;
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         if (useSelected && ds != null) {
             sel = ds.getSelected();
Index: trunk/src/org/openstreetmap/josm/gui/SelectionManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/SelectionManager.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/SelectionManager.java	(revision 12636)
@@ -18,5 +18,4 @@
 import javax.swing.Action;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.SelectByInternalPointAction;
 import org.openstreetmap.josm.data.Bounds;
@@ -183,5 +182,5 @@
     @Override
     public void mousePressed(MouseEvent e) {
-        if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() > 1 && Main.getLayerManager().getEditDataSet() != null) {
+        if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() > 1 && MainApplication.getLayerManager().getEditDataSet() != null) {
             SelectByInternalPointAction.performSelection(MainApplication.getMap().mapView.getEastNorth(e.getX(), e.getY()),
                     (e.getModifiersEx() & MouseEvent.SHIFT_DOWN_MASK) != 0,
@@ -382,5 +381,5 @@
         } else {
             // nodes
-            for (Node n : Main.getLayerManager().getEditDataSet().getNodes()) {
+            for (Node n : MainApplication.getLayerManager().getEditDataSet().getNodes()) {
                 if (n.isSelectable() && selectionResult.contains(nc.getPoint2D(n))) {
                     selection.add(n);
@@ -389,5 +388,5 @@
 
             // ways
-            for (Way w : Main.getLayerManager().getEditDataSet().getWays()) {
+            for (Way w : MainApplication.getLayerManager().getEditDataSet().getWays()) {
                 if (!w.isSelectable() || w.getNodesCount() == 0) {
                     continue;
Index: trunk/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java	(revision 12636)
@@ -126,5 +126,5 @@
         Main.pref.addPreferenceChangeListener(this);
         NavigatableComponent.addZoomChangeListener(this);
-        Main.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
         DatasetEventManager.getInstance().addDatasetListener(this, FireMode.IN_EDT_CONSOLIDATED);
         registerAutoFilterRules(AutoFilterRule.defaultRules());
@@ -194,5 +194,5 @@
 
     private static Set<String> getTagValues(String key) {
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         Set<String> values = new TreeSet<>();
         if (ds != null) {
@@ -371,5 +371,5 @@
             model.executeFilters();
             if (model.isChanged()) {
-                OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+                OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
                 if (editLayer != null) {
                     editLayer.invalidate();
@@ -422,5 +422,5 @@
     @Override
     public void layerRemoving(LayerRemoveEvent e) {
-        if (Main.getLayerManager().getEditLayer() == null) {
+        if (MainApplication.getLayerManager().getEditLayer() == null) {
             resetCurrentAutoFilter();
         }
Index: trunk/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMerger.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMerger.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMerger.java	(revision 12636)
@@ -31,5 +31,4 @@
 import javax.swing.event.ListSelectionListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.conflict.ConflictResolveCommand;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -37,4 +36,5 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.util.AdjustmentSynchronizer;
@@ -901,5 +901,5 @@
     protected final <P extends OsmPrimitive> OsmDataLayer findLayerFor(P primitive) {
         if (primitive != null) {
-            Iterable<OsmDataLayer> layers = Main.getLayerManager().getLayersOfType(OsmDataLayer.class);
+            Iterable<OsmDataLayer> layers = MainApplication.getLayerManager().getLayersOfType(OsmDataLayer.class);
             // Find layer with same dataset
             for (OsmDataLayer layer : layers) {
Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolver.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolver.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolver.java	(revision 12636)
@@ -28,9 +28,9 @@
 import javax.swing.event.ChangeListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
@@ -197,5 +197,5 @@
     public void prepareForEditing() {
         AutoCompletionList acList = new AutoCompletionList();
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         if (editLayer != null) {
             editLayer.data.getAutoCompletionManager().populateWithMemberRoles(acList);
Index: trunk/src/org/openstreetmap/josm/gui/datatransfer/AbstractStackTransferHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/datatransfer/AbstractStackTransferHandler.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/datatransfer/AbstractStackTransferHandler.java	(revision 12636)
@@ -10,6 +10,6 @@
 import javax.swing.TransferHandler;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.datatransfer.importers.AbstractOsmDataPaster;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -45,5 +45,5 @@
     @Override
     public boolean importData(TransferSupport support) {
-        return importData(support, Main.getLayerManager().getEditLayer(), null);
+        return importData(support, MainApplication.getLayerManager().getEditLayer(), null);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java	(revision 12636)
@@ -121,6 +121,6 @@
         // events and bootstrap it's content
         ChangesetCache.getInstance().addChangesetCacheListener(inActiveDataLayerModel);
-        Main.getLayerManager().addActiveLayerChangeListener(inActiveDataLayerModel);
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        MainApplication.getLayerManager().addActiveLayerChangeListener(inActiveDataLayerModel);
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         if (editLayer != null) {
             editLayer.data.addDataSetListener(inActiveDataLayerModel);
@@ -134,6 +134,6 @@
         //
         ChangesetCache.getInstance().removeChangesetCacheListener(inActiveDataLayerModel);
-        Main.getLayerManager().removeActiveLayerChangeListener(inActiveDataLayerModel);
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(inActiveDataLayerModel);
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         if (editLayer != null) {
             editLayer.data.removeDataSetListener(inActiveDataLayerModel);
@@ -234,5 +234,5 @@
 
     protected void initWithCurrentData() {
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         if (editLayer != null) {
             inSelectionModel.initFromPrimitives(editLayer.data.getAllSelected());
@@ -265,7 +265,7 @@
             if (sel.isEmpty())
                 return;
-            if (Main.getLayerManager().getEditDataSet() == null)
-                return;
-            new SelectObjectsAction().selectObjectsByChangesetIds(Main.getLayerManager().getEditDataSet(), sel);
+            if (MainApplication.getLayerManager().getEditDataSet() == null)
+                return;
+            new SelectObjectsAction().selectObjectsByChangesetIds(MainApplication.getLayerManager().getEditDataSet(), sel);
         }
 
@@ -313,5 +313,5 @@
         @Override
         public void actionPerformed(ActionEvent e) {
-            if (Main.getLayerManager().getEditLayer() == null)
+            if (MainApplication.getLayerManager().getEditLayer() == null)
                 return;
             ChangesetListModel model = getCurrentChangesetListModel();
@@ -320,5 +320,5 @@
                 return;
 
-            DataSet ds = Main.getLayerManager().getEditLayer().data;
+            DataSet ds = MainApplication.getLayerManager().getEditLayer().data;
             selectObjectsByChangesetIds(ds, sel);
         }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java	(revision 12636)
@@ -258,5 +258,5 @@
     private void buildTrees() {
         setTitle(tr("Command Stack"));
-        if (Main.getLayerManager().getEditLayer() == null)
+        if (MainApplication.getLayerManager().getEditLayer() == null)
             return;
 
@@ -335,5 +335,5 @@
     protected static Collection<? extends OsmPrimitive> getAffectedPrimitives(TreePath path) {
         PseudoCommand c = ((CommandListMutableTreeNode) path.getLastPathComponent()).getCommand();
-        final OsmDataLayer currentLayer = Main.getLayerManager().getEditLayer();
+        final OsmDataLayer currentLayer = MainApplication.getLayerManager().getEditLayer();
         return new SubclassFilteredCollection<>(
                 c.getParticipatingPrimitives(),
@@ -376,5 +376,5 @@
                 throw new IllegalStateException();
 
-            DataSet dataSet = Main.getLayerManager().getEditDataSet();
+            DataSet dataSet = MainApplication.getLayerManager().getEditDataSet();
             if (dataSet == null) return;
             dataSet.setSelected(getAffectedPrimitives(path));
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 12636)
@@ -155,11 +155,11 @@
     @Override
     public void showNotify() {
-        Main.getLayerManager().addAndFireActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(this);
     }
 
     @Override
     public void hideNotify() {
-        Main.getLayerManager().removeActiveLayerChangeListener(this);
-        removeEditLayerListeners(Main.getLayerManager().getEditLayer());
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(this);
+        removeEditLayerListeners(MainApplication.getLayerManager().getEditLayer());
     }
 
@@ -218,5 +218,5 @@
      */
     public void refreshView() {
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         synchronized (this) {
             conflicts = editLayer == null ? new ConflictCollection() : editLayer.getConflicts();
@@ -483,5 +483,5 @@
                 }
             }
-            DataSet ds = Main.getLayerManager().getEditDataSet();
+            DataSet ds = MainApplication.getLayerManager().getEditDataSet();
             if (ds != null) { // Can't see how it is possible but it happened in #7942
                 ds.setSelected(sel);
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java	(revision 12636)
@@ -115,5 +115,5 @@
 
     protected static String buildMapPaintText() {
-        final Collection<OsmPrimitive> sel = Main.getLayerManager().getEditDataSet().getAllSelected();
+        final Collection<OsmPrimitive> sel = MainApplication.getLayerManager().getEditDataSet().getAllSelected();
         ElemStyles elemstyles = MapPaintStyles.getStyles();
         NavigatableComponent nc = MainApplication.getMap().mapView;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 12636)
@@ -1161,5 +1161,5 @@
      */
     public static Layer getLayerForIndex(int index) {
-        List<Layer> layers = Main.getLayerManager().getLayers();
+        List<Layer> layers = MainApplication.getLayerManager().getLayers();
 
         if (index < layers.size() && index >= 0)
@@ -1178,5 +1178,5 @@
         List<MultikeyInfo> result = new ArrayList<>();
 
-        List<Layer> layers = Main.getLayerManager().getLayers();
+        List<Layer> layers = MainApplication.getLayerManager().getLayers();
 
         int index = 0;
@@ -1200,5 +1200,5 @@
             return false;
 
-        return Main.getLayerManager().containsLayer(l);
+        return MainApplication.getLayerManager().containsLayer(l);
     }
 
@@ -1212,5 +1212,5 @@
             return null;
 
-        int index = Main.getLayerManager().getLayers().indexOf(l);
+        int index = MainApplication.getLayerManager().getLayers().indexOf(l);
         if (index < 0)
             return null;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java	(revision 12636)
@@ -82,5 +82,5 @@
         uploadAction = new UploadNotesAction();
         buildDialog();
-        Main.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
     }
 
@@ -356,5 +356,5 @@
         public void actionPerformed(ActionEvent e) {
             if (noteData == null) { //there is no notes layer. Create one first
-                Main.getLayerManager().addLayer(new NoteLayer());
+                MainApplication.getLayerManager().addLayer(new NoteLayer());
             }
             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 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 12636)
@@ -217,6 +217,6 @@
     @Override
     public void showNotify() {
-        Main.getLayerManager().addLayerChangeListener(newAction);
-        Main.getLayerManager().addActiveLayerChangeListener(newAction);
+        MainApplication.getLayerManager().addLayerChangeListener(newAction);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(newAction);
         MapView.addZoomChangeListener(this);
         newAction.updateEnabledState();
@@ -230,6 +230,6 @@
     @Override
     public void hideNotify() {
-        Main.getLayerManager().removeActiveLayerChangeListener(newAction);
-        Main.getLayerManager().removeLayerChangeListener(newAction);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(newAction);
+        MainApplication.getLayerManager().removeLayerChangeListener(newAction);
         MapView.removeZoomChangeListener(this);
         DatasetEventManager.getInstance().removeDatasetListener(this);
@@ -326,5 +326,5 @@
 
         protected void setCurrentRelationAsSelection() {
-            Main.getLayerManager().getEditDataSet().setSelected(displaylist.getSelectedValue());
+            MainApplication.getLayerManager().getEditDataSet().setSelected(displaylist.getSelectedValue());
         }
 
@@ -335,5 +335,5 @@
         @Override
         public void mouseClicked(MouseEvent e) {
-            if (Main.getLayerManager().getEditLayer() == null) return;
+            if (MainApplication.getLayerManager().getEditLayer() == null) return;
             if (isDoubleClick(e)) {
                 if (e.isControlDown()) {
@@ -358,5 +358,5 @@
 
         public void run() {
-            RelationEditor.getEditor(Main.getLayerManager().getEditLayer(), null, null).setVisible(true);
+            RelationEditor.getEditor(MainApplication.getLayerManager().getEditLayer(), null, null).setVisible(true);
         }
 
@@ -367,5 +367,5 @@
 
         protected void updateEnabledState() {
-            setEnabled(Main.getLayerManager().getEditLayer() != null);
+            setEnabled(MainApplication.getLayerManager().getEditLayer() != null);
         }
 
@@ -696,5 +696,5 @@
     @Override
     public void dataChanged(DataChangedEvent event) {
-        initFromLayer(Main.getLayerManager().getEditLayer());
+        initFromLayer(MainApplication.getLayerManager().getEditLayer());
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 12636)
@@ -172,7 +172,7 @@
         SelectionEventManager.getInstance().addSelectionListener(model, FireMode.IN_EDT_CONSOLIDATED);
         DatasetEventManager.getInstance().addDatasetListener(model, FireMode.IN_EDT);
-        Main.getLayerManager().addActiveLayerChangeListener(actSearch);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(actSearch);
         // editLayerChanged also gets the selection history of the level. Listener calls setJOSMSelection when fired.
-        Main.getLayerManager().addAndFireActiveLayerChangeListener(model);
+        MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(model);
         actSearch.updateEnabledState();
     }
@@ -180,6 +180,6 @@
     @Override
     public void hideNotify() {
-        Main.getLayerManager().removeActiveLayerChangeListener(actSearch);
-        Main.getLayerManager().removeActiveLayerChangeListener(model);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(actSearch);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(model);
         SelectionEventManager.getInstance().removeSelectionListener(actShowHistory);
         SelectionEventManager.getInstance().removeSelectionListener(model);
@@ -203,5 +203,5 @@
             if (idx < 0) return;
             if (isDoubleClick(e)) {
-                OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+                OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
                 if (layer == null) return;
                 OsmPrimitive osm = model.getElementAt(idx);
@@ -299,5 +299,5 @@
 
         protected void updateEnabledState() {
-            setEnabled(Main.getLayerManager().getEditLayer() != null);
+            setEnabled(MainApplication.getLayerManager().getEditLayer() != null);
         }
 
@@ -324,5 +324,5 @@
             Collection<OsmPrimitive> sel = model.getSelected();
             if (sel.isEmpty()) return;
-            OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+            OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
             if (editLayer == null) return;
             editLayer.data.setSelected(sel);
@@ -845,5 +845,5 @@
         @Override
         public void actionPerformed(ActionEvent e) {
-            Main.getLayerManager().getEditDataSet().setSelected(sel);
+            MainApplication.getLayerManager().getEditDataSet().setSelected(sel);
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 12636)
@@ -54,4 +54,5 @@
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.data.preferences.ParametrizedEnumProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MainMenu;
 import org.openstreetmap.josm.gui.ShowHideButtonListener;
@@ -255,5 +256,5 @@
         setBorder(BorderFactory.createEtchedBorder());
 
-        Main.redirectToMainContentPane(this);
+        MainApplication.redirectToMainContentPane(this);
         Main.pref.addPreferenceChangeListener(this);
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 12636)
@@ -35,4 +35,5 @@
 import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -73,10 +74,10 @@
     public void showNotify() {
         SelectionEventManager.getInstance().addSelectionListenerForEdt(this);
-        Main.getLayerManager().addActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(this);
     }
 
     @Override
     public void hideNotify() {
-        Main.getLayerManager().removeActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(this);
         SelectionEventManager.getInstance().removeSelectionListener(this);
     }
@@ -141,5 +142,5 @@
     public void showDialog() {
         super.showDialog();
-        refreshForActiveLayer(Main.getLayerManager().getActiveLayer());
+        refreshForActiveLayer(MainApplication.getLayerManager().getActiveLayer());
     }
 
@@ -346,5 +347,5 @@
                 users.add(data.get(index).user);
             }
-            Collection<OsmPrimitive> selected = Main.getLayerManager().getEditDataSet().getAllSelected();
+            Collection<OsmPrimitive> selected = MainApplication.getLayerManager().getEditDataSet().getAllSelected();
             Collection<OsmPrimitive> byUser = new LinkedList<>();
             for (OsmPrimitive p : selected) {
@@ -353,5 +354,5 @@
                 }
             }
-            Main.getLayerManager().getEditDataSet().setSelected(byUser);
+            MainApplication.getLayerManager().getEditDataSet().setSelected(byUser);
         }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 12636)
@@ -131,5 +131,5 @@
             @Override
             public void actionPerformed(ActionEvent e) {
-                final DataSet ds = Main.getLayerManager().getEditDataSet();
+                final DataSet ds = MainApplication.getLayerManager().getEditDataSet();
                 if (ds == null) {
                     return;
@@ -180,14 +180,14 @@
     public void showNotify() {
         DataSet.addSelectionListener(this);
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         if (ds != null) {
             updateSelection(ds.getAllSelected());
         }
-        Main.getLayerManager().addAndFireActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(this);
     }
 
     @Override
     public void hideNotify() {
-        Main.getLayerManager().removeActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(this);
         DataSet.removeSelectionListener(this);
     }
@@ -349,5 +349,5 @@
             }
         }
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         if (ds != null) {
             ds.setSelected(sel);
@@ -488,5 +488,5 @@
 
             if (isDblClick) {
-                DataSet ds = Main.getLayerManager().getEditDataSet();
+                DataSet ds = MainApplication.getLayerManager().getEditDataSet();
                 if (ds != null) {
                     ds.setSelected(sel);
@@ -627,5 +627,5 @@
             try {
                 monitor.setTicksCount(testErrors.size());
-                final DataSet ds = Main.getLayerManager().getEditDataSet();
+                final DataSet ds = MainApplication.getLayerManager().getEditDataSet();
                 int i = 0;
                 SwingUtilities.invokeAndWait(ds::beginUpdate);
@@ -645,5 +645,5 @@
                 SwingUtilities.invokeAndWait(() -> {
                     Main.main.undoRedo.afterAdd();
-                    Main.getLayerManager().getLayersOfType(ValidatorLayer.class).forEach(ValidatorLayer::invalidate);
+                    MainApplication.getLayerManager().getLayersOfType(ValidatorLayer.class).forEach(ValidatorLayer::invalidate);
                     tree.resetErrors();
                 });
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java	(revision 12636)
@@ -33,5 +33,4 @@
 import javax.swing.event.ListSelectionListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.actions.downloadtasks.ChangesetContentDownloadTask;
@@ -93,9 +92,9 @@
         actSelectInCurrentLayerAction = new SelectInCurrentLayerAction();
         model.getSelectionModel().addListSelectionListener(actSelectInCurrentLayerAction);
-        Main.getLayerManager().addActiveLayerChangeListener(actSelectInCurrentLayerAction);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(actSelectInCurrentLayerAction);
 
         actZoomInCurrentLayerAction = new ZoomInCurrentLayerAction();
         model.getSelectionModel().addListSelectionListener(actZoomInCurrentLayerAction);
-        Main.getLayerManager().addActiveLayerChangeListener(actZoomInCurrentLayerAction);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(actZoomInCurrentLayerAction);
 
         addComponentListener(
@@ -103,6 +102,6 @@
                     @Override
                     public void componentShown(ComponentEvent e) {
-                        Main.getLayerManager().addAndFireActiveLayerChangeListener(actSelectInCurrentLayerAction);
-                        Main.getLayerManager().addAndFireActiveLayerChangeListener(actZoomInCurrentLayerAction);
+                        MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(actSelectInCurrentLayerAction);
+                        MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(actZoomInCurrentLayerAction);
                     }
 
@@ -110,6 +109,6 @@
                     public void componentHidden(ComponentEvent e) {
                         // make sure the listener is unregistered when the panel becomes invisible
-                        Main.getLayerManager().removeActiveLayerChangeListener(actSelectInCurrentLayerAction);
-                        Main.getLayerManager().removeActiveLayerChangeListener(actZoomInCurrentLayerAction);
+                        MainApplication.getLayerManager().removeActiveLayerChangeListener(actSelectInCurrentLayerAction);
+                        MainApplication.getLayerManager().removeActiveLayerChangeListener(actZoomInCurrentLayerAction);
                     }
                 }
@@ -201,5 +200,5 @@
                         + "edit layer ''{0}''.</html>",
                         primitives.size(),
-                        Utils.escapeReservedCharactersHTML(Main.getLayerManager().getEditLayer().getName())
+                        Utils.escapeReservedCharactersHTML(MainApplication.getLayerManager().getEditLayer().getName())
                 ),
                 title, JOptionPane.WARNING_MESSAGE, helpTopic
@@ -324,5 +323,5 @@
                 return null;
             }
-            OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+            OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
             if (layer == null) {
                 return null;
@@ -339,5 +338,5 @@
 
         public final void updateEnabledState() {
-            setEnabled(Main.getLayerManager().getEditLayer() != null && model.hasSelectedPrimitives());
+            setEnabled(MainApplication.getLayerManager().getEditLayer() != null && model.hasSelectedPrimitives());
         }
 
@@ -373,5 +372,5 @@
                 return;
             }
-            Main.getLayerManager().getEditLayer().data.setSelected(target);
+            MainApplication.getLayerManager().getEditLayer().data.setSelected(target);
         }
     }
@@ -396,5 +395,5 @@
                 return;
             }
-            Main.getLayerManager().getEditLayer().data.setSelected(target);
+            MainApplication.getLayerManager().getEditLayer().data.setSelected(target);
             AutoScaleAction.zoomToSelection();
         }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java	(revision 12636)
@@ -91,8 +91,8 @@
 
         tb.add(actSelectInCurrentLayer);
-        Main.getLayerManager().addActiveLayerChangeListener(actSelectInCurrentLayer);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(actSelectInCurrentLayer);
 
         tb.add(actZoomInCurrentLayerAction);
-        Main.getLayerManager().addActiveLayerChangeListener(actZoomInCurrentLayerAction);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(actZoomInCurrentLayerAction);
 
         addComponentListener(
@@ -100,6 +100,6 @@
                     @Override
                     public void componentShown(ComponentEvent e) {
-                        Main.getLayerManager().addAndFireActiveLayerChangeListener(actSelectInCurrentLayer);
-                        Main.getLayerManager().addAndFireActiveLayerChangeListener(actZoomInCurrentLayerAction);
+                        MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(actSelectInCurrentLayer);
+                        MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(actZoomInCurrentLayerAction);
                     }
 
@@ -107,6 +107,6 @@
                     public void componentHidden(ComponentEvent e) {
                         // make sure the listener is unregistered when the panel becomes invisible
-                        Main.getLayerManager().removeActiveLayerChangeListener(actSelectInCurrentLayer);
-                        Main.getLayerManager().removeActiveLayerChangeListener(actZoomInCurrentLayerAction);
+                        MainApplication.getLayerManager().removeActiveLayerChangeListener(actSelectInCurrentLayer);
+                        MainApplication.getLayerManager().removeActiveLayerChangeListener(actZoomInCurrentLayerAction);
                     }
                 }
@@ -344,5 +344,5 @@
                             + "edit layer ''{1}''.</html>",
                             currentChangeset.getId(),
-                            Utils.escapeReservedCharactersHTML(Main.getLayerManager().getEditLayer().getName())
+                            Utils.escapeReservedCharactersHTML(MainApplication.getLayerManager().getEditLayer().getName())
                     ),
                     tr("Nothing to select"),
@@ -356,5 +356,5 @@
             if (!isEnabled())
                 return;
-            OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+            OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
             if (layer == null) {
                 return;
@@ -374,5 +374,5 @@
 
         public void updateEnabledState() {
-            setEnabled(Main.getLayerManager().getEditLayer() != null && currentChangeset != null);
+            setEnabled(MainApplication.getLayerManager().getEditLayer() != null && currentChangeset != null);
         }
 
@@ -403,5 +403,5 @@
                             + "edit layer ''{1}''.</html>",
                             currentChangeset.getId(),
-                            Main.getLayerManager().getEditLayer().getName()
+                            MainApplication.getLayerManager().getEditLayer().getName()
                     ),
                     tr("Nothing to zoom to"),
@@ -415,5 +415,5 @@
             if (!isEnabled())
                 return;
-            OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+            OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
             if (layer == null) {
                 return;
@@ -434,5 +434,5 @@
 
         public void updateEnabledState() {
-            setEnabled(Main.getLayerManager().getEditLayer() != null && currentChangeset != null);
+            setEnabled(MainApplication.getLayerManager().getEditLayer() != null && currentChangeset != null);
         }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java	(revision 12636)
@@ -8,6 +8,6 @@
 import javax.swing.AbstractAction;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
@@ -53,7 +53,7 @@
     private static void duplicate(Layer layer) {
         if (layer instanceof OsmDataLayer) {
-            String newName = LayerListTransferHandler.suggestNewLayerName(layer.getName(), Main.getLayerManager().getLayers());
+            String newName = LayerListTransferHandler.suggestNewLayerName(layer.getName(), MainApplication.getLayerManager().getLayers());
             OsmDataLayer oldLayer = (OsmDataLayer) layer;
-            Main.getLayerManager().addLayer(new OsmDataLayer(new DataSet(oldLayer.data), newName, null));
+            MainApplication.getLayerManager().addLayer(new OsmDataLayer(new DataSet(oldLayer.data), newName, null));
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 12636)
@@ -230,5 +230,5 @@
 
     private final PreferenceChangedListener preferenceListener = e -> {
-                if (Main.getLayerManager().getEditDataSet() != null) {
+                if (MainApplication.getLayerManager().getEditDataSet() != null) {
                     // Re-load data when display preference change
                     updateSelection();
@@ -487,5 +487,5 @@
         MainApplication.getMap().relationListDialog.selectRelation(relation);
         RelationEditor.getEditor(
-                Main.getLayerManager().getEditLayer(),
+                MainApplication.getLayerManager().getEditLayer(),
                 relation,
                 ((MemberInfo) membershipData.getValueAt(row, 1)).role
@@ -513,5 +513,5 @@
         DatasetEventManager.getInstance().addDatasetListener(dataChangedAdapter, FireMode.IN_EDT_CONSOLIDATED);
         SelectionEventManager.getInstance().addSelectionListener(this, FireMode.IN_EDT_CONSOLIDATED);
-        Main.getLayerManager().addActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(this);
         for (JosmAction action : josmActions) {
             Main.registerActionShortcut(action);
@@ -524,5 +524,5 @@
         DatasetEventManager.getInstance().removeDatasetListener(dataChangedAdapter);
         SelectionEventManager.getInstance().removeSelectionListener(this);
-        Main.getLayerManager().removeActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(this);
         for (JosmAction action : josmActions) {
             Main.unregisterActionShortcut(action);
@@ -533,5 +533,5 @@
     public void setVisible(boolean b) {
         super.setVisible(b);
-        if (b && Main.getLayerManager().getEditDataSet() != null) {
+        if (b && MainApplication.getLayerManager().getEditDataSet() != null) {
             updateSelection();
         }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(revision 12636)
@@ -77,4 +77,5 @@
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.IExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
@@ -443,5 +444,5 @@
             mainPanel.add(p, BorderLayout.CENTER);
 
-            AutoCompletionManager autocomplete = Main.getLayerManager().getEditLayer().data.getAutoCompletionManager();
+            AutoCompletionManager autocomplete = MainApplication.getLayerManager().getEditLayer().data.getAutoCompletionManager();
             List<AutoCompletionListItem> keyList = autocomplete.getKeys();
             keyList.sort(DEFAULT_AC_ITEM_COMPARATOR);
@@ -689,5 +690,5 @@
 
             cacheRecentTags();
-            AutoCompletionManager autocomplete = Main.getLayerManager().getEditLayer().data.getAutoCompletionManager();
+            AutoCompletionManager autocomplete = MainApplication.getLayerManager().getEditLayer().data.getAutoCompletionManager();
             List<AutoCompletionListItem> keyList = autocomplete.getKeys();
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java	(revision 12636)
@@ -137,6 +137,6 @@
     @Override
     public void registerListeners() {
-        Main.getLayerManager().addLayerChangeListener(zoomToGap);
-        Main.getLayerManager().addActiveLayerChangeListener(zoomToGap);
+        MainApplication.getLayerManager().addLayerChangeListener(zoomToGap);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(zoomToGap);
         super.registerListeners();
     }
@@ -145,6 +145,6 @@
     public void unregisterListeners() {
         super.unregisterListeners();
-        Main.getLayerManager().removeLayerChangeListener(zoomToGap);
-        Main.getLayerManager().removeActiveLayerChangeListener(zoomToGap);
+        MainApplication.getLayerManager().removeLayerChangeListener(zoomToGap);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(zoomToGap);
     }
 
@@ -239,5 +239,5 @@
         private void updateEnabledState() {
             setEnabled(Main.main != null
-                    && Main.getLayerManager().getEditLayer() == getLayer()
+                    && MainApplication.getLayerManager().getEditLayer() == getLayer()
                     && getSelectedRowCount() == 1
                     && hasGap());
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 12636)
@@ -21,5 +21,4 @@
 import javax.swing.table.AbstractTableModel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.SelectionChangedListener;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -36,4 +35,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.dialogs.relation.sort.RelationSorter;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType;
@@ -111,5 +111,5 @@
     @Override
     public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
-        if (Main.getLayerManager().getEditLayer() != this.layer) return;
+        if (MainApplication.getLayerManager().getEditLayer() != this.layer) return;
         // just trigger a repaint
         Collection<RelationMember> sel = getSelectedMembers();
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ParentRelationLoadingTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ParentRelationLoadingTask.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ParentRelationLoadingTask.java	(revision 12636)
@@ -33,5 +33,5 @@
  *  final ParentRelationLoadingTask task = new ParentRelationLoadingTask(
  *                   child,   // the child relation
- *                   Main.getLayerManager().getEditLayer(), // the edit layer
+ *                   MainApplication.getLayerManager().getEditLayer(), // the edit layer
  *                   true,  // load fully
  *                   new PleaseWaitProgressMonitor()  // a progress monitor
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java	(revision 12636)
@@ -13,6 +13,6 @@
 import java.util.Optional;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
@@ -39,5 +39,5 @@
         if (RelationDialogManager.relationDialogManager == null) {
             RelationDialogManager.relationDialogManager = new RelationDialogManager();
-            Main.getLayerManager().addLayerChangeListener(RelationDialogManager.relationDialogManager);
+            MainApplication.getLayerManager().addLayerChangeListener(RelationDialogManager.relationDialogManager);
         }
         return RelationDialogManager.relationDialogManager;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTree.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTree.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTree.java	(revision 12636)
@@ -15,5 +15,4 @@
 import javax.swing.tree.TreePath;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.DataSetMerger;
@@ -137,8 +136,8 @@
                 return;
             }
-            DataSetMerger visitor = new DataSetMerger(Main.getLayerManager().getEditLayer().data, ds);
+            DataSetMerger visitor = new DataSetMerger(MainApplication.getLayerManager().getEditLayer().data, ds);
             visitor.merge();
             if (!visitor.getConflicts().isEmpty()) {
-                Main.getLayerManager().getEditLayer().getConflicts().add(visitor.getConflicts());
+                MainApplication.getLayerManager().getEditLayer().getConflicts().add(visitor.getConflicts());
             }
             final RelationTreeModel model = (RelationTreeModel) getModel();
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableModel.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableModel.java	(revision 12636)
@@ -7,8 +7,8 @@
 import javax.swing.table.AbstractTableModel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.SelectionChangedListener;
 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.layer.LayerManager.LayerAddEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
@@ -44,5 +44,5 @@
     public void register() {
         DataSet.addSelectionListener(this);
-        Main.getLayerManager().addActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(this);
     }
 
@@ -52,5 +52,5 @@
     public void unregister() {
         DataSet.removeSelectionListener(this);
-        Main.getLayerManager().removeActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(this);
     }
 
@@ -62,5 +62,5 @@
     @Override
     public int getRowCount() {
-        if (Main.getLayerManager().getEditLayer() != layer)
+        if (MainApplication.getLayerManager().getEditLayer() != layer)
             return 0;
         return cache.size();
@@ -104,5 +104,5 @@
     @Override
     public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
-        if (layer == Main.getLayerManager().getEditLayer()) {
+        if (layer == MainApplication.getLayerManager().getEditLayer()) {
             cache.clear();
             cache.addAll(newSelection);
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java	(revision 12636)
@@ -27,5 +27,4 @@
 import javax.swing.tree.TreeSelectionModel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -43,4 +42,5 @@
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.data.validation.util.MultipleNameVisitor;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.preferences.validator.ValidatorPreference;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -425,5 +425,5 @@
     @Override
     public void destroy() {
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         if (ds != null) {
             ds.removeDataSetListener(this);
Index: trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java	(revision 12636)
@@ -66,5 +66,5 @@
     protected HistoryBrowserDialogManager() {
         dialogs = new HashMap<>();
-        Main.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java	(revision 12636)
@@ -36,4 +36,5 @@
 import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
 import org.openstreetmap.josm.gui.JosmUserIdentityManager;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
@@ -101,10 +102,10 @@
 
         if (Main.main != null) {
-            OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+            OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
             if (editLayer != null) {
                 editLayer.data.addDataSetListener(this);
             }
         }
-        Main.getLayerManager().addActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(this);
     }
 
@@ -170,5 +171,5 @@
         if (history.getNumVersions() > 0) {
             HistoryOsmPrimitive newLatest = null;
-            OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+            OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
             if (editLayer != null) {
                 OsmPrimitive p = editLayer.data.getPrimitiveById(history.getId(), history.getType());
@@ -531,9 +532,9 @@
      */
     public void unlinkAsListener() {
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         if (editLayer != null) {
             editLayer.data.removeDataSetListener(this);
         }
-        Main.getLayerManager().removeActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(this);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java	(revision 12636)
@@ -21,5 +21,4 @@
 import javax.swing.event.TableModelListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -250,5 +249,5 @@
             OsmPrimitive p = getPrimitiveToZoom();
             if (p != null) {
-                OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+                OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
                 if (editLayer != null) {
                     editLayer.data.setSelected(p.getPrimitiveId());
@@ -266,5 +265,5 @@
             if (primitiveId == null)
                 return null;
-            OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+            OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
             if (editLayer == null)
                 return null;
@@ -273,5 +272,5 @@
 
         public void updateEnabledState() {
-            setEnabled(Main.getLayerManager().getEditLayer() != null && getPrimitiveToZoom() != null);
+            setEnabled(MainApplication.getLayerManager().getEditLayer() != null && getPrimitiveToZoom() != null);
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java	(revision 12636)
@@ -30,4 +30,5 @@
 import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
 import org.openstreetmap.josm.gui.JosmUserIdentityManager;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.ChangesetDialog;
 import org.openstreetmap.josm.gui.dialogs.changeset.ChangesetCacheManager;
@@ -155,5 +156,5 @@
         String text;
         if (isLatest) {
-            OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+            OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
             text = tr("<html>Version <strong>{0}</strong> currently edited in layer ''{1}''</html>",
                     Long.toString(version),
Index: trunk/src/org/openstreetmap/josm/gui/io/AbstractUploadTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/AbstractUploadTask.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/io/AbstractUploadTask.java	(revision 12636)
@@ -86,5 +86,5 @@
         // FIXME: should now about the layer this task is running for. might
         // be different from the current edit layer
-        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
         if (layer == null)
             throw new IllegalStateException(tr("Failed to update primitive with id {0} because current edit layer is null", id));
@@ -275,5 +275,5 @@
         );
         if (ret == 0) {
-            DownloadReferrersAction.downloadReferrers(Main.getLayerManager().getEditLayer(), Arrays.asList(conflict.a));
+            DownloadReferrersAction.downloadReferrers(MainApplication.getLayerManager().getEditLayer(), Arrays.asList(conflict.a));
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java	(revision 12636)
@@ -24,4 +24,5 @@
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -129,7 +130,7 @@
 
         // Append downloaded data to JOSM
-        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
         if (layer == null || this.newLayer)
-            Main.getLayerManager().addLayer(tmpLayer);
+            MainApplication.getLayerManager().addLayer(tmpLayer);
         else
             layer.mergeFrom(tmpLayer);
@@ -152,5 +153,5 @@
         // Warm about deleted primitives
         final Set<PrimitiveId> del = new HashSet<>();
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         for (PrimitiveId id : ids) {
             OsmPrimitive osm = ds.getPrimitiveById(id);
Index: trunk/src/org/openstreetmap/josm/gui/io/TagSettingsPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/TagSettingsPanel.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/io/TagSettingsPanel.java	(revision 12636)
@@ -12,6 +12,6 @@
 import javax.swing.event.TableModelListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Changeset;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.tagging.TagEditorPanel;
 import org.openstreetmap.josm.gui.tagging.TagModel;
@@ -99,5 +99,5 @@
      */
     public void startUserInput() {
-        pnlTagEditor.initAutoCompletion(Main.getLayerManager().getEditLayer());
+        pnlTagEditor.initAutoCompletion(MainApplication.getLayerManager().getEditLayer());
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/AutosaveTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/AutosaveTask.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/layer/AutosaveTask.java	(revision 12636)
@@ -151,5 +151,5 @@
 
             new Timer(true).schedule(this, TimeUnit.SECONDS.toMillis(1), TimeUnit.SECONDS.toMillis(PROP_INTERVAL.get()));
-            Main.getLayerManager().addAndFireLayerChangeListener(this);
+            MainApplication.getLayerManager().addAndFireLayerChangeListener(this);
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 12636)
@@ -889,9 +889,9 @@
                 gpxLayer.setAssociatedFile(new File(getAssociatedFile().getParentFile(), filename));
             }
-            Main.getLayerManager().addLayer(gpxLayer);
+            MainApplication.getLayerManager().addLayer(gpxLayer);
             if (Main.pref.getBoolean("marker.makeautomarkers", true) && !gpxData.waypoints.isEmpty()) {
-                Main.getLayerManager().addLayer(new MarkerLayer(gpxData, tr("Converted from: {0}", getName()), null, gpxLayer));
-            }
-            Main.getLayerManager().removeLayer(OsmDataLayer.this);
+                MainApplication.getLayerManager().addLayer(new MarkerLayer(gpxData, tr("Converted from: {0}", getName()), null, gpxLayer));
+            }
+            MainApplication.getLayerManager().removeLayer(OsmDataLayer.this);
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/layer/ValidatorLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/ValidatorLayer.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/layer/ValidatorLayer.java	(revision 12636)
@@ -14,5 +14,4 @@
 import javax.swing.tree.TreeNode;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.RenameLayerAction;
 import org.openstreetmap.josm.data.Bounds;
@@ -49,5 +48,5 @@
     public ValidatorLayer() {
         super(tr("Validation errors"));
-        Main.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
         MainApplication.getMap().validatorDialog.tree.addInvalidationListener(invalidator);
     }
@@ -175,5 +174,5 @@
     public synchronized void destroy() {
         MainApplication.getMap().validatorDialog.tree.removeInvalidationListener(invalidator);
-        Main.getLayerManager().removeLayerChangeListener(this);
+        MainApplication.getLayerManager().removeLayerChangeListener(this);
         super.destroy();
     }
Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 12636)
@@ -182,5 +182,5 @@
                 // If none, we'll zoom to the bounding box of the layer with the photos.
                 boolean boundingBoxedLayerFound = false;
-                for (Layer l: Main.getLayerManager().getLayers()) {
+                for (Layer l: MainApplication.getLayerManager().getLayers()) {
                     if (l != yLayer) {
                         BoundingXYVisitor bbox = new BoundingXYVisitor();
@@ -544,5 +544,5 @@
     public void actionPerformed(ActionEvent ae) {
         // Construct the list of loaded GPX tracks
-        Collection<Layer> layerLst = Main.getLayerManager().getLayers();
+        Collection<Layer> layerLst = MainApplication.getLayerManager().getLayers();
         GpxDataWrapper defaultItem = null;
         for (Layer cur : layerLst) {
Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 12636)
@@ -294,5 +294,5 @@
             }
             if (layer != null) {
-                Main.getLayerManager().addLayer(layer);
+                MainApplication.getLayerManager().addLayer(layer);
 
                 if (!canceled && layer.data != null && !layer.data.isEmpty()) {
@@ -888,5 +888,5 @@
     private void clearOtherCurrentPhotos() {
         for (GeoImageLayer layer:
-                 Main.getLayerManager().getLayersOfType(GeoImageLayer.class)) {
+                 MainApplication.getLayerManager().getLayersOfType(GeoImageLayer.class)) {
             if (layer != this) {
                 layer.clearCurrentPhoto(false);
@@ -992,6 +992,6 @@
         mapModeListener.mapModeChange(null, MainApplication.getMap().mapMode);
 
-        Main.getLayerManager().addActiveLayerChangeListener(e -> {
-            if (Main.getLayerManager().getActiveLayer() == this) {
+        MainApplication.getLayerManager().addActiveLayerChangeListener(e -> {
+            if (MainApplication.getLayerManager().getActiveLayer() == this) {
                 // only in select mode it is possible to click the images
                 MainApplication.getMap().selectSelectTool(false);
@@ -999,5 +999,5 @@
         });
 
-        Main.getLayerManager().addLayerChangeListener(new LayerChangeListener() {
+        MainApplication.getLayerManager().addLayerChangeListener(new LayerChangeListener() {
             @Override
             public void layerAdded(LayerAddEvent e) {
@@ -1019,5 +1019,5 @@
                     data = null;
                     // stop listening to layer change events
-                    Main.getLayerManager().removeLayerChangeListener(this);
+                    MainApplication.getLayerManager().removeLayerChangeListener(this);
                 }
             }
Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 12636)
@@ -84,6 +84,6 @@
         tr("Tool: {0}", tr("Display geotagged images")), KeyEvent.VK_Y, Shortcut.DIRECT), 200);
         build();
-        Main.getLayerManager().addActiveLayerChangeListener(this);
-        Main.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
     }
 
@@ -205,6 +205,6 @@
     @Override
     public void destroy() {
-        Main.getLayerManager().removeActiveLayerChangeListener(this);
-        Main.getLayerManager().removeLayerChangeListener(this);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().removeLayerChangeListener(this);
         super.destroy();
     }
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java	(revision 12636)
@@ -29,4 +29,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -166,6 +167,6 @@
         }
         osmLayer.setUploadDiscouraged(true);
-        Main.getLayerManager().addLayer(osmLayer);
-        Main.getLayerManager().removeLayer(layer);
+        MainApplication.getLayerManager().addLayer(osmLayer);
+        MainApplication.getLayerManager().removeLayer(layer);
     }
 }
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java	(revision 12636)
@@ -116,5 +116,5 @@
     @SuppressWarnings({ "rawtypes", "unchecked" })
     protected AbstractTileSourceLayer<? extends AbstractTMSTileSource> askedLayer() {
-        List<AbstractTileSourceLayer> targetLayers = Main.getLayerManager().getLayersOfType(AbstractTileSourceLayer.class);
+        List<AbstractTileSourceLayer> targetLayers = MainApplication.getLayerManager().getLayersOfType(AbstractTileSourceLayer.class);
         if (targetLayers.isEmpty()) {
             if (!GraphicsEnvironment.isHeadless()) {
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 12636)
@@ -115,5 +115,5 @@
                 importAudio(file, ml, firstStartTime, m);
             }
-            Main.getLayerManager().addLayer(ml);
+            MainApplication.getLayerManager().addLayer(ml);
             MainApplication.getMap().repaint();
         }
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/MarkersFromNamedPointsAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/MarkersFromNamedPointsAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/MarkersFromNamedPointsAction.java	(revision 12636)
@@ -9,6 +9,6 @@
 import javax.swing.AbstractAction;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.gpx.GpxData;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
@@ -39,5 +39,5 @@
         MarkerLayer ml = new MarkerLayer(namedTrackPoints, tr("Named Trackpoints from {0}", layer.getName()), layer.getAssociatedFile(), layer);
         if (!ml.data.isEmpty()) {
-            Main.getLayerManager().addLayer(ml);
+            MainApplication.getLayerManager().addLayer(ml);
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 12636)
@@ -417,10 +417,10 @@
             return;
         Marker m = null;
-        Layer l = Main.getLayerManager().getActiveLayer();
+        Layer l = MainApplication.getLayerManager().getActiveLayer();
         if (l != null) {
             m = getAdjacentMarker(startMarker, next, l);
         }
         if (m == null) {
-            for (Layer layer : Main.getLayerManager().getLayers()) {
+            for (Layer layer : MainApplication.getLayerManager().getLayers()) {
                 m = getAdjacentMarker(startMarker, next, layer);
                 if (m != null) {
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java	(revision 12636)
@@ -12,5 +12,4 @@
 import javax.swing.JMenu;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.gui.MainApplication;
@@ -67,9 +66,10 @@
         @Override
         public void updateEnabledState() {
-            setEnabled(MainApplication.isDisplayingMapView() && (Main.getLayerManager().getEditLayer() != null || mapHasGpxorMarkerLayer()));
+            setEnabled(MainApplication.isDisplayingMapView()
+                    && (MainApplication.getLayerManager().getEditLayer() != null || mapHasGpxorMarkerLayer()));
         }
 
         private static boolean mapHasGpxorMarkerLayer() {
-            for (Layer layer : Main.getLayerManager().getLayers()) {
+            for (Layer layer : MainApplication.getLayerManager().getLayers()) {
                 if (layer instanceof GpxLayer || layer instanceof MarkerLayer) {
                     return true;
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java	(revision 12636)
@@ -426,5 +426,5 @@
 
             // Trigger a repaint of all data layers
-            Main.getLayerManager().getLayers()
+            MainApplication.getLayerManager().getLayers()
                 .stream()
                 .filter(layer -> layer instanceof OsmDataLayer)
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 12636)
@@ -45,4 +45,5 @@
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
@@ -128,5 +129,5 @@
      */
     public TaggingPreset() {
-        Main.getLayerManager().addActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(this);
         updateEnabledState();
     }
@@ -380,5 +381,5 @@
             return;
         }
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         Collection<OsmPrimitive> participants = Collections.emptyList();
         if (Main.main != null && ds != null) {
@@ -411,5 +412,6 @@
                 members.add(rm);
             }
-            SwingUtilities.invokeLater(() -> RelationEditor.getEditor(Main.getLayerManager().getEditLayer(), r, members).setVisible(true));
+            SwingUtilities.invokeLater(() -> RelationEditor.getEditor(
+                    MainApplication.getLayerManager().getEditLayer(), r, members).setVisible(true));
         }
         ds.setSelected(ds.getSelected()); // force update
@@ -553,5 +555,5 @@
 
     protected final void updateEnabledState() {
-        setEnabled(Main.main != null && Main.getLayerManager().getEditDataSet() != null);
+        setEnabled(Main.main != null && MainApplication.getLayerManager().getEditDataSet() != null);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItem.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItem.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItem.java	(revision 12636)
@@ -20,4 +20,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
@@ -42,5 +43,5 @@
     protected void initAutoCompletionField(AutoCompletingTextField field, List<String> keys) {
         if (Main.main == null) return;
-        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
         if (layer == null) {
             return;
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchAction.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchAction.java	(revision 12636)
@@ -9,4 +9,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -30,5 +31,5 @@
     public void actionPerformed(ActionEvent e) {
 
-        if (Main.getLayerManager().getEditLayer() == null)
+        if (MainApplication.getLayerManager().getEditLayer() == null)
             return;
 
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java	(revision 12636)
@@ -13,4 +13,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -43,5 +44,5 @@
         @Override
         public void actionPerformed(ActionEvent e) {
-            if (Main.getLayerManager().getEditLayer() != null) {
+            if (MainApplication.getLayerManager().getEditLayer() != null) {
                 TaggingPresetSearchPrimitiveDialog.getInstance().showDialog();
             }
@@ -86,6 +87,6 @@
             TaggingPreset preset = selector.getSelectedPresetAndUpdateClassification();
             if (preset != null) {
-                final Set<OsmPrimitive> matching = new HashSet<>(Main.getLayerManager().getEditDataSet().getPrimitives(preset));
-                Main.getLayerManager().getEditDataSet().setSelected(matching);
+                final Set<OsmPrimitive> matching = new HashSet<>(MainApplication.getLayerManager().getEditDataSet().getPrimitives(preset));
+                MainApplication.getLayerManager().getEditDataSet().setSelected(matching);
             }
         }
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java	(revision 12636)
@@ -38,4 +38,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.tagging.presets.items.ComboMultiSelect;
 import org.openstreetmap.josm.gui.tagging.presets.items.Key;
@@ -235,5 +236,5 @@
         boolean inTags = ckSearchInTags != null && ckSearchInTags.isSelected();
 
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         Collection<OsmPrimitive> selected = (ds == null) ? Collections.<OsmPrimitive>emptyList() : ds.getSelected();
         final List<PresetClassification> result = classifications.getMatchingPresets(
@@ -355,6 +356,6 @@
                 typesInSelectionDirty = false;
                 typesInSelection.clear();
-                if (Main.main == null || Main.getLayerManager().getEditDataSet() == null) return typesInSelection;
-                for (OsmPrimitive primitive : Main.getLayerManager().getEditDataSet().getSelected()) {
+                if (Main.main == null || MainApplication.getLayerManager().getEditDataSet() == null) return typesInSelection;
+                for (OsmPrimitive primitive : MainApplication.getLayerManager().getEditDataSet().getSelected()) {
                     typesInSelection.add(TaggingPresetType.forPrimitive(primitive));
                 }
Index: trunk/src/org/openstreetmap/josm/gui/util/HighlightHelper.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/util/HighlightHelper.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/util/HighlightHelper.java	(revision 12636)
@@ -8,8 +8,8 @@
 import java.util.Set;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.MainApplication;
 
 /**
@@ -122,5 +122,5 @@
      */
     public void findAllHighlighted() {
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         if (ds != null) {
             highlightedPrimitives.addAll(ds.allNonDeletedPrimitives());
@@ -132,5 +132,5 @@
      */
     public static void clearAllHighlighted() {
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         if (ds != null) {
             for (OsmPrimitive p: ds.allNonDeletedPrimitives()) {
Index: trunk/src/org/openstreetmap/josm/gui/widgets/OsmPrimitivesTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/OsmPrimitivesTable.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/OsmPrimitivesTable.java	(revision 12636)
@@ -10,7 +10,7 @@
 import javax.swing.table.TableColumnModel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ZoomToAction;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 
@@ -94,6 +94,6 @@
      */
     public void registerListeners() {
-        Main.getLayerManager().addLayerChangeListener(zoomToAction);
-        Main.getLayerManager().addActiveLayerChangeListener(zoomToAction);
+        MainApplication.getLayerManager().addLayerChangeListener(zoomToAction);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(zoomToAction);
     }
 
@@ -103,6 +103,6 @@
      */
     public void unregisterListeners() {
-        Main.getLayerManager().removeLayerChangeListener(zoomToAction);
-        Main.getLayerManager().removeActiveLayerChangeListener(zoomToAction);
+        MainApplication.getLayerManager().removeLayerChangeListener(zoomToAction);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(zoomToAction);
     }
 
Index: trunk/src/org/openstreetmap/josm/io/GpxExporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/GpxExporter.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/io/GpxExporter.java	(revision 12636)
@@ -28,4 +28,5 @@
 import org.openstreetmap.josm.data.gpx.GpxData;
 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;
@@ -172,5 +173,5 @@
             gpxData = ((GpxLayer) layer).data;
         } else {
-            gpxData = OsmDataLayer.toGpxData(Main.getLayerManager().getEditDataSet(), file);
+            gpxData = OsmDataLayer.toGpxData(MainApplication.getLayerManager().getEditDataSet(), file);
         }
 
Index: trunk/src/org/openstreetmap/josm/io/GpxImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/GpxImporter.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/io/GpxImporter.java	(revision 12636)
@@ -13,4 +13,5 @@
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.gpx.GpxData;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
@@ -120,8 +121,8 @@
         GuiHelper.runInEDT(() -> {
             if (data.markerLayer != null) {
-                Main.getLayerManager().addLayer(data.markerLayer);
+                MainApplication.getLayerManager().addLayer(data.markerLayer);
             }
             if (data.gpxLayer != null) {
-                Main.getLayerManager().addLayer(data.gpxLayer);
+                MainApplication.getLayerManager().addLayer(data.gpxLayer);
             }
             data.postLayerTask.run();
Index: trunk/src/org/openstreetmap/josm/io/NMEAImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/NMEAImporter.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/io/NMEAImporter.java	(revision 12636)
@@ -14,4 +14,5 @@
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
@@ -52,9 +53,9 @@
 
                 GuiHelper.runInEDT(() -> {
-                    Main.getLayerManager().addLayer(gpxLayer);
+                    MainApplication.getLayerManager().addLayer(gpxLayer);
                     if (Main.pref.getBoolean("marker.makeautomarkers", true)) {
                         MarkerLayer ml = new MarkerLayer(r.data, tr("Markers from {0}", fn), fileFinal, gpxLayer);
                         if (!ml.data.isEmpty()) {
-                            Main.getLayerManager().addLayer(ml);
+                            MainApplication.getLayerManager().addLayer(ml);
                         }
                     }
Index: trunk/src/org/openstreetmap/josm/io/NoteImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/NoteImporter.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/io/NoteImporter.java	(revision 12636)
@@ -9,5 +9,4 @@
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.notes.Note;
@@ -39,6 +38,6 @@
         try (InputStream is = Compression.getUncompressedFileInputStream(file)) {
             final NoteLayer layer = loadLayer(is, file, file.getName(), progressMonitor);
-            if (!Main.getLayerManager().containsLayer(layer)) {
-                Main.getLayerManager().addLayer(layer);
+            if (!MainApplication.getLayerManager().containsLayer(layer)) {
+                MainApplication.getLayerManager().addLayer(layer);
             }
         } catch (SAXException e) {
@@ -65,5 +64,5 @@
         List<NoteLayer> noteLayers = null;
         if (MainApplication.getMap() != null) {
-            noteLayers = Main.getLayerManager().getLayersOfType(NoteLayer.class);
+            noteLayers = MainApplication.getLayerManager().getLayersOfType(NoteLayer.class);
         }
         final NoteLayer layer;
Index: trunk/src/org/openstreetmap/josm/io/OsmApi.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 12636)
@@ -243,8 +243,8 @@
              * been disabled! */
             if (MainApplication.isDisplayingMapView()) {
-                for (Layer l : Main.getLayerManager().getLayersOfType(ImageryLayer.class)) {
+                for (Layer l : MainApplication.getLayerManager().getLayersOfType(ImageryLayer.class)) {
                     if (((ImageryLayer) l).getInfo().isBlacklisted()) {
                         Logging.info(tr("Removed layer {0} because it is not allowed by the configured API.", l.getName()));
-                        Main.getLayerManager().removeLayer(l);
+                        MainApplication.getLayerManager().removeLayer(l);
                     }
                 }
Index: trunk/src/org/openstreetmap/josm/io/OsmChangeImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmChangeImporter.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/io/OsmChangeImporter.java	(revision 12636)
@@ -14,4 +14,5 @@
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -66,5 +67,5 @@
                         JOptionPane.INFORMATION_MESSAGE);
             }
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             layer.onPostLoadFromFile();
         });
Index: trunk/src/org/openstreetmap/josm/io/OsmImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmImporter.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/io/OsmImporter.java	(revision 12636)
@@ -15,4 +15,5 @@
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -99,5 +100,5 @@
         GuiHelper.runInEDT(() -> {
             OsmDataLayer layer = data.getLayer();
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             data.getPostLayerTask().run();
             data.getLayer().onPostLoadFromFile();
Index: trunk/src/org/openstreetmap/josm/io/WMSLayerImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/WMSLayerImporter.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/io/WMSLayerImporter.java	(revision 12636)
@@ -11,5 +11,4 @@
 import java.util.Map;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.Preferences;
@@ -87,5 +86,5 @@
         // FIXME: remove UI stuff from IO subsystem
         GuiHelper.runInEDT(() -> {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             if (zoomTo != null) {
                 MainApplication.getMap().mapView.zoomTo(zoomTo);
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java	(revision 12636)
@@ -32,4 +32,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.util.TableHelper;
@@ -251,5 +252,5 @@
     protected void buttonAction(int buttonIndex, ActionEvent evt) {
         // if layer all layers were closed, ignore all actions
-        if (buttonIndex != 2 && Main.getLayerManager().getEditDataSet() != null) {
+        if (buttonIndex != 2 && MainApplication.getLayerManager().getEditDataSet() != null) {
             TableModel tm = propertyTable.getModel();
             for (int i = 0; i < tm.getRowCount(); i++) {
@@ -309,5 +310,5 @@
     public static void addTags(String[][] keyValue, String sender, Collection<? extends OsmPrimitive> primitives) {
         if (trustedSenders.contains(sender)) {
-            if (Main.getLayerManager().getEditDataSet() != null) {
+            if (MainApplication.getLayerManager().getEditDataSet() != null) {
                 for (String[] row : keyValue) {
                     Main.main.undoRedo.add(new ChangePropertyCommand(primitives, row[0], row[1]));
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java	(revision 12636)
@@ -102,5 +102,5 @@
         }
 
-        Main.getLayerManager().getEditDataSet().setSelected(node);
+        MainApplication.getLayerManager().getEditDataSet().setSelected(node);
         if (PermissionPrefWithDefault.CHANGE_VIEWPORT.isAllowed()) {
             AutoScaleAction.autoScale("selection");
@@ -120,5 +120,5 @@
             throw new RequestHandlerBadRequestException("NumberFormatException ("+e.getMessage()+')', e);
         }
-        if (Main.getLayerManager().getEditLayer() == null) {
+        if (MainApplication.getLayerManager().getEditLayer() == null) {
              throw new RequestHandlerBadRequestException(tr("There is no layer opened to add node"));
         }
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java	(revision 12636)
@@ -111,5 +111,5 @@
             throw new RequestHandlerBadRequestException(tr("One node ways"));
         }
-        if (Main.getLayerManager().getEditLayer() == null) {
+        if (MainApplication.getLayerManager().getEditLayer() == null) {
              throw new RequestHandlerBadRequestException(tr("There is no layer opened to add way"));
         }
@@ -168,5 +168,5 @@
         commands.add(new AddCommand(way));
         Main.main.undoRedo.add(new SequenceCommand(tr("Add way"), commands));
-        Main.getLayerManager().getEditDataSet().setSelected(way);
+        MainApplication.getLayerManager().getEditDataSet().setSelected(way);
         if (PermissionPrefWithDefault.CHANGE_VIEWPORT.isAllowed()) {
             AutoScaleAction.autoScale("selection");
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java	(revision 12636)
@@ -6,5 +6,4 @@
 import java.util.Arrays;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
@@ -97,5 +96,5 @@
         final ImageryInfo imgInfo = buildImageryInfo();
         if (MainApplication.isDisplayingMapView()) {
-            for (ImageryLayer layer : Main.getLayerManager().getLayersOfType(ImageryLayer.class)) {
+            for (ImageryLayer layer : MainApplication.getLayerManager().getLayersOfType(ImageryLayer.class)) {
                 if (layer.getInfo().equals(imgInfo)) {
                     Logging.info("Imagery layer already exists: "+imgInfo);
@@ -106,5 +105,5 @@
         GuiHelper.runInEDT(() -> {
             try {
-                Main.getLayerManager().addLayer(ImageryLayer.create(imgInfo));
+                MainApplication.getLayerManager().addLayer(ImageryLayer.create(imgInfo));
             } catch (IllegalArgumentException e) {
                 Logging.log(Logging.LEVEL_ERROR, e);
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java	(revision 12636)
@@ -12,5 +12,4 @@
 import java.util.concurrent.Future;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask;
@@ -123,5 +122,5 @@
                         // find out whether some data has already been downloaded
                         Area present = null;
-                        DataSet ds = Main.getLayerManager().getEditDataSet();
+                        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
                         if (ds != null) {
                             present = ds.getDataSourceArea();
@@ -160,5 +159,5 @@
         if (args.containsKey("addtags")) {
             GuiHelper.executeByMainWorkerInEDT(() -> {
-                DataSet ds = Main.getLayerManager().getEditDataSet();
+                DataSet ds = MainApplication.getLayerManager().getEditDataSet();
                 if (ds == null) // e.g. download failed
                     return;
@@ -173,5 +172,5 @@
             GuiHelper.executeByMainWorkerInEDT(() -> {
                 Set<OsmPrimitive> newSel = new HashSet<>();
-                DataSet ds = Main.getLayerManager().getEditDataSet();
+                DataSet ds = MainApplication.getLayerManager().getEditDataSet();
                 if (ds == null) // e.g. download failed
                     return;
@@ -197,5 +196,5 @@
                 final SearchCompiler.Match search = SearchCompiler.compile(args.get("search"));
                 MainApplication.worker.submit(() -> {
-                    final DataSet ds = Main.getLayerManager().getEditDataSet();
+                    final DataSet ds = MainApplication.getLayerManager().getEditDataSet();
                     final Collection<OsmPrimitive> filteredPrimitives = SubclassFilteredCollection.filter(ds.allPrimitives(), search);
                     ds.setSelected(filteredPrimitives);
@@ -215,10 +214,10 @@
         if (args.containsKey("changeset_comment") || args.containsKey("changeset_source")) {
             MainApplication.worker.submit(() -> {
-                if (Main.getLayerManager().getEditDataSet() != null) {
+                if (MainApplication.getLayerManager().getEditDataSet() != null) {
                     if (args.containsKey("changeset_comment")) {
-                        Main.getLayerManager().getEditDataSet().addChangeSetTag("comment", args.get("changeset_comment"));
+                        MainApplication.getLayerManager().getEditDataSet().addChangeSetTag("comment", args.get("changeset_comment"));
                     }
                     if (args.containsKey("changeset_source")) {
-                        Main.getLayerManager().getEditDataSet().addChangeSetTag("source", args.get("changeset_source"));
+                        MainApplication.getLayerManager().getEditDataSet().addChangeSetTag("source", args.get("changeset_source"));
                     }
                 }
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java	(revision 12636)
@@ -9,5 +9,4 @@
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -72,5 +71,5 @@
             MainApplication.worker.submit(() -> {
                 final List<PrimitiveId> downloaded = task.getDownloadedId();
-                final DataSet ds = Main.getLayerManager().getEditDataSet();
+                final DataSet ds = MainApplication.getLayerManager().getEditDataSet();
                 if (downloaded != null) {
                     GuiHelper.runInEDT(() -> ds.setSelected(downloaded));
Index: trunk/src/org/openstreetmap/josm/io/session/MarkerSessionExporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/session/MarkerSessionExporter.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/io/session/MarkerSessionExporter.java	(revision 12636)
@@ -17,6 +17,6 @@
 import javax.swing.SwingConstants;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.gpx.GpxData;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.markerlayer.Marker;
@@ -44,5 +44,5 @@
     public Collection<Layer> getDependencies() {
         Layer gpxLayer = layer.fromLayer;
-        if (gpxLayer != null && Main.getLayerManager().containsLayer(gpxLayer))
+        if (gpxLayer != null && MainApplication.getLayerManager().containsLayer(gpxLayer))
             return Collections.singleton(gpxLayer);
         return Collections.emptySet();
Index: trunk/src/org/openstreetmap/josm/tools/Geometry.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Geometry.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/tools/Geometry.java	(revision 12636)
@@ -103,5 +103,5 @@
         }
 
-        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
         DataSet dataset = ways.get(0).getDataSet();
 
Index: trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 12635)
+++ trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 12636)
@@ -23,4 +23,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.OpenFileAction.OpenFileTask;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.io.OsmTransferException;
 import org.xml.sax.SAXException;
@@ -172,5 +173,5 @@
             break;
         case "handleQuitRequestWith":
-            boolean closed = Main.exitJosm(false, 0, null);
+            boolean closed = MainApplication.exitJosm(false, 0, null);
             if (args[1] != null) {
                 try {
