Index: applications/editors/josm/plugins/utilsplugin2/build.xml
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/build.xml	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/build.xml	(revision 33579)
@@ -5,5 +5,5 @@
     <property name="commit.message" value="[josm_utilsplugin2]: select boundary by double-click; multitagger table highlights"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="12666"/>
+    <property name="plugin.main.version" value="12678"/>
 
     <property name="plugin.author" value="Kalle Lampila, Upliner, Zverik, akks, joshdoe and others"/>
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/UtilsPlugin2.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/UtilsPlugin2.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/UtilsPlugin2.java	(revision 33579)
@@ -5,6 +5,6 @@
 import javax.swing.JMenuItem;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.search.SearchCompiler;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MainMenu;
 import org.openstreetmap.josm.gui.MapFrame;
@@ -93,10 +93,10 @@
         instance = this;
 
-        JMenu editMenu = Main.main.menu.editMenu;
-        JMenu toolsMenu = Main.main.menu.moreToolsMenu;
-        JMenu dataMenu = Main.main.menu.dataMenu;
-        JMenu selectionMenu = Main.main.menu.selectionMenu;
+        JMenu editMenu = MainApplication.getMenu().editMenu;
+        JMenu toolsMenu = MainApplication.getMenu().moreToolsMenu;
+        JMenu dataMenu = MainApplication.getMenu().dataMenu;
+        JMenu selectionMenu = MainApplication.getMenu().selectionMenu;
 
-        copyTags = MainMenu.addAfter(editMenu, new CopyTagsAction(), false, Main.main.menu.copy);
+        copyTags = MainMenu.addAfter(editMenu, new CopyTagsAction(), false, MainApplication.getMenu().copy);
 
         addIntersections = MainMenu.add(toolsMenu, new AddIntersectionsAction());
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/AddIntersectionsAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/AddIntersectionsAction.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/AddIntersectionsAction.java	(revision 33579)
@@ -15,5 +15,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.command.AddCommand;
@@ -23,4 +22,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.Geometry;
@@ -56,5 +56,5 @@
         Geometry.addIntersections(ways, false, cmds);
         if (!cmds.isEmpty()) {
-            Main.main.undoRedo.add(new SequenceCommand(tr("Add nodes at intersections"), cmds));
+            MainApplication.undoRedo.add(new SequenceCommand(tr("Add nodes at intersections"), cmds));
             Set<Node> nodes = new HashSet<>(10);
             // find and select newly added nodes
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/AlignWayNodesAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/AlignWayNodesAction.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/AlignWayNodesAction.java	(revision 33579)
@@ -15,5 +15,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.command.Command;
@@ -23,4 +22,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -128,5 +128,5 @@
 
         if (!commands.isEmpty())
-            Main.main.undoRedo.add(new SequenceCommand(TITLE, commands));
+            MainApplication.undoRedo.add(new SequenceCommand(TITLE, commands));
     }
 
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/ExtractPointAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/ExtractPointAction.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/ExtractPointAction.java	(revision 33579)
@@ -24,4 +24,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -56,7 +57,7 @@
         List<Command> cmds = new LinkedList<>();
 
-        Point p = Main.map.mapView.getMousePosition();
+        Point p = MainApplication.getMap().mapView.getMousePosition();
         if (p != null)
-            cmds.add(new MoveCommand(nd, Main.map.mapView.getLatLon(p.x, p.y)));
+            cmds.add(new MoveCommand(nd, MainApplication.getMap().mapView.getLatLon(p.x, p.y)));
         List<OsmPrimitive> refs = nd.getReferrers();
         cmds.add(new AddCommand(ndCopy));
@@ -71,5 +72,5 @@
             }
         }
-        if (cmds.size() > 1) Main.main.undoRedo.add(new SequenceCommand(tr("Extract node from line"), cmds));
+        if (cmds.size() > 1) MainApplication.undoRedo.add(new SequenceCommand(tr("Extract node from line"), cmds));
     }
 
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/PasteRelationsAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/PasteRelationsAction.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/PasteRelationsAction.java	(revision 33579)
@@ -24,6 +24,8 @@
 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.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -53,5 +55,5 @@
             data = ((PrimitiveTransferData) ClipboardUtils.getClipboard().getData(PrimitiveTransferData.DATA_FLAVOR)).getDirectlyAdded();
         } catch (UnsupportedFlavorException | IOException ex) {
-            Main.warn(ex);
+            Logging.warn(ex);
         }
         for (PrimitiveData pdata : data) {
@@ -99,5 +101,5 @@
 
         if (!commands.isEmpty())
-            Main.main.undoRedo.add(new SequenceCommand(TITLE, commands));
+            MainApplication.undoRedo.add(new SequenceCommand(TITLE, commands));
     }
 
@@ -113,8 +115,8 @@
                     && ClipboardUtils.getClipboard().isDataFlavorAvailable(PrimitiveTransferData.DATA_FLAVOR));
         } catch (IllegalStateException e) {
-            Main.warn(e);
+            Logging.warn(e);
         } catch (NullPointerException e) {
             // JDK-6322854: On Linux/X11, NPE can happen for unknown reasons, on all versions of Java
-            Main.error(e);
+            Logging.error(e);
         }
     }
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/SplitObjectAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/SplitObjectAction.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/SplitObjectAction.java	(revision 33579)
@@ -18,5 +18,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.actions.SplitWayAction;
@@ -25,4 +24,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -210,7 +210,7 @@
             SplitWayAction.SplitWayResult result = SplitWayAction.splitWay(
                     getLayerManager().getEditLayer(), selectedWay, wayChunks, Collections.<OsmPrimitive>emptyList());
-            Main.main.undoRedo.add(result.getCommand());
+            MainApplication.undoRedo.add(result.getCommand());
             if (splitWay != null)
-                Main.main.undoRedo.add(new DeleteCommand(splitWay));
+                MainApplication.undoRedo.add(new DeleteCommand(splitWay));
             getLayerManager().getEditDataSet().setSelected(result.getNewSelection());
         }
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/SplitOnIntersectionsAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/SplitOnIntersectionsAction.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/SplitOnIntersectionsAction.java	(revision 33579)
@@ -15,5 +15,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.actions.SplitWayAction;
@@ -23,4 +22,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -95,5 +95,5 @@
 
         if (!list.isEmpty()) {
-            Main.main.undoRedo.add(list.size() == 1 ? list.get(0) : new SequenceCommand(TITLE, list));
+            MainApplication.undoRedo.add(list.size() == 1 ? list.get(0) : new SequenceCommand(TITLE, list));
             getLayerManager().getEditDataSet().clearSelection();
         }
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/SymmetryAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/SymmetryAction.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/SymmetryAction.java	(revision 33579)
@@ -22,4 +22,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -87,6 +88,6 @@
         }
 
-        Main.main.undoRedo.add(new SequenceCommand(tr("Symmetry"), cmds));
-        Main.map.repaint();
+        MainApplication.undoRedo.add(new SequenceCommand(tr("Symmetry"), cmds));
+        MainApplication.getMap().repaint();
     }
 
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/TagBufferAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/TagBufferAction.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/TagBufferAction.java	(revision 33579)
@@ -15,5 +15,4 @@
 import java.util.function.Predicate;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
@@ -21,4 +20,5 @@
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
@@ -69,5 +69,5 @@
 
         if (!commands.isEmpty())
-            Main.main.undoRedo.add(new SequenceCommand(TITLE, commands));
+            MainApplication.undoRedo.add(new SequenceCommand(TITLE, commands));
     }
 
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/TagSourceAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/TagSourceAction.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/TagSourceAction.java	(revision 33579)
@@ -14,4 +14,5 @@
 import org.openstreetmap.josm.command.ChangePropertyCommand;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -42,5 +43,5 @@
             return;
 
-        Main.main.undoRedo.add(new ChangePropertyCommand(selection, "source", source));
+        MainApplication.undoRedo.add(new ChangePropertyCommand(selection, "source", source));
     }
 
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/UnGlueRelationAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/UnGlueRelationAction.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/UnGlueRelationAction.java	(revision 33579)
@@ -20,4 +20,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.plugins.utilsplugin2.command.ChangeRelationMemberCommand;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -79,9 +80,9 @@
             // error message nothing to do
         } else {
-            Main.main.undoRedo.add(new SequenceCommand(tr("Unglued Relations"), cmds));
+            MainApplication.undoRedo.add(new SequenceCommand(tr("Unglued Relations"), cmds));
             //Set selection all primiteves (new and old)
             newPrimitives.addAll(selection);
             getLayerManager().getEditDataSet().setSelected(newPrimitives);
-            Main.map.mapView.repaint();
+            MainApplication.getMap().mapView.repaint();
         }
     }
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/curves/CurveAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/curves/CurveAction.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/curves/CurveAction.java	(revision 33579)
@@ -18,4 +18,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -58,5 +59,5 @@
         Collection<Command> cmds = CircleArcMaker.doCircleArc(selectedNodes, selectedWays, angleSeparation);
         if (cmds != null)
-            Main.main.undoRedo.add(new SequenceCommand("Create a curve", cmds));
+            MainApplication.undoRedo.add(new SequenceCommand("Create a curve", cmds));
     }
 
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/customurl/OpenPageAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/customurl/OpenPageAction.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/customurl/OpenPageAction.java	(revision 33579)
@@ -18,4 +18,7 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.OpenBrowser;
 import org.openstreetmap.josm.tools.OsmUrlToBounds;
@@ -50,5 +53,6 @@
             ChooseURLAction.showConfigDialog(true);
 
-        LatLon center = Main.map.mapView.getLatLon(Main.map.mapView.getWidth()/2, Main.map.mapView.getHeight()/2);
+        MapView mv = MainApplication.getMap().mapView;
+        LatLon center = mv.getLatLon(mv.getWidth()/2, mv.getHeight()/2);
 
         String addr = URLList.getSelectedURL();
@@ -70,5 +74,5 @@
                     val = Double.toString(center.lon());
                 } else if (key.equals("#zoom")) {
-                    val = Integer.toString(OsmUrlToBounds.getZoom(Main.map.mapView.getRealBounds()));
+                    val = Integer.toString(OsmUrlToBounds.getZoom(MainApplication.getMap().mapView.getRealBounds()));
                 } else {
                     if (p != null) {
@@ -83,5 +87,5 @@
             }
         } catch (UnsupportedEncodingException ex) {
-            Main.error(ex, "Encoding error");
+            Logging.log(Logging.LEVEL_ERROR, "Encoding error", ex);
             return;
         }
@@ -92,5 +96,5 @@
             OpenBrowser.displayUrl(addr);
         } catch (Exception ex) {
-            Main.error(ex, "Can not open URL " + addr);
+            Logging.log(Logging.LEVEL_ERROR, "Can not open URL " + addr, ex);
         }
     }
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/customurl/URLList.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/customurl/URLList.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/customurl/URLList.java	(revision 33579)
@@ -15,4 +15,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.plugins.utilsplugin2.UtilsPlugin2;
+import org.openstreetmap.josm.tools.Logging;
 
 public final class URLList {
@@ -78,5 +79,5 @@
             }
         } catch (IOException e) {
-            Main.error(e);
+            Logging.error(e);
         }
         return items;
@@ -93,5 +94,5 @@
             }
         } catch (IOException e) {
-            Main.error(e);
+            Logging.error(e);
         } finally {
             try {
@@ -99,5 +100,5 @@
                     fw.close();
             } catch (Exception e) {
-                Main.warn(e);
+                Logging.warn(e);
             }
         }
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/latlon/LatLonAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/latlon/LatLonAction.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/latlon/LatLonAction.java	(revision 33579)
@@ -18,4 +18,5 @@
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -80,6 +81,6 @@
             cmds.add(new AddCommand(wnew));
         }
-        Main.main.undoRedo.add(new SequenceCommand(tr("Lat Lon tool"), cmds));
-        Main.map.mapView.repaint();
+        MainApplication.undoRedo.add(new SequenceCommand(tr("Lat Lon tool"), cmds));
+        MainApplication.getMap().mapView.repaint();
     }
 
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/latlon/LatLonDialog.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/latlon/LatLonDialog.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/latlon/LatLonDialog.java	(revision 33579)
@@ -36,7 +36,7 @@
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.tools.GBC;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 public class LatLonDialog extends ExtendedDialog {
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/multitagger/MultiTagDialog.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/multitagger/MultiTagDialog.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/multitagger/MultiTagDialog.java	(revision 33579)
@@ -49,4 +49,5 @@
 import org.openstreetmap.josm.data.preferences.ColorProperty;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
@@ -55,9 +56,10 @@
 import org.openstreetmap.josm.gui.util.HighlightHelper;
 import org.openstreetmap.josm.gui.util.TableHelper;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.WindowGeometry;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
@@ -138,5 +140,5 @@
                 public void actionPerformed(ActionEvent e) {
                     if (jt.isSelected()) tableModel.shownTypes.add(type); else tableModel.shownTypes.remove(type);
-                    tableModel.updateData(Main.getLayerManager().getEditDataSet().getSelected());
+                    tableModel.updateData(MainApplication.getLayerManager().getEditDataSet().getSelected());
                 }
             });
@@ -181,5 +183,5 @@
         @Override
         public void mouseClicked(MouseEvent e) {
-            if (e.getClickCount() > 1 && Main.isDisplayingMapView()) {
+            if (e.getClickCount() > 1 && MainApplication.isDisplayingMapView()) {
                 AutoScaleAction.zoomTo(currentSelection);
             }
@@ -191,7 +193,7 @@
         public void valueChanged(ListSelectionEvent e) {
             currentSelection = getSelectedPrimitives();
-            if (currentSelection != null && Main.isDisplayingMapView()) {
+            if (currentSelection != null && MainApplication.isDisplayingMapView()) {
                 if (highlightHelper.highlightOnly(currentSelection)) {
-                    Main.map.mapView.repaint();
+                    MainApplication.getMap().mapView.repaint();
                 }
             }
@@ -210,5 +212,5 @@
 
     private void initAutocompletion() {
-        OsmDataLayer l = Main.getLayerManager().getEditLayer();
+        OsmDataLayer l = MainApplication.getLayerManager().getEditLayer();
         AutoCompletionManager autocomplete = l.data.getAutoCompletionManager();
         for (int i = 0; i < tableModel.mainTags.length; i++) {
@@ -227,5 +229,5 @@
             @Override
             public void actionPerformed(ActionEvent e) {
-                if (Main.isDisplayingMapView()) {
+                if (MainApplication.isDisplayingMapView()) {
                     AutoScaleAction.zoomTo(currentSelection);
                 }
@@ -235,5 +237,5 @@
             @Override
             public void actionPerformed(ActionEvent e) {
-                Main.getLayerManager().getEditDataSet().setSelected(getSelectedPrimitives());
+                MainApplication.getLayerManager().getEditDataSet().setSelected(getSelectedPrimitives());
             }
         });
@@ -340,5 +342,5 @@
 
     private void specifyTagSet(String s) {
-        Main.info("Multitagger tags="+s);
+        Logging.info("Multitagger tags="+s);
         tableModel.setupColumnsFromText(s);
 
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/multitagger/MultiTaggerTableModel.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/multitagger/MultiTaggerTableModel.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/multitagger/MultiTaggerTableModel.java	(revision 33579)
@@ -12,5 +12,4 @@
 import javax.swing.table.AbstractTableModel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
 import org.openstreetmap.josm.command.Command;
@@ -20,4 +19,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Geometry;
 
@@ -49,6 +49,6 @@
     public void setWatchSelection(boolean watchSelection) {
         this.watchSelection = watchSelection;
-        if (watchSelection && Main.getLayerManager().getEditLayer() != null)
-            selectionChanged(Main.getLayerManager().getEditDataSet().getSelected());
+        if (watchSelection && MainApplication.getLayerManager().getEditLayer() != null)
+            selectionChanged(MainApplication.getLayerManager().getEditDataSet().getSelected());
     }
 
@@ -115,5 +115,5 @@
             Command cmd = new ChangePropertyCommand(sel, key, (String) value);
             if (autoCommit) {
-                Main.main.undoRedo.add(cmd);
+                MainApplication.undoRedo.add(cmd);
             } else {
                 cmds.add(cmd);
@@ -185,5 +185,5 @@
 
     void commit(String commandTitle) {
-        Main.main.undoRedo.add(new SequenceCommand(commandTitle, cmds));
+        MainApplication.undoRedo.add(new SequenceCommand(commandTitle, cmds));
         cmds.clear();
     }
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/replacegeometry/ReplaceGeometryAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/replacegeometry/ReplaceGeometryAction.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/replacegeometry/ReplaceGeometryAction.java	(revision 33579)
@@ -12,7 +12,7 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -58,5 +58,5 @@
                 return;
 
-            Main.main.undoRedo.add(replaceCommand);
+            MainApplication.undoRedo.add(replaceCommand);
         } catch (IllegalArgumentException ex) {
             new Notification(
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/replacegeometry/ReplaceGeometryUtils.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/replacegeometry/ReplaceGeometryUtils.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/replacegeometry/ReplaceGeometryUtils.java	(revision 33579)
@@ -33,6 +33,8 @@
 import org.openstreetmap.josm.data.osm.TagCollection;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.conflict.tags.CombinePrimitiveResolverDialog;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.UserCancelException;
 
@@ -110,5 +112,6 @@
         // FIXME: handle different layers
         List<Command> commands = new ArrayList<>();
-        Command c = MergeNodesAction.mergeNodes(Main.getLayerManager().getEditLayer(), Arrays.asList(subjectNode, referenceNode), referenceNode);
+        Command c = MergeNodesAction.mergeNodes(MainApplication.getLayerManager().getEditLayer(),
+            Arrays.asList(subjectNode, referenceNode), referenceNode);
         if (c == null) {
             // User canceled
@@ -197,5 +200,5 @@
         }
 
-        Main.getLayerManager().getEditDataSet().setSelected(referenceObject);
+        MainApplication.getLayerManager().getEditDataSet().setSelected(referenceObject);
 
         return new ReplaceGeometryCommand(
@@ -236,5 +239,5 @@
     public static ReplaceGeometryCommand buildReplaceWayCommand(Way subjectWay, Way referenceWay) {
 
-        Area a = Main.getLayerManager().getEditDataSet().getDataSourceArea();
+        Area a = MainApplication.getLayerManager().getEditDataSet().getDataSourceArea();
         if (!isInArea(subjectWay, a) || !isInArea(referenceWay, a)) {
             throw new ReplaceGeometryException(tr("The ways must be entirely within the downloaded area."));
@@ -253,5 +256,5 @@
         } catch (UserCancelException e) {
             // user canceled tag merge dialog
-            Main.trace(e);
+            Logging.trace(e);
             return null;
         }
@@ -354,5 +357,5 @@
 
         // Remove geometry way from selection
-        Main.getLayerManager().getEditDataSet().clearSelection(referenceWay);
+        MainApplication.getLayerManager().getEditDataSet().clearSelection(referenceWay);
 
         // And delete old geometry way
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/replacegeometry/ReplaceMembershipAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/replacegeometry/ReplaceMembershipAction.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/replacegeometry/ReplaceMembershipAction.java	(revision 33579)
@@ -15,5 +15,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.command.ChangeCommand;
@@ -24,4 +23,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.RelationToChildReference;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.MultiMap;
@@ -45,5 +45,5 @@
         final int affectedRelations = command.getChildren().size();
         if (affectedRelations > 0) {
-            Main.main.undoRedo.add(command);
+            MainApplication.undoRedo.add(command);
             new Notification(trn("Replaced ''{0}'' by ''{1}'' in {2} relation", "Replaced ''{0}'' by ''{1}'' in {2} relations",
                     affectedRelations,
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/search/ConnectedMatch.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/search/ConnectedMatch.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/search/ConnectedMatch.java	(revision 33579)
@@ -6,9 +6,9 @@
 import java.util.Set;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.search.SearchCompiler;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.plugins.utilsplugin2.selection.NodeWayUtils;
 
@@ -32,5 +32,5 @@
         Set<Node> matchedNodes = new HashSet<>();
         // find all ways that match the expression
-        Collection<Way> allWays = Main.getLayerManager().getEditDataSet().getWays();
+        Collection<Way> allWays = MainApplication.getLayerManager().getEditDataSet().getWays();
         for (Way way : allWays) {
             if (match.match(way)) {
@@ -39,5 +39,5 @@
         }
         // find all nodes that match the expression
-        Collection<Node> allNodes = Main.getLayerManager().getEditDataSet().getNodes();
+        Collection<Node> allNodes = MainApplication.getLayerManager().getEditDataSet().getNodes();
         for (Node node : allNodes) {
             if (match.match(node)) {
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/search/InsideMatch.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/search/InsideMatch.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/search/InsideMatch.java	(revision 33579)
@@ -5,9 +5,9 @@
 import java.util.HashSet;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.search.SearchCompiler;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.plugins.utilsplugin2.selection.NodeWayUtils;
 
@@ -28,5 +28,5 @@
         Collection<OsmPrimitive> matchedAreas = new HashSet<>();
         // find all ways that match the expression
-        Collection<Way> ways = Main.getLayerManager().getEditDataSet().getWays();
+        Collection<Way> ways = MainApplication.getLayerManager().getEditDataSet().getWays();
         for (Way way : ways) {
             if (match.match(way)) {
@@ -35,5 +35,5 @@
         }
         // find all relations that match the expression
-        Collection<Relation> rels = Main.getLayerManager().getEditDataSet().getRelations();
+        Collection<Relation> rels = MainApplication.getLayerManager().getEditDataSet().getRelations();
         for (Relation rel : rels) {
             if (match.match(rel)) {
@@ -41,5 +41,5 @@
             }
         }
-        inside = NodeWayUtils.selectAllInside(matchedAreas, Main.getLayerManager().getEditDataSet(), false);
+        inside = NodeWayUtils.selectAllInside(matchedAreas, MainApplication.getLayerManager().getEditDataSet(), false);
     }
 
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/search/IntersectingMatch.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/search/IntersectingMatch.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/search/IntersectingMatch.java	(revision 33579)
@@ -6,8 +6,8 @@
 import java.util.Set;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.search.SearchCompiler;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.plugins.utilsplugin2.selection.NodeWayUtils;
 
@@ -31,5 +31,5 @@
         Collection<Way> matchedWays = new HashSet<>();
         // find all ways that match the expression
-        Collection<Way> allWays = Main.getLayerManager().getEditDataSet().getWays();
+        Collection<Way> allWays = MainApplication.getLayerManager().getEditDataSet().getWays();
         for (Way way : allWays) {
             if (match.match(way)) {
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectBoundaryAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectBoundaryAction.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectBoundaryAction.java	(revision 33579)
@@ -14,5 +14,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.actions.SelectByInternalPointAction;
@@ -21,4 +20,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -58,6 +58,6 @@
                     }
                 } else {
-                    Point p = Main.map.mapView.getMousePosition();
-                    SelectByInternalPointAction.performSelection(Main.map.mapView.getEastNorth(p.x, p.y), false, false);
+                    Point p = MainApplication.getMap().mapView.getMousePosition();
+                    SelectByInternalPointAction.performSelection(MainApplication.getMap().mapView.getEastNorth(p.x, p.y), false, false);
                     return;
                 }
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectModNodesAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectModNodesAction.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectModNodesAction.java	(revision 33579)
@@ -11,5 +11,4 @@
 import java.util.Set;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.command.Command;
@@ -17,4 +16,5 @@
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -42,11 +42,11 @@
             Command cmd = null;
 
-            if (Main.main.undoRedo.commands == null) return;
-            int num = Main.main.undoRedo.commands.size();
+            if (MainApplication.undoRedo.commands == null) return;
+            int num = MainApplication.undoRedo.commands.size();
             if (num == 0) return;
             int k = 0, idx;
             if (selection != null && !selection.isEmpty() && selection.hashCode() == lastHash) {
                 // we are selecting next command in history if nothing is selected
-                idx = Main.main.undoRedo.commands.indexOf(lastCmd);
+                idx = MainApplication.undoRedo.commands.indexOf(lastCmd);
             } else {
                 idx = num;
@@ -56,5 +56,5 @@
             do {  //  select next history element
                 if (idx > 0) idx--; else idx = num-1;
-                cmd = Main.main.undoRedo.commands.get(idx);
+                cmd = MainApplication.undoRedo.commands.get(idx);
                 Collection<? extends OsmPrimitive> pp = cmd.getParticipatingPrimitives();
                 nodes.clear();
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectModWaysAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectModWaysAction.java	(revision 33543)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectModWaysAction.java	(revision 33579)
@@ -11,5 +11,4 @@
 import java.util.Set;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.command.Command;
@@ -18,4 +17,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -43,11 +43,11 @@
             Command cmd;
 
-            if (Main.main.undoRedo.commands == null) return;
-            int num = Main.main.undoRedo.commands.size();
+            if (MainApplication.undoRedo.commands == null) return;
+            int num = MainApplication.undoRedo.commands.size();
             if (num == 0) return;
             int k = 0, idx;
             if (selection != null && !selection.isEmpty() && selection.hashCode() == lastHash) {
                 // we are selecting next command in history if nothing is selected
-                idx = Main.main.undoRedo.commands.indexOf(lastCmd);
+                idx = MainApplication.undoRedo.commands.indexOf(lastCmd);
             } else {
                 idx = num;
@@ -57,5 +57,5 @@
             do {  //  select next history element
                 if (idx > 0) idx--; else idx = num-1;
-                cmd = Main.main.undoRedo.commands.get(idx);
+                cmd = MainApplication.undoRedo.commands.get(idx);
                 Collection<? extends OsmPrimitive> pp = cmd.getParticipatingPrimitives();
                 ways.clear();
