Index: /trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/Main.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/Main.java	(revision 14153)
@@ -13,4 +13,5 @@
 import org.openstreetmap.josm.data.projection.ProjectionChangeListener;
 import org.openstreetmap.josm.data.projection.ProjectionRegistry;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.io.FileWatcher;
 import org.openstreetmap.josm.io.NetworkManager;
@@ -25,10 +26,14 @@
  * Abstract class holding various static global variables and methods used in large parts of JOSM application.
  * @since 98
+ * @deprecated Not needed anymore
  */
+@Deprecated
 public abstract class Main implements IOsmDataManager {
 
     /**
      * Global parent component for all dialogs and message boxes
-     */
+     * @deprecated Use {@link MainApplication#getMainFrame}
+     */
+    @Deprecated
     public static Component parent;
 
Index: /trunk/src/org/openstreetmap/josm/actions/AboutAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AboutAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/AboutAction.java	(revision 14153)
@@ -24,5 +24,4 @@
 import javax.swing.JTextArea;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Version;
 import org.openstreetmap.josm.gui.ExtendedDialog;
@@ -136,5 +135,5 @@
 
         GuiHelper.prepareResizeableOptionPane(panel, panel.getPreferredSize());
-        int ret = new ExtendedDialog(Main.parent, tr("About JOSM..."), tr("OK"), tr("Report bug"))
+        int ret = new ExtendedDialog(MainApplication.getMainFrame(), tr("About JOSM..."), tr("OK"), tr("Report bug"))
             .setButtonIcons("ok", "bug")
             .setContent(panel, false)
Index: /trunk/src/org/openstreetmap/josm/actions/AbstractInfoAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AbstractInfoAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/AbstractInfoAction.java	(revision 14153)
@@ -12,5 +12,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.notes.Note;
 import org.openstreetmap.josm.data.osm.IPrimitive;
@@ -88,5 +87,5 @@
         };
         return 0 == HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 new StringBuilder(msg).insert(0, "<html>").append("</html>").toString(),
                 tr("Warning"),
@@ -114,5 +113,5 @@
         if (primitivesToShow.isEmpty() && noteToShow == null) {
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("Please select at least one already uploaded node, way, or relation."),
                     tr("Warning"),
Index: /trunk/src/org/openstreetmap/josm/actions/AbstractMergeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AbstractMergeAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/AbstractMergeAction.java	(revision 14153)
@@ -15,6 +15,6 @@
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
@@ -114,5 +114,5 @@
             return targetLayers[0];
         }
-        ExtendedDialog ed = new ExtendedDialog(Main.parent, title, buttonText, tr("Cancel"));
+        ExtendedDialog ed = new ExtendedDialog(MainApplication.getMainFrame(), title, buttonText, tr("Cancel"));
         ed.setButtonIcons(buttonIcon, "cancel");
         ed.setContent(pnl);
@@ -132,5 +132,5 @@
                 Utils.escapeReservedCharactersHTML(sourceLayer.getName()));
         if (!GraphicsEnvironment.isHeadless()) {
-            JOptionPane.showMessageDialog(Main.parent, message, tr("No target layers"), JOptionPane.WARNING_MESSAGE);
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(), message, tr("No target layers"), JOptionPane.WARNING_MESSAGE);
         }
     }
Index: /trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java	(revision 14153)
@@ -21,5 +21,4 @@
 import javax.swing.JScrollPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.imagery.DefaultLayer;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
@@ -30,4 +29,5 @@
 import org.openstreetmap.josm.data.imagery.WMTSTileSource.WMTSGetCapabilitiesException;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.AlignImageryPanel;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
@@ -52,5 +52,5 @@
     static class SelectWmsLayersDialog extends ExtendedDialog {
         SelectWmsLayersDialog(WMSLayerTree tree, JComboBox<String> formats) {
-            super(Main.parent, tr("Select WMS layers"), tr("Add layers"), tr("Cancel"));
+            super(MainApplication.getMainFrame(), tr("Select WMS layers"), tr("Add layers"), tr("Cancel"));
             final JScrollPane scrollPane = new JScrollPane(tree.getLayerTree());
             scrollPane.setPreferredSize(new Dimension(400, 400));
@@ -155,5 +155,5 @@
             } else {
                 Logging.error(ex);
-                JOptionPane.showMessageDialog(Main.parent, ex.getMessage(), tr("Error"), JOptionPane.ERROR_MESSAGE);
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(), ex.getMessage(), tr("Error"), JOptionPane.ERROR_MESSAGE);
                 if (layer != null) {
                     getLayerManager().removeLayer(layer);
@@ -184,5 +184,6 @@
 
             if (!GraphicsEnvironment.isHeadless()) {
-                ExtendedDialog dialog = new ExtendedDialog(Main.parent, tr("Select WMS layers"), tr("Add layers"), tr("Cancel"));
+                ExtendedDialog dialog = new ExtendedDialog(MainApplication.getMainFrame(),
+                        tr("Select WMS layers"), tr("Add layers"), tr("Cancel"));
                 final JScrollPane scrollPane = new JScrollPane(tree.getLayerTree());
                 scrollPane.setPreferredSize(new Dimension(400, 400));
@@ -227,5 +228,5 @@
     private static void handleException(Exception ex, String uiMessage, String uiTitle, String logMessage) {
         if (!GraphicsEnvironment.isHeadless()) {
-            JOptionPane.showMessageDialog(Main.parent, uiMessage, uiTitle, JOptionPane.ERROR_MESSAGE);
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(), uiMessage, uiTitle, JOptionPane.ERROR_MESSAGE);
         }
         Logging.log(Logging.LEVEL_ERROR, logMessage, ex);
Index: /trunk/src/org/openstreetmap/josm/actions/AddNodeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AddNodeAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/AddNodeAction.java	(revision 14153)
@@ -9,5 +9,4 @@
 import java.util.Collections;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.AddCommand;
 import org.openstreetmap.josm.data.UndoRedoHandler;
@@ -44,5 +43,5 @@
             return;
 
-        LatLonDialog dialog = new LatLonDialog(Main.parent, tr("Add Node..."), ht("/Action/AddNode"));
+        LatLonDialog dialog = new LatLonDialog(MainApplication.getMainFrame(), tr("Add Node..."), ht("/Action/AddNode"));
 
         if (textLatLon != null) {
Index: /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 14153)
@@ -21,5 +21,4 @@
 import javax.swing.event.TreeSelectionListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.DataSource;
@@ -85,5 +84,5 @@
         if (sel.isEmpty()) {
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("Nothing selected to zoom to."),
                     tr("Information"),
@@ -303,5 +302,5 @@
         if (sel.isEmpty()) {
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     "selection".equals(mode) ? tr("Nothing selected to zoom to.") : tr("No conflicts to zoom to"),
                     tr("Information"),
Index: /trunk/src/org/openstreetmap/josm/actions/CloseChangesetAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/CloseChangesetAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/CloseChangesetAction.java	(revision 14153)
@@ -14,5 +14,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.ChangesetCache;
@@ -66,5 +65,5 @@
         if (openChangesets.isEmpty()) {
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("There are no open changesets"),
                     tr("No open changesets"),
Index: /trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java	(revision 14153)
@@ -19,5 +19,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.Command;
@@ -35,4 +34,5 @@
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.conflict.tags.CombinePrimitiveResolverDialog;
@@ -61,5 +61,5 @@
 
     protected static boolean confirmChangeDirectionOfWays() {
-        return new ExtendedDialog(Main.parent,
+        return new ExtendedDialog(MainApplication.getMainFrame(),
                 tr("Change directions?"),
                 tr("Reverse and Combine"), tr("Cancel"))
Index: /trunk/src/org/openstreetmap/josm/actions/CopyAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/CopyAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/CopyAction.java	(revision 14153)
@@ -13,5 +13,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -76,5 +75,5 @@
     protected void showEmptySelectionWarning() {
         JOptionPane.showMessageDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 tr("Please select something to copy."),
                 tr("Information"),
Index: /trunk/src/org/openstreetmap/josm/actions/DeleteAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DeleteAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/DeleteAction.java	(revision 14153)
@@ -14,5 +14,4 @@
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.DeleteCommand.DeletionCallback;
 import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
@@ -132,5 +131,5 @@
         return ConditionalOptionPaneUtil.showConfirmationDialog(
                 "delete_relations",
-                Main.parent,
+                MainApplication.getMainFrame(),
                 msg,
                 tr("Delete relation?"),
Index: /trunk/src/org/openstreetmap/josm/actions/DownloadAlongAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DownloadAlongAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/DownloadAlongAction.java	(revision 14153)
@@ -17,6 +17,6 @@
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadTaskList;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor;
@@ -112,5 +112,5 @@
                         toDownload.size())), GBC.eol());
         if (!GraphicsEnvironment.isHeadless() && JOptionPane.OK_OPTION != JOptionPane.showConfirmDialog(
-                Main.parent, msg, title, JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE)) {
+                MainApplication.getMainFrame(), msg, title, JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE)) {
             return;
         }
Index: /trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java	(revision 14153)
@@ -19,5 +19,4 @@
 import javax.swing.KeyStroke;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -70,5 +69,5 @@
 
     protected void setMode() {
-        JFrame frame = (JFrame) Main.parent;
+        JFrame frame = MainApplication.getMainFrame();
 
         List<Window> visibleWindows = new ArrayList<>();
Index: /trunk/src/org/openstreetmap/josm/actions/GpxExportAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/GpxExportAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/GpxExportAction.java	(revision 14153)
@@ -14,5 +14,5 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.io.importexport.FileExporter;
 import org.openstreetmap.josm.gui.io.importexport.GpxImporter;
@@ -73,5 +73,5 @@
         if (layer == null) {
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("Nothing to export. Get some data first."),
                     tr("Information"),
Index: /trunk/src/org/openstreetmap/josm/actions/HelpAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/HelpAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/HelpAction.java	(revision 14153)
@@ -12,5 +12,5 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.help.HelpBrowser;
 import org.openstreetmap.josm.gui.help.HelpUtil;
@@ -61,6 +61,7 @@
                 }
             } else {
-                Point mouse = Main.parent.getMousePosition();
-                topic = HelpUtil.getContextSpecificHelpTopic(SwingUtilities.getDeepestComponentAt(Main.parent, mouse.x, mouse.y));
+                Point mouse = MainApplication.getMainFrame().getMousePosition();
+                topic = HelpUtil.getContextSpecificHelpTopic(
+                        SwingUtilities.getDeepestComponentAt(MainApplication.getMainFrame(), mouse.x, mouse.y));
             }
             HelpBrowser.setUrlForHelpTopic(Optional.ofNullable(topic).orElse("/"));
Index: /trunk/src/org/openstreetmap/josm/actions/HistoryInfoAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/HistoryInfoAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/HistoryInfoAction.java	(revision 14153)
@@ -8,5 +8,4 @@
 import java.awt.event.KeyEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmData;
 import org.openstreetmap.josm.gui.MainApplication;
@@ -60,5 +59,5 @@
          */
         public HistoryObjectIDDialog() {
-            super(Main.parent, tr("Show history"), tr("Show history"), tr("Cancel"));
+            super(MainApplication.getMainFrame(), tr("Show history"), tr("Show history"), tr("Cancel"));
             setButtonIcons("dialogs/history", "cancel");
             init();
Index: /trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java	(revision 14153)
@@ -21,5 +21,4 @@
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.mapmode.MapMode;
 import org.openstreetmap.josm.data.coor.EastNorth;
@@ -249,5 +248,5 @@
          */
         ImageryOffsetDialog() {
-            super(Main.parent,
+            super(MainApplication.getMainFrame(),
                     tr("Adjust imagery offset"),
                     new String[] {tr("OK"), tr("Cancel")},
@@ -269,5 +268,6 @@
             setContent(pnl);
             setupDialog();
-            setRememberWindowGeometry(getClass().getName() + ".geometry", WindowGeometry.centerInWindow(Main.parent, getSize()));
+            setRememberWindowGeometry(getClass().getName() + ".geometry",
+                    WindowGeometry.centerInWindow(MainApplication.getMainFrame(), getSize()));
         }
 
@@ -327,5 +327,5 @@
         private boolean confirmOverwriteBookmark() {
             ExtendedDialog dialog = new ExtendedDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("Overwrite"),
                     tr("Overwrite"), tr("Cancel")
Index: /trunk/src/org/openstreetmap/josm/actions/JosmAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/JosmAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/JosmAction.java	(revision 14153)
@@ -16,5 +16,4 @@
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.osm.DataSelectionListener;
@@ -471,5 +470,5 @@
             boolean answer = ConditionalOptionPaneUtil.showConfirmationDialog(
                     operation + "_outside_nodes",
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     msg,
                     dialogTitle,
@@ -485,5 +484,5 @@
             boolean answer = ConditionalOptionPaneUtil.showConfirmationDialog(
                     operation + "_incomplete",
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     msg,
                     dialogTitle,
Index: /trunk/src/org/openstreetmap/josm/actions/JumpToAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/JumpToAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/JumpToAction.java	(revision 14153)
@@ -17,5 +17,4 @@
 import javax.swing.event.DocumentListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.LatLon;
@@ -57,5 +56,5 @@
     static class JumpToPositionDialog extends ExtendedDialog {
         JumpToPositionDialog(String[] buttons, JPanel panel) {
-            super(Main.parent, tr("Jump to Position"), buttons);
+            super(MainApplication.getMainFrame(), tr("Jump to Position"), buttons);
             setContent(panel);
             setCancelButton(2);
@@ -165,5 +164,5 @@
                     ll = LatLonParser.parse(lat.getText() + "; " + lon.getText());
                 } catch (IllegalArgumentException ex2) {
-                    JOptionPane.showMessageDialog(Main.parent,
+                    JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                             tr("Could not parse Latitude, Longitude or Zoom. Please check."),
                             tr("Unable to parse Lon/Lat"), JOptionPane.ERROR_MESSAGE);
Index: /trunk/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java	(revision 14153)
@@ -21,5 +21,4 @@
 import javax.swing.JRadioButton;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
@@ -166,5 +165,5 @@
         panel.add(tfWmsUrl, GBC.eol().fill(GridBagConstraints.HORIZONTAL));
 
-        ExtendedDialog diag = new ExtendedDialog(Main.parent,
+        ExtendedDialog diag = new ExtendedDialog(MainApplication.getMainFrame(),
                 tr("Add Rectified Image"),
                 tr("Add Rectified Image"), tr("Cancel"))
@@ -223,5 +222,5 @@
 
             // and display an error message. The while loop ensures that the dialog pops up again
-            JOptionPane.showMessageDialog(Main.parent,
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                     tr("Couldn''t match the entered link or id to the selected service. Please try again."),
                     tr("No valid WMS URL or id"),
@@ -244,5 +243,6 @@
             } catch (IOException | WMSGetCapabilitiesException e) {
                 Logging.error(e);
-                JOptionPane.showMessageDialog(Main.parent, e.getMessage(), tr("No valid WMS URL or id"), JOptionPane.ERROR_MESSAGE);
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
+                        e.getMessage(), tr("No valid WMS URL or id"), JOptionPane.ERROR_MESSAGE);
                 return;
             }
Index: /trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 14153)
@@ -20,5 +20,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.ChangeNodesCommand;
@@ -229,5 +228,5 @@
                     };
                     HelpAwareOptionPane.showOptionDialog(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             tr("Cannot merge nodes: Would have to delete way {0} which is still used by {1}",
                                 DefaultNameFormatter.getInstance().formatAsHtmlUnorderedList(w),
Index: /trunk/src/org/openstreetmap/josm/actions/MoveAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/MoveAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/MoveAction.java	(revision 14153)
@@ -11,5 +11,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.MoveCommand;
@@ -157,5 +156,5 @@
                 ((MoveCommand) c).moveAgain(-distx, -disty);
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr("Cannot move objects outside of the world."),
                         tr("Warning"),
Index: /trunk/src/org/openstreetmap/josm/actions/MoveNodeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/MoveNodeAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/MoveNodeAction.java	(revision 14153)
@@ -8,5 +8,4 @@
 import java.util.Collection;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.MoveCommand;
 import org.openstreetmap.josm.data.UndoRedoHandler;
@@ -40,5 +39,5 @@
             return;
 
-        LatLonDialog dialog = new LatLonDialog(Main.parent, tr("Move Node..."), ht("/Action/MoveNode"));
+        LatLonDialog dialog = new LatLonDialog(MainApplication.getMainFrame(), tr("Move Node..."), ht("/Action/MoveNode"));
         Node n = (Node) selNodes.toArray()[0];
         dialog.setCoordinates(n.getCoor());
Index: /trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 14153)
@@ -31,5 +31,4 @@
 import javax.swing.filechooser.FileFilter;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.PreferencesUtils;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
@@ -209,5 +208,5 @@
 
             HelpAwareOptionPane.showMessageDialogInEDT(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     msg.toString(),
                     tr("Warning"),
@@ -233,5 +232,5 @@
 
             HelpAwareOptionPane.showMessageDialogInEDT(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     msg.toString(),
                     tr("Warning"),
@@ -272,5 +271,5 @@
                     if (!chosenImporter.acceptFile(f)) {
                         if (f.isDirectory()) {
-                            SwingUtilities.invokeLater(() -> JOptionPane.showMessageDialog(Main.parent, tr(
+                            SwingUtilities.invokeLater(() -> JOptionPane.showMessageDialog(MainApplication.getMainFrame(), tr(
                                     "<html>Cannot open directory ''{0}''.<br>Please select a file.</html>",
                                     f.getAbsolutePath()), tr("Open file"), JOptionPane.ERROR_MESSAGE));
Index: /trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java	(revision 14153)
@@ -24,5 +24,4 @@
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadGpsTask;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadNotesTask;
@@ -73,5 +72,5 @@
     static class WhichTasksToPerformDialog extends ExtendedDialog {
         WhichTasksToPerformDialog(JList<DownloadTask> list) {
-            super(Main.parent, tr("Which tasks to perform?"), new String[]{tr("Ok"), tr("Cancel")}, true);
+            super(MainApplication.getMainFrame(), tr("Which tasks to perform?"), new String[]{tr("Ok"), tr("Cancel")}, true);
             setButtonIcons("ok", "cancel");
             final JPanel pane = new JPanel(new GridLayout(2, 1));
@@ -153,5 +152,5 @@
         ExpertToggleAction.addVisibilitySwitcher(zoom);
 
-        ExtendedDialog dialog = new ExtendedDialog(Main.parent,
+        ExtendedDialog dialog = new ExtendedDialog(MainApplication.getMainFrame(),
                 tr("Download Location"),
                 tr("Download URL"), tr("Cancel"))
@@ -165,5 +164,5 @@
         dialog.pack();
         dialog.setRememberWindowGeometry(getClass().getName() + ".geometry",
-                    WindowGeometry.centerInWindow(Main.parent, dialog.getPreferredSize()));
+                    WindowGeometry.centerInWindow(MainApplication.getMainFrame(), dialog.getPreferredSize()));
         if (dialog.showDialog().getValue() == 1) {
             USE_NEW_LAYER.put(layer.isSelected());
@@ -313,5 +312,5 @@
     protected void warnNoSuitableTasks(final String url) {
         final String details = findSummaryDocumentation();    // Explain what patterns are supported
-        HelpAwareOptionPane.showMessageDialogInEDT(Main.parent, "<html><p>" + tr(
+        HelpAwareOptionPane.showMessageDialogInEDT(MainApplication.getMainFrame(), "<html><p>" + tr(
                 "Cannot open URL ''{0}''<br>The following download tasks accept the URL patterns shown:<br>{1}",
                 url, details) + "</p></html>", tr("Download Location"), JOptionPane.ERROR_MESSAGE, ht("/Action/OpenLocation"));
Index: /trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java	(revision 14153)
@@ -21,5 +21,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.MoveCommand;
@@ -33,4 +32,5 @@
 import org.openstreetmap.josm.data.projection.ProjectionRegistry;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.Geometry;
@@ -156,5 +156,5 @@
             if (!ConditionalOptionPaneUtil.showConfirmationDialog(
                     "align_rectangular_4326",
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     msg,
                     tr("Warning"),
Index: /trunk/src/org/openstreetmap/josm/actions/PreferencesAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/PreferencesAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/PreferencesAction.java	(revision 14153)
@@ -8,5 +8,5 @@
 import java.awt.event.KeyEvent;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.preferences.PreferenceDialog;
 import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
@@ -104,5 +104,5 @@
     @Override
     public void run() {
-        final PreferenceDialog p = new PreferenceDialog(Main.parent);
+        final PreferenceDialog p = new PreferenceDialog(MainApplication.getMainFrame());
         if (tab != null) {
             p.selectPreferencesTabByClass(tab);
Index: /trunk/src/org/openstreetmap/josm/actions/PurgeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/PurgeAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/PurgeAction.java	(revision 14153)
@@ -27,5 +27,4 @@
 import javax.swing.JSeparator;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.PurgeCommand;
 import org.openstreetmap.josm.data.UndoRedoHandler;
@@ -34,4 +33,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PrimitiveRenderer;
 import org.openstreetmap.josm.gui.help.HelpUtil;
@@ -95,5 +95,5 @@
         if (!GraphicsEnvironment.isHeadless()) {
             final boolean answer = ConditionalOptionPaneUtil.showConfirmationDialog(
-                    "purge", Main.parent, buildPanel(modified), tr("Confirm Purging"),
+                    "purge", MainApplication.getMainFrame(), buildPanel(modified), tr("Confirm Purging"),
                     JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_OPTION);
             if (!answer)
Index: /trunk/src/org/openstreetmap/josm/actions/RenameLayerAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/RenameLayerAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/RenameLayerAction.java	(revision 14153)
@@ -15,5 +15,5 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
@@ -73,5 +73,5 @@
 
         final JOptionPane optionPane = new InitialValueOptionPane(panel, name);
-        final JDialog dlg = optionPane.createDialog(Main.parent, tr("Rename layer"));
+        final JDialog dlg = optionPane.createDialog(MainApplication.getMainFrame(), tr("Rename layer"));
         dlg.setModalityType(ModalityType.DOCUMENT_MODAL);
         dlg.setVisible(true);
@@ -104,5 +104,5 @@
                 } else {
                     JOptionPane.showMessageDialog(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             tr("Could not rename file ''{0}''", file.getPath()),
                             tr("Error"),
@@ -114,5 +114,5 @@
         }
         layer.rename(nameText);
-        Main.parent.repaint();
+        MainApplication.getMainFrame().repaint();
     }
 }
Index: /trunk/src/org/openstreetmap/josm/actions/SaveAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SaveAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/SaveAction.java	(revision 14153)
@@ -8,6 +8,6 @@
 import java.io.File;
 
-import org.openstreetmap.josm.Main;
 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;
@@ -49,5 +49,5 @@
         if (f != null && layer instanceof GpxLayer) {
             ExtendedDialog dialog = new ExtendedDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("Overwrite"),
                     tr("Overwrite"), tr("Cancel"))
Index: /trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 14153)
@@ -15,7 +15,7 @@
 import javax.swing.filechooser.FileFilter;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.PreferencesUtils;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.io.importexport.FileExporter;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -107,5 +107,5 @@
             if (!exported) {
                 GuiHelper.runInEDT(() ->
-                    JOptionPane.showMessageDialog(Main.parent, tr("No Exporter found! Nothing saved."), tr("Warning"),
+                    JOptionPane.showMessageDialog(MainApplication.getMainFrame(), tr("No Exporter found! Nothing saved."), tr("Warning"),
                         JOptionPane.WARNING_MESSAGE));
                 return false;
@@ -120,5 +120,5 @@
                 ((OsmDataLayer) layer).onPostSaveToFile();
             }
-            Main.parent.repaint();
+            MainApplication.getMainFrame().repaint();
         } catch (IOException e) {
             Logging.error(e);
@@ -213,5 +213,5 @@
         if (file == null || file.exists()) {
             return new ExtendedDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("Overwrite"),
                     tr("Overwrite"), tr("Cancel"))
Index: /trunk/src/org/openstreetmap/josm/actions/SearchNotesDownloadAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SearchNotesDownloadAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/SearchNotesDownloadAction.java	(revision 14153)
@@ -16,8 +16,8 @@
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadNotesTask;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadParams;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
@@ -56,5 +56,5 @@
         contentPanel.add(searchTermBox, gc);
 
-        ExtendedDialog ed = new ExtendedDialog(Main.parent, tr("Search for notes"), tr("Search for notes"), tr("Cancel"))
+        ExtendedDialog ed = new ExtendedDialog(MainApplication.getMainFrame(), tr("Search for notes"), tr("Search for notes"), tr("Cancel"))
             .setContent(contentPanel)
             .setButtonIcons("note_search", "cancel");
Index: /trunk/src/org/openstreetmap/josm/actions/SessionLoadAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SessionLoadAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/SessionLoadAction.java	(revision 14153)
@@ -19,5 +19,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.projection.ProjectionRegistry;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
@@ -204,5 +203,5 @@
             Logging.error(e);
             HelpAwareOptionPane.showMessageDialogInEDT(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("<html>Could not load session file ''{0}''.<br>Error is:<br>{1}</html>",
                             uri != null ? uri : file.getName(), Utils.escapeReservedCharactersHTML(e.getMessage())),
Index: /trunk/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java	(revision 14153)
@@ -32,5 +32,4 @@
 import javax.swing.filechooser.FileFilter;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
@@ -171,5 +170,5 @@
             Logging.error(ex);
             HelpAwareOptionPane.showMessageDialogInEDT(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("<html>Could not save session file ''{0}''.<br>Error is:<br>{1}</html>",
                             file.getName(), Utils.escapeReservedCharactersHTML(ex.getMessage())),
@@ -190,10 +189,10 @@
          */
         public SessionSaveAsDialog() {
-            super(Main.parent, tr("Save Session"), tr("Save As"), tr("Cancel"));
+            super(MainApplication.getMainFrame(), tr("Save Session"), tr("Save As"), tr("Cancel"));
             initialize();
             setButtonIcons("save_as", "cancel");
             setDefaultButton(1);
             setRememberWindowGeometry(getClass().getName() + ".geometry",
-                    WindowGeometry.centerInWindow(Main.parent, new Dimension(350, 450)));
+                    WindowGeometry.centerInWindow(MainApplication.getMainFrame(), new Dimension(350, 450)));
             setContent(build(), false);
         }
Index: /trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java	(revision 14153)
@@ -25,5 +25,4 @@
 import java.util.stream.Collectors;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.Version;
@@ -294,5 +293,5 @@
         DebugTextDisplay ta = new DebugTextDisplay(text.toString());
 
-        ExtendedDialog ed = new ExtendedDialog(Main.parent,
+        ExtendedDialog ed = new ExtendedDialog(MainApplication.getMainFrame(),
                 tr("Status Report"),
                 tr("Copy to clipboard and close"), tr("Report bug"), tr("Close"));
@@ -300,5 +299,5 @@
         ed.setContent(ta, false);
         ed.setMinimumSize(new Dimension(380, 200));
-        ed.setPreferredSize(new Dimension(700, Main.parent.getHeight()-50));
+        ed.setPreferredSize(new Dimension(700, MainApplication.getMainFrame().getHeight()-50));
 
         switch (ed.showDialog().getValue()) {
Index: /trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java	(revision 14153)
@@ -20,5 +20,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.Command;
@@ -33,4 +32,5 @@
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.spi.preferences.Config;
@@ -82,5 +82,5 @@
         };
         return 0 == HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 tr("The selection contains {0} ways. Are you sure you want to simplify them all?", numWays),
                 tr("Simplify ways?"),
Index: /trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 14153)
@@ -24,5 +24,4 @@
 import javax.swing.ListSelectionModel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.SplitWayCommand;
 import org.openstreetmap.josm.data.UndoRedoHandler;
@@ -165,5 +164,5 @@
 
         SegmentToKeepSelectionDialog(Way selectedWay, List<Way> newWays, Way wayToKeep, List<OsmPrimitive> selection) {
-            super(Main.parent, tr("Which way segment should reuse the history of {0}?", selectedWay.getId()),
+            super(MainApplication.getMainFrame(), tr("Which way segment should reuse the history of {0}?", selectedWay.getId()),
                     new String[]{tr("Ok"), tr("Cancel")}, true);
 
Index: /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 14153)
@@ -26,5 +26,4 @@
 import javax.swing.JToggleButton;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.AddCommand;
 import org.openstreetmap.josm.command.ChangeCommand;
@@ -209,5 +208,5 @@
 
         private PropertiesMembershipDialog(boolean preselectNew, boolean queryTags, boolean queryMemberships) {
-            super(Main.parent, tr("Tags/Memberships"), tr("Unglue"), tr("Cancel"));
+            super(MainApplication.getMainFrame(), tr("Tags/Memberships"), tr("Unglue"), tr("Cancel"));
             setButtonIcons("unglueways", "cancel");
 
Index: /trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java	(revision 14153)
@@ -14,5 +14,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.DownloadPolicy;
@@ -137,5 +136,5 @@
         if (toUpdate.isEmpty()) {
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("There are no selected objects to update."),
                     tr("Selection empty"),
Index: /trunk/src/org/openstreetmap/josm/actions/UploadAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 14153)
@@ -14,5 +14,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.upload.ApiPreconditionCheckerHook;
 import org.openstreetmap.josm.actions.upload.DiscardTagsHook;
@@ -163,5 +162,5 @@
     protected static void alertUnresolvedConflicts(OsmDataLayer layer) {
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 tr("<html>The data to be uploaded participates in unresolved conflicts of layer ''{0}''.<br>"
                         + "You have to resolve them first.</html>", Utils.escapeReservedCharactersHTML(layer.getName())
@@ -232,5 +231,5 @@
         if (apiData.isEmpty()) {
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("No changes to upload."),
                     tr("Warning"),
@@ -291,5 +290,5 @@
         if (MainApplication.getMap() == null) {
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("Nothing to upload. Get some data first."),
                     tr("Warning"),
Index: /trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java	(revision 14153)
@@ -16,5 +16,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -102,5 +101,5 @@
         if (modifiedCandidates.isEmpty() && deletedCandidates.isEmpty()) {
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("No changes to upload."),
                     tr("Warning"),
@@ -120,5 +119,5 @@
         if (toUpload.isEmpty()) {
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("No changes to upload."),
                     tr("Warning"),
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetContentDownloadTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetContentDownloadTask.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetContentDownloadTask.java	(revision 14153)
@@ -12,9 +12,9 @@
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.ChangesetCache;
 import org.openstreetmap.josm.data.osm.ChangesetDataSet;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.io.OsmTransferCanceledException;
 import org.openstreetmap.josm.io.OsmTransferException;
@@ -103,5 +103,5 @@
      */
     public ChangesetContentDownloadTask(int changesetId) {
-        this(Main.parent, changesetId);
+        this(MainApplication.getMainFrame(), changesetId);
     }
 
@@ -113,5 +113,5 @@
      */
     public ChangesetContentDownloadTask(Collection<Integer> changesetIds) {
-        this(Main.parent, changesetIds);
+        this(MainApplication.getMainFrame(), changesetIds);
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetHeaderDownloadTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetHeaderDownloadTask.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetHeaderDownloadTask.java	(revision 14153)
@@ -11,8 +11,8 @@
 import java.util.Set;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.ChangesetCache;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
@@ -80,5 +80,5 @@
      */
     public ChangesetHeaderDownloadTask(Collection<Integer> ids) {
-        this(Main.parent, ids, false);
+        this(MainApplication.getMainFrame(), ids, false);
     }
 
@@ -122,5 +122,5 @@
      */
     public static ChangesetHeaderDownloadTask buildTaskForChangesets(Collection<Changeset> changesets) {
-        return buildTaskForChangesets(Main.parent, changesets);
+        return buildTaskForChangesets(MainApplication.getMainFrame(), changesets);
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetQueryTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetQueryTask.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetQueryTask.java	(revision 14153)
@@ -9,7 +9,7 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.UserIdentityManager;
 import org.openstreetmap.josm.data.osm.UserInfo;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.ChangesetQuery;
@@ -91,5 +91,5 @@
                     public void run() {
                         JOptionPane.showMessageDialog(
-                                parent != null ? parent : Main.parent,
+                                parent != null ? parent : MainApplication.getMainFrame(),
                                 ExceptionUtil.explainException(lastException),
                                 tr("Errors during download"),
@@ -120,5 +120,5 @@
      */
     public ChangesetQueryTask(ChangesetQuery query) {
-        this(Main.parent, query);
+        this(MainApplication.getMainFrame(), query);
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java	(revision 14153)
@@ -13,5 +13,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.ProjectionBounds;
@@ -175,5 +174,5 @@
                 Logging.debug(e);
                 notesData = e.notes;
-                JOptionPane.showMessageDialog(Main.parent, "<html>"
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(), "<html>"
                                 + trn("{0} note has been downloaded.", "{0} notes have been downloaded.", e.limit, e.limit)
                                 + "<br>"
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java	(revision 14153)
@@ -17,5 +17,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.DataSetMerger;
@@ -127,5 +126,5 @@
         targetLayer.getConflicts().add(visitor.getConflicts());
         JOptionPane.showMessageDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 trn("There was {0} conflict during import.",
                     "There were {0} conflicts during import.",
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java	(revision 14153)
@@ -22,5 +22,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.UpdateSelectionAction;
 import org.openstreetmap.josm.data.Bounds;
@@ -190,5 +189,5 @@
 
         int ret = HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 message,
                 tr("Deleted or moved objects"),
@@ -266,5 +265,5 @@
                         new Notification(items.iterator().next()).setIcon(JOptionPane.WARNING_MESSAGE).show();
                     } else {
-                        JOptionPane.showMessageDialog(Main.parent, "<html>"
+                        JOptionPane.showMessageDialog(MainApplication.getMainFrame(), "<html>"
                                 + tr("The following errors occurred during mass download: {0}",
                                         Utils.joinAsHtmlUnorderedList(items)) + "</html>",
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandler.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandler.java	(revision 14153)
@@ -17,6 +17,6 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -91,5 +91,5 @@
                     } else {
                         JOptionPane.showMessageDialog(
-                                Main.parent,
+                                MainApplication.getMainFrame(),
                                 error.toString(),
                                 tr("Error during download"),
@@ -115,5 +115,5 @@
             if (!GraphicsEnvironment.isHeadless()) {
                 SwingUtilities.invokeLater(() -> JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         "<html>"+Utils.joinAsHtmlUnorderedList(items)+"</html>",
                         tr("Errors during download"),
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java	(revision 14153)
@@ -10,5 +10,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.NoteData;
@@ -72,5 +71,5 @@
         map.selectMapMode(map.mapModeSelect);
 
-        NoteInputDialog dialog = new NoteInputDialog(Main.parent, tr("Create a new note"), tr("Create note"));
+        NoteInputDialog dialog = new NoteInputDialog(MainApplication.getMainFrame(), tr("Create a new note"), tr("Create note"));
         dialog.showNoteDialog(tr("Enter a detailed comment to create a note"), ImageProvider.get("dialogs/notes", "note_new"));
 
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 14153)
@@ -32,5 +32,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.command.AddCommand;
@@ -531,5 +530,5 @@
             if (n.getCoor().isOutSideWorld()) {
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr("Cannot add a node outside of the world."),
                         tr("Warning"),
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java	(revision 14153)
@@ -21,5 +21,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.AddCommand;
 import org.openstreetmap.josm.command.ChangeCommand;
@@ -416,5 +415,5 @@
             // Checking if the new coordinate is outside of the world
             if (mv.getLatLon(mousePos.x, mousePos.y).isOutSideWorld()) {
-                JOptionPane.showMessageDialog(Main.parent,
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                         tr("Cannot add a node outside of the world."),
                         tr("Warning"), JOptionPane.WARNING_MESSAGE);
@@ -502,5 +501,5 @@
                     }
                 } else if (candidateNode.isTagged()) {
-                    JOptionPane.showMessageDialog(Main.parent,
+                    JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                             tr("Cannot delete node that has tags"),
                             tr("Error"), JOptionPane.ERROR_MESSAGE);
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 14153)
@@ -22,5 +22,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.MergeNodesAction;
 import org.openstreetmap.josm.command.AddCommand;
@@ -731,5 +730,5 @@
                         // TODO: We might use a simple notification in the lower left corner.
                         JOptionPane.showMessageDialog(
-                                Main.parent,
+                                MainApplication.getMainFrame(),
                                 tr("Cannot move objects outside of the world."),
                                 tr("Warning"),
@@ -873,5 +872,5 @@
     static class ConfirmMoveDialog extends ExtendedDialog {
         ConfirmMoveDialog() {
-            super(Main.parent,
+            super(MainApplication.getMainFrame(),
                     tr("Move elements"),
                     tr("Move them"), tr("Undo move"));
Index: /trunk/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java	(revision 14153)
@@ -12,5 +12,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.IRelation;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -78,5 +77,5 @@
         if (filteredRelations.size() > Config.getPref().getInt("warn.open.maxrelations", 5) &&
             /* I18N english text for value 1 makes no real sense, never called for values <= maxrel (usually 5) */
-            JOptionPane.OK_OPTION != JOptionPane.showConfirmDialog(Main.parent,
+            JOptionPane.OK_OPTION != JOptionPane.showConfirmDialog(MainApplication.getMainFrame(),
                     "<html>"+trn("You are about to open <b>{0}</b> different relation editor simultaneously.<br/>Do you want to continue?",
                             "You are about to open <b>{0}</b> different relation editors simultaneously.<br/>Do you want to continue?",
Index: /trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 14153)
@@ -40,5 +40,4 @@
 import javax.swing.text.JTextComponent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ActionParameter;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
@@ -400,5 +399,5 @@
 
         ExtendedDialog dialog = new ExtendedDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 initialValues instanceof Filter ? tr("Filter") : tr("Search"),
                 initialValues instanceof Filter ? tr("Submit filter") : tr("Start Search"),
@@ -419,5 +418,5 @@
                         Logging.debug(e);
                         JOptionPane.showMessageDialog(
-                                Main.parent,
+                                MainApplication.getMainFrame(),
                                 "<html>" + tr("Search expression is not valid: \n\n {0}",
                                         e.getMessage().replace("<html>", "").replace("</html>", "")).replace("\n", "<br>") +
@@ -835,5 +834,5 @@
                 Logging.debug(e);
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         e.getMessage(),
                         tr("Error"),
Index: /trunk/src/org/openstreetmap/josm/actions/upload/ApiPreconditionCheckerHook.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/upload/ApiPreconditionCheckerHook.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/upload/ApiPreconditionCheckerHook.java	(revision 14153)
@@ -9,5 +9,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -75,5 +74,5 @@
                         continue;
                     }
-                    JOptionPane.showMessageDialog(Main.parent,
+                    JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                             tr("Length of value for tag ''{0}'' on object {1} exceeds the max. allowed length {2}. Values length is {3}.",
                                     key, Long.toString(osmPrimitive.getId()), Tagged.MAX_TAG_LENGTH, value.length()
@@ -90,5 +89,5 @@
                     ((Way) osmPrimitive).getNodesCount() > maxNodes) {
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr("{0} nodes in way {1} exceed the max. allowed number of nodes {2}",
                                 ((Way) osmPrimitive).getNodesCount(),
Index: /trunk/src/org/openstreetmap/josm/actions/upload/RelationUploadOrderHook.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/upload/RelationUploadOrderHook.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/upload/RelationUploadOrderHook.java	(revision 14153)
@@ -16,9 +16,9 @@
 import javax.swing.table.DefaultTableModel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.osm.CyclicUploadDependencyException;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PrimitiveRenderer;
 import org.openstreetmap.josm.gui.util.WindowGeometry;
@@ -80,5 +80,5 @@
         JPanel pnl = buildWarningPanel(dep);
         ExtendedDialog dialog = new ExtendedDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 tr("Cycling dependencies"),
                 tr("OK")
@@ -88,5 +88,5 @@
         dialog.setRememberWindowGeometry(
                 getClass().getName() + ".geometry",
-                WindowGeometry.centerInWindow(Main.parent, new Dimension(300, 300))
+                WindowGeometry.centerInWindow(MainApplication.getMainFrame(), new Dimension(300, 300))
         );
         dialog.showDialog();
Index: /trunk/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java	(revision 14153)
@@ -13,5 +13,4 @@
 import javax.swing.JScrollPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -144,5 +143,5 @@
         p.add(new JScrollPane(errorPanel), GBC.eol().fill(GBC.BOTH));
 
-        ExtendedDialog ed = new ExtendedDialog(Main.parent,
+        ExtendedDialog ed = new ExtendedDialog(MainApplication.getMainFrame(),
                 tr("Suspicious data found. Upload anyway?"),
                 tr("Continue upload"), tr("Cancel"))
Index: /trunk/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java	(revision 14153)
@@ -10,5 +10,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.conflict.Conflict;
@@ -17,4 +16,5 @@
 import org.openstreetmap.josm.data.osm.OsmDataManager;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Logging;
@@ -41,5 +41,5 @@
     protected void warnBecauseOfDoubleConflict() {
         JOptionPane.showMessageDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 tr("<html>Layer ''{0}'' already has a conflict for object<br>"
                         + "''{1}''.<br>"
Index: /trunk/src/org/openstreetmap/josm/corrector/ReverseWayNoTagCorrector.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/corrector/ReverseWayNoTagCorrector.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/corrector/ReverseWayNoTagCorrector.java	(revision 14153)
@@ -10,5 +10,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.Tag;
@@ -17,4 +16,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.UserCancelException;
 import org.openstreetmap.josm.tools.Utils;
@@ -91,5 +91,5 @@
         int ret = ConditionalOptionPaneUtil.showOptionDialog(
                 "reverse_directional_way",
-                Main.parent,
+                MainApplication.getMainFrame(),
                 msg,
                 tr("Reverse directional way."),
Index: /trunk/src/org/openstreetmap/josm/corrector/TagCorrector.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/corrector/TagCorrector.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/corrector/TagCorrector.java	(revision 14153)
@@ -20,5 +20,4 @@
 import javax.swing.JScrollPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.ChangeRelationMemberRoleCommand;
@@ -32,4 +31,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.correction.RoleCorrectionTable;
 import org.openstreetmap.josm.gui.correction.TagCorrectionTable;
@@ -150,5 +150,5 @@
 
             int answer = JOptionPane.showOptionDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     p,
                     tr("Automatic tag correction"),
Index: /trunk/src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 14153)
@@ -34,5 +34,4 @@
 import javax.xml.stream.XMLStreamException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.preferences.ColorInfo;
 import org.openstreetmap.josm.data.preferences.JosmBaseDirectories;
@@ -40,4 +39,5 @@
 import org.openstreetmap.josm.data.preferences.PreferencesReader;
 import org.openstreetmap.josm.data.preferences.PreferencesWriter;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.io.OfflineAccessException;
 import org.openstreetmap.josm.io.OnlineResource;
@@ -454,5 +454,5 @@
                 if (!GraphicsEnvironment.isHeadless()) {
                     JOptionPane.showMessageDialog(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             tr("<html>Failed to initialize preferences.<br>Preference directory ''{0}'' is not a directory.</html>",
                                     prefDir.getAbsoluteFile()),
@@ -469,5 +469,5 @@
                 if (!GraphicsEnvironment.isHeadless()) {
                     JOptionPane.showMessageDialog(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             tr("<html>Failed to initialize preferences.<br>Failed to create missing preference directory: {0}</html>",
                                     prefDir.getAbsoluteFile()),
@@ -497,5 +497,5 @@
             if (!GraphicsEnvironment.isHeadless()) {
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr("<html>Failed to initialize preferences.<br>Failed to reset preference file to default: {0}</html>",
                                 getPreferenceFile().getAbsoluteFile()),
@@ -514,5 +514,5 @@
             if (!GraphicsEnvironment.isHeadless()) {
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr("<html>Preferences file had errors.<br> Making backup of old one to <br>{0}<br> " +
                                 "and creating a new default preference file.</html>",
Index: /trunk/src/org/openstreetmap/josm/data/PreferencesUtils.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/PreferencesUtils.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/data/PreferencesUtils.java	(revision 14153)
@@ -18,5 +18,5 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.spi.preferences.IPreferences;
 import org.openstreetmap.josm.spi.preferences.ListListSetting;
@@ -270,5 +270,5 @@
         log("Warning: Unknown default value of %s , skipped\n", key);
         JOptionPane.showMessageDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 tr("<html>Settings file asks to append preferences to <b>{0}</b>,<br/> "+
                         "but its default value is unknown at this moment.<br/> " +
Index: /trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java	(revision 14153)
@@ -43,5 +43,4 @@
 import org.openstreetmap.gui.jmapviewer.interfaces.TemplatedTileSource;
 import org.openstreetmap.gui.jmapviewer.tilesources.AbstractTMSTileSource;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.ProjectionBounds;
 import org.openstreetmap.josm.data.coor.EastNorth;
@@ -53,4 +52,5 @@
 import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.NativeScaleLayer.ScaleList;
 import org.openstreetmap.josm.gui.layer.imagery.WMTSLayerSelection;
@@ -281,5 +281,5 @@
 
         SelectLayerDialog(Collection<Layer> layers) {
-            super(Main.parent, tr("Select WMTS layer"), tr("Add layers"), tr("Cancel"));
+            super(MainApplication.getMainFrame(), tr("Select WMTS layer"), tr("Add layers"), tr("Cancel"));
             this.list = new WMTSLayerSelection(groupLayersByNameAndTileMatrixSet(layers));
             setContent(list);
Index: /trunk/src/org/openstreetmap/josm/data/osm/ChangesetCache.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/ChangesetCache.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/data/osm/ChangesetCache.java	(revision 14153)
@@ -12,8 +12,8 @@
 import java.util.stream.Collectors;
 
+import org.openstreetmap.josm.data.UserIdentityManager;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.spi.preferences.PreferenceChangeEvent;
 import org.openstreetmap.josm.spi.preferences.PreferenceChangedListener;
-import org.openstreetmap.josm.data.UserIdentityManager;
-import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
Index: /trunk/src/org/openstreetmap/josm/data/osm/FilterModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/FilterModel.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/data/osm/FilterModel.java	(revision 14153)
@@ -16,5 +16,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.StructUtils;
 import org.openstreetmap.josm.data.osm.Filter.FilterPreferenceEntry;
@@ -56,5 +55,5 @@
                 Logging.error(e);
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr("<html>Error in filter <code>{0}</code>:<br>{1}",
                                 Utils.escapeReservedCharactersHTML(Utils.shortenString(filter.text, 80)),
Index: /trunk/src/org/openstreetmap/josm/data/preferences/CachedProperty.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/preferences/CachedProperty.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/data/preferences/CachedProperty.java	(revision 14153)
@@ -2,7 +2,7 @@
 package org.openstreetmap.josm.data.preferences;
 
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.spi.preferences.PreferenceChangeEvent;
 import org.openstreetmap.josm.spi.preferences.PreferenceChangedListener;
-import org.openstreetmap.josm.spi.preferences.Config;
 
 /**
Index: /trunk/src/org/openstreetmap/josm/data/preferences/JosmBaseDirectories.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/preferences/JosmBaseDirectories.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/data/preferences/JosmBaseDirectories.java	(revision 14153)
@@ -10,5 +10,5 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.spi.preferences.IBaseDirectories;
@@ -73,5 +73,5 @@
                 if (!GraphicsEnvironment.isHeadless()) {
                     JOptionPane.showMessageDialog(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             tr("<html>Failed to create missing preferences directory: {0}</html>", preferencesDir.getAbsoluteFile()),
                             tr("Error"),
@@ -106,5 +106,5 @@
                 if (!GraphicsEnvironment.isHeadless()) {
                     JOptionPane.showMessageDialog(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             tr("<html>Failed to create missing user data directory: {0}</html>", userdataDir.getAbsoluteFile()),
                             tr("Error"),
@@ -144,5 +144,5 @@
                 if (!GraphicsEnvironment.isHeadless()) {
                     JOptionPane.showMessageDialog(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             tr("<html>Failed to create missing cache directory: {0}</html>", cacheDir.getAbsoluteFile()),
                             tr("Error"),
Index: /trunk/src/org/openstreetmap/josm/data/validation/OsmValidator.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/OsmValidator.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/data/validation/OsmValidator.java	(revision 14153)
@@ -29,5 +29,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.preferences.sources.ValidatorPrefHelper;
 import org.openstreetmap.josm.data.projection.ProjectionRegistry;
@@ -407,5 +406,5 @@
                 if (!GraphicsEnvironment.isHeadless()) {
                     GuiHelper.runInEDT(() ->
-                        JOptionPane.showMessageDialog(Main.parent, message, tr("Error"), JOptionPane.ERROR_MESSAGE)
+                        JOptionPane.showMessageDialog(MainApplication.getMainFrame(), message, tr("Error"), JOptionPane.ERROR_MESSAGE)
                     );
                 }
Index: /trunk/src/org/openstreetmap/josm/gui/DownloadParamType.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/DownloadParamType.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/DownloadParamType.java	(revision 14153)
@@ -16,5 +16,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.OpenLocationAction;
 import org.openstreetmap.josm.data.Bounds;
@@ -40,5 +39,5 @@
             if (b == null) {
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr("Ignoring malformed URL: \"{0}\"", s),
                         tr("Warning"),
@@ -60,5 +59,5 @@
                 Logging.warn(e);
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr("Ignoring malformed file URL: \"{0}\"", s),
                         tr("Warning"),
@@ -127,5 +126,5 @@
         if (!GraphicsEnvironment.isHeadless()) {
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("Parameter \"downloadgps\" does not accept file names or file URLs"),
                     tr("Warning"),
Index: /trunk/src/org/openstreetmap/josm/gui/ExceptionDialogUtil.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/ExceptionDialogUtil.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/ExceptionDialogUtil.java	(revision 14153)
@@ -15,5 +15,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
@@ -50,5 +49,5 @@
     public static void explainOsmApiInitializationException(OsmApiInitializationException e) {
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 ExceptionUtil.explainOsmApiInitializationException(e),
                 tr("Error"),
@@ -65,5 +64,5 @@
     public static void explainChangesetClosedException(ChangesetClosedException e) {
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 ExceptionUtil.explainChangesetClosedException(e),
                 tr("Error"),
@@ -80,5 +79,5 @@
     public static void explainPreconditionFailed(OsmApiException e) {
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 ExceptionUtil.explainPreconditionFailed(e),
                 tr("Precondition violation"),
@@ -108,5 +107,5 @@
     public static void explainSecurityException(OsmTransferException e) {
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 ExceptionUtil.explainSecurityException(e),
                 tr("Security exception"),
@@ -126,5 +125,5 @@
     public static void explainNestedSocketException(OsmTransferException e) {
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 ExceptionUtil.explainNestedSocketException(e),
                 tr("Network exception"),
@@ -144,5 +143,5 @@
     public static void explainNestedIOException(OsmTransferException e) {
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 ExceptionUtil.explainNestedIOException(e),
                 tr("IO Exception"),
@@ -160,5 +159,5 @@
     public static void explainNestedIllegalDataException(OsmTransferException e) {
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 ExceptionUtil.explainNestedIllegalDataException(e),
                 tr("Illegal Data"),
@@ -177,5 +176,5 @@
     public static void explainNestedOfflineAccessException(OsmTransferException e) {
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 ExceptionUtil.explainOfflineAccessException(e),
                 tr("Offline mode"),
@@ -207,5 +206,5 @@
     public static void explainInternalServerError(OsmTransferException e) {
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 ExceptionUtil.explainInternalServerError(e),
                 tr("Internal Server Error"),
@@ -223,5 +222,5 @@
     public static void explainBadRequest(OsmApiException e) {
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 ExceptionUtil.explainBadRequest(e),
                 tr("Bad Request"),
@@ -239,5 +238,5 @@
     public static void explainNotFound(OsmApiException e) {
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 ExceptionUtil.explainNotFound(e),
                 tr("Not Found"),
@@ -254,5 +253,5 @@
     public static void explainConflict(OsmApiException e) {
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 ExceptionUtil.explainConflict(e),
                 tr("Conflict"),
@@ -277,5 +276,5 @@
 
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 msg,
                 tr("Authentication failed"),
@@ -314,5 +313,5 @@
 
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 msg,
                 tr("Authorisation Failed"),
@@ -330,5 +329,5 @@
     public static void explainClientTimeout(OsmApiException e) {
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 ExceptionUtil.explainClientTimeout(e),
                 tr("Client Time Out"),
@@ -346,5 +345,5 @@
     public static void explainBandwidthLimitExceeded(OsmApiException e) {
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 ExceptionUtil.explainBandwidthLimitExceeded(e),
                 tr("Bandwidth Limit Exceeded"),
@@ -368,5 +367,5 @@
         }
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 msg,
                 tr("Communication with OSM server failed"),
@@ -384,5 +383,5 @@
     public static void explainMissingOAuthAccessTokenException(MissingOAuthAccessTokenException e) {
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 ExceptionUtil.explainMissingOAuthAccessTokenException(e),
                 tr("Authentication failed"),
@@ -401,5 +400,5 @@
     public static void explainNestedUnkonwnHostException(OsmTransferException e) {
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 ExceptionUtil.explainNestedUnknownHostException(e),
                 tr("Unknown host"),
@@ -504,5 +503,5 @@
     public static void explainGoneForUnknownPrimitive(OsmApiException e) {
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 ExceptionUtil.explainGoneForUnknownPrimitive(e),
                 tr("Object deleted"),
Index: /trunk/src/org/openstreetmap/josm/gui/ExtendedDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/ExtendedDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/ExtendedDialog.java	(revision 14153)
@@ -64,5 +64,5 @@
  * <pre>
  *  ExtendedDialog ed = new ExtendedDialog(
- *          Main.parent, tr("Dialog Title"),
+ *          MainApplication.getMainFrame(), tr("Dialog Title"),
  *          new String[] {tr("Ok"), tr("Cancel")});
  *  ed.setButtonIcons(new String[] {"ok", "cancel"});   // optional
Index: /trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 14153)
@@ -174,4 +174,5 @@
  * @author imi
  */
+@SuppressWarnings("deprecation")
 public class MainApplication extends Main {
 
@@ -206,5 +207,5 @@
     static volatile ToolbarPreferences toolbar;
 
-    private final MainFrame mainFrame;
+    private static MainFrame mainFrame;
 
     /**
@@ -343,8 +344,8 @@
      */
     public MainApplication(MainFrame mainFrame) {
-        this.mainFrame = mainFrame;
+        MainApplication.mainFrame = mainFrame;
         getLayerManager().addLayerChangeListener(undoRedoCleaner);
         ProjectionRegistry.setboundsProvider(mainBoundsProvider);
-        Lifecycle.setShutdownSequence(new MainTermination(this));
+        Lifecycle.setShutdownSequence(new MainTermination());
     }
 
@@ -359,5 +360,5 @@
     public static void askUpdateJava(String updVersion, String url, String eolDate, boolean major) {
         ExtendedDialog ed = new ExtendedDialog(
-                Main.parent,
+                mainFrame,
                 tr("Outdated Java version"),
                 tr("OK"), tr("Update Java"), tr("Cancel"));
@@ -414,5 +415,5 @@
      * @since 14140
      */
-    public final MainFrame getMainFrame() {
+    public static MainFrame getMainFrame() {
         return mainFrame;
     }
@@ -1350,5 +1351,5 @@
                 if (!unsavedLayerFiles.isEmpty()) {
                     ExtendedDialog dialog = new ExtendedDialog(
-                            Main.parent,
+                            mainFrame,
                             tr("Unsaved osm data"),
                             tr("Restore"), tr("Cancel"), tr("Discard")
@@ -1377,5 +1378,5 @@
             if (hasErrors) {
                 ExtendedDialog ed = new ExtendedDialog(
-                        Main.parent, title,
+                        mainFrame, title,
                         tr("Change proxy settings"), tr("Cancel"));
                 ed.setButtonIcons("dialogs/settings", "cancel").setCancelButton(2);
@@ -1435,5 +1436,5 @@
                 protected void realRun() throws SAXException, IOException, OsmTransferException {
                     // Wait for JOSM startup is advanced enough to load a file
-                    while (Main.parent == null || !Main.parent.isVisible()) {
+                    while (mainFrame == null || !mainFrame.isVisible()) {
                         try {
                             Thread.sleep(25);
Index: /trunk/src/org/openstreetmap/josm/gui/MainTermination.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MainTermination.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/MainTermination.java	(revision 14153)
@@ -6,5 +6,4 @@
 import java.io.IOException;
 import java.nio.file.InvalidPathException;
-import java.util.Objects;
 
 import org.openstreetmap.josm.data.Preferences;
@@ -19,14 +18,4 @@
 public class MainTermination implements Runnable {
 
-    private final MainApplication application;
-
-    /**
-     * Constructs a new {@code MainTermination}
-     * @param application Main application. Must not be null
-     */
-    public MainTermination(MainApplication application) {
-        this.application = Objects.requireNonNull(application);
-    }
-
     @Override
     public void run() {
@@ -38,6 +27,6 @@
         JCSCacheManager.shutdown();
 
-        if (application.getMainFrame() != null) {
-            application.getMainFrame().storeState();
+        if (MainApplication.getMainFrame() != null) {
+            MainApplication.getMainFrame().storeState();
         }
         if (MainApplication.getMap() != null) {
Index: /trunk/src/org/openstreetmap/josm/gui/MapStatus.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 14153)
@@ -59,5 +59,4 @@
 import javax.swing.event.PopupMenuListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.SystemOfMeasurement;
 import org.openstreetmap.josm.data.SystemOfMeasurement.SoMChangeListener;
@@ -252,5 +251,6 @@
             tr("The length of the new way segment being drawn."), 10, PROP_BACKGROUND_COLOR.get());
     private final ImageLabel nameText = new ImageLabel("name",
-            tr("The name of the object at the mouse pointer."), getNameLabelCharacterCount(Main.parent), PROP_BACKGROUND_COLOR.get());
+            tr("The name of the object at the mouse pointer."),
+            getNameLabelCharacterCount(MainApplication.getMainFrame()), PROP_BACKGROUND_COLOR.get());
     private final JosmTextField helpText = new JosmTextField();
     private final JProgressBar progressBar = new JProgressBar();
@@ -957,5 +957,5 @@
             @Override
             public void componentResized(ComponentEvent e) {
-                nameText.setCharCount(getNameLabelCharacterCount(Main.parent));
+                nameText.setCharCount(getNameLabelCharacterCount(MainApplication.getMainFrame()));
                 revalidate();
             }
Index: /trunk/src/org/openstreetmap/josm/gui/MenuScroller.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MenuScroller.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/MenuScroller.java	(revision 14153)
@@ -28,5 +28,4 @@
 import javax.swing.event.PopupMenuListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.tools.Logging;
@@ -58,5 +57,5 @@
         if (menu != null) {
             // Compute max height of current screen
-            int maxHeight = WindowGeometry.getMaxDimensionOnScreen(menu).height - ((JFrame) Main.parent).getInsets().top;
+            int maxHeight = WindowGeometry.getMaxDimensionOnScreen(menu).height - ((JFrame) MainApplication.getMainFrame()).getInsets().top;
 
             // Remove top fixed part height
@@ -313,5 +312,5 @@
             }
 
-            int allowedHeight = WindowGeometry.getMaxDimensionOnScreen(menu).height - ((JFrame) Main.parent).getInsets().top;
+            int allowedHeight = WindowGeometry.getMaxDimensionOnScreen(menu).height - ((JFrame) MainApplication.getMainFrame()).getInsets().top;
 
             boolean mustSCroll = allItemsHeight > allowedHeight;
Index: /trunk/src/org/openstreetmap/josm/gui/NoteSortDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/NoteSortDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/NoteSortDialog.java	(revision 14153)
@@ -28,5 +28,5 @@
     /**
      * Construct a new dialog. The constructor automatically adds a "Cancel" button.
-     * @param parent - Parent component. Usually Main.parent
+     * @param parent - Parent component. Usually MainApplication.getMainFrame()
      * @param title - Translated text to display in the title bar of the dialog
      * @param buttonText - Translated text to be shown on the action button
Index: /trunk/src/org/openstreetmap/josm/gui/NotificationManager.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/NotificationManager.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/NotificationManager.java	(revision 14153)
@@ -36,5 +36,4 @@
 import javax.swing.Timer;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.gui.help.HelpBrowser;
@@ -109,5 +108,5 @@
 
             int margin = 5;
-            JFrame parentWindow = (JFrame) Main.parent;
+            JFrame parentWindow = MainApplication.getMainFrame();
             Dimension size = currentNotificationPanel.getPreferredSize();
             if (parentWindow != null) {
@@ -117,5 +116,5 @@
                 if (MainApplication.isDisplayingMapView() && map.mapView.getHeight() > 0) {
                     MapView mv = map.mapView;
-                    Point mapViewPos = SwingUtilities.convertPoint(mv.getParent(), mv.getX(), mv.getY(), Main.parent);
+                    Point mapViewPos = SwingUtilities.convertPoint(mv.getParent(), mv.getX(), mv.getY(), MainApplication.getMainFrame());
                     x = mapViewPos.x + margin;
                     y = mapViewPos.y + mv.getHeight() - map.statusLine.getHeight() - size.height - margin;
@@ -152,5 +151,5 @@
         if (currentNotificationPanel != null) {
             currentNotificationPanel.setVisible(false);
-            JFrame parent = (JFrame) Main.parent;
+            JFrame parent = MainApplication.getMainFrame();
             if (parent != null) {
                 parent.getLayeredPane().remove(currentNotificationPanel);
Index: /trunk/src/org/openstreetmap/josm/gui/SplashScreen.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/SplashScreen.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/SplashScreen.java	(revision 14153)
@@ -32,5 +32,4 @@
 import javax.swing.event.ChangeListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Version;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -370,5 +369,5 @@
         @Override
         public Component getWindowParent() {
-            return Main.parent;
+            return MainApplication.getMainFrame();
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java	(revision 14153)
@@ -40,5 +40,4 @@
 import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
 import org.openstreetmap.gui.jmapviewer.tilesources.OsmTileSource;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.Version;
@@ -102,5 +101,5 @@
                     Logging.warn(ex);
                     if (ex.getMessage() != null && !ex.getMessage().isEmpty()) {
-                        JOptionPane.showMessageDialog(Main.parent,
+                        JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                                 ex.getMessage(), tr("Warning"),
                                 JOptionPane.WARNING_MESSAGE);
Index: /trunk/src/org/openstreetmap/josm/gui/bugreport/BugReportDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/bugreport/BugReportDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/bugreport/BugReportDialog.java	(revision 14153)
@@ -5,5 +5,4 @@
 
 import java.awt.Component;
-import java.awt.Frame;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
@@ -22,6 +21,6 @@
 import javax.swing.UIManager;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.preferences.plugin.PluginPreference;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -78,5 +77,5 @@
                 errorPanel.add(new DebugTextDisplay(statusText));
 
-                JOptionPane.showMessageDialog(Main.parent, errorPanel, tr("You have encountered a bug in JOSM"),
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(), errorPanel, tr("You have encountered a bug in JOSM"),
                         JOptionPane.ERROR_MESSAGE);
             });
@@ -89,5 +88,5 @@
      */
     public BugReportDialog(BugReport report) {
-        super(findParent(), tr("You have encountered a bug in JOSM"));
+        super(MainApplication.getMainFrame(), tr("You have encountered a bug in JOSM"));
         this.report = report;
         textPanel = new DebugTextDisplay(report);
@@ -243,12 +242,4 @@
 
     /**
-     * A safe way to find a matching parent frame.
-     * @return The parent frame.
-     */
-    private static Frame findParent() {
-        return (Frame) (Main.parent instanceof Frame ? Main.parent : SwingUtilities.getAncestorOfClass(Frame.class, Main.parent));
-    }
-
-    /**
      * Show the bug report for a given exception
      * @param e The exception to display
@@ -260,5 +251,5 @@
         if (e.isOutOfMemory()) {
             // do not translate the string, as translation may raise an exception
-            JOptionPane.showMessageDialog(Main.parent, "JOSM is out of memory. " +
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(), "JOSM is out of memory. " +
                     "Strange things may happen.\nPlease restart JOSM with the -Xmx###M option,\n" +
                     "where ### is the number of MB assigned to JOSM (e.g. 256).\n" +
@@ -274,5 +265,5 @@
                     // Ask for restart to install new plugin
                     PluginPreference.notifyDownloadResults(
-                            Main.parent, downloadTask, !downloadTask.getDownloadedPlugins().isEmpty());
+                            MainApplication.getMainFrame(), downloadTask, !downloadTask.getDownloadedPlugins().isEmpty());
                     return SuppressionMode.NONE;
                 }
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMergeModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMergeModel.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMergeModel.java	(revision 14153)
@@ -28,5 +28,4 @@
 import javax.swing.table.TableModel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.conflict.ConflictResolveCommand;
 import org.openstreetmap.josm.data.conflict.Conflict;
@@ -36,4 +35,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.util.ChangeNotifier;
@@ -382,5 +382,5 @@
           .append("</html>");
         HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 sb.toString(),
                 tr("Merging deleted objects failed"),
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java	(revision 14153)
@@ -31,5 +31,4 @@
 import javax.swing.JSplitPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
 import org.openstreetmap.josm.command.Command;
@@ -41,4 +40,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.help.ContextSensitiveHelpAction;
 import org.openstreetmap.josm.gui.help.HelpUtil;
@@ -66,5 +66,5 @@
  * Models have to be <strong>populated</strong> before the dialog is launched. Example:
  * <pre>
- *    CombinePrimitiveResolverDialog dialog = new CombinePrimitiveResolverDialog(Main.parent);
+ *    CombinePrimitiveResolverDialog dialog = new CombinePrimitiveResolverDialog(MainApplication.getMainFrame());
  *    dialog.getTagConflictResolverModel().populate(aTagCollection);
  *    dialog.getRelationMemberConflictResolverModel().populate(aRelationLinkCollection);
@@ -370,5 +370,5 @@
             prepareGUIBeforeConflictResolutionStarts();
             setMinimumSize(new Dimension(400, 400));
-            new WindowGeometry(getClass().getName() + ".geometry", WindowGeometry.centerInWindow(Main.parent,
+            new WindowGeometry(getClass().getName() + ".geometry", WindowGeometry.centerInWindow(MainApplication.getMainFrame(),
                     new Dimension(800, 600))).applySafe(this);
             setApplied(false);
@@ -521,5 +521,6 @@
             UserCancelException canceled = GuiHelper.runInEDTAndWaitAndReturn(() -> {
                 // Build conflict resolution dialog
-                final CombinePrimitiveResolverDialog dialog = new CombinePrimitiveResolverDialog(Main.parent, tagModel, relModel);
+                final CombinePrimitiveResolverDialog dialog = new CombinePrimitiveResolverDialog(
+                        MainApplication.getMainFrame(), tagModel, relModel);
 
                 // Ensure a proper title is displayed instead of a previous target (fix #7925)
@@ -580,5 +581,5 @@
         if (!ConditionalOptionPaneUtil.showConfirmationDialog(
                 "combine_tags",
-                Main.parent,
+                MainApplication.getMainFrame(),
                 "<html>" + msg + "</html>",
                 tr("Combine confirmation"),
@@ -614,5 +615,5 @@
         if (!ConditionalOptionPaneUtil.showConfirmationDialog(
                 "combine_tags",
-                Main.parent,
+                MainApplication.getMainFrame(),
                 "<html>" + msg + "</html>",
                 tr("Combine confirmation"),
Index: /trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java	(revision 14153)
@@ -14,5 +14,4 @@
 import javax.swing.TransferHandler.TransferSupport;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.AddPrimitivesCommand;
 import org.openstreetmap.josm.data.UndoRedoHandler;
@@ -26,4 +25,5 @@
 import org.openstreetmap.josm.data.projection.ProjectionRegistry;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -137,5 +137,5 @@
 
     private static boolean confirmDeleteIncomplete() {
-        ExtendedDialog ed = new ExtendedDialog(Main.parent, tr("Delete incomplete members?"),
+        ExtendedDialog ed = new ExtendedDialog(MainApplication.getMainFrame(), tr("Delete incomplete members?"),
                 tr("Paste without incomplete members"), tr("Cancel"));
         ed.setButtonIcons("dialogs/relation/deletemembers", "cancel");
Index: /trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveTagTransferPaster.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveTagTransferPaster.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveTagTransferPaster.java	(revision 14153)
@@ -14,5 +14,4 @@
 import javax.swing.TransferHandler.TransferSupport;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
 import org.openstreetmap.josm.command.Command;
@@ -25,4 +24,5 @@
 import org.openstreetmap.josm.data.osm.TagCollection;
 import org.openstreetmap.josm.data.osm.TagMap;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.conflict.tags.PasteTagsConflictResolverDialog;
 import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTagTransferData;
@@ -107,5 +107,5 @@
 
             if (!tc.isApplicableToPrimitive()) {
-                PasteTagsConflictResolverDialog dialog = new PasteTagsConflictResolverDialog(Main.parent);
+                PasteTagsConflictResolverDialog dialog = new PasteTagsConflictResolverDialog(MainApplication.getMainFrame());
                 dialog.populate(tc, data.getStatistics(), getTargetStatistics());
                 dialog.setVisible(true);
@@ -146,5 +146,5 @@
                 }
             } else {
-                PasteTagsConflictResolverDialog dialog = new PasteTagsConflictResolverDialog(Main.parent);
+                PasteTagsConflictResolverDialog dialog = new PasteTagsConflictResolverDialog(MainApplication.getMainFrame());
                 dialog.populate(
                         data.getForPrimitives(OsmPrimitiveType.NODE),
Index: /trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/TextTagPaster.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/TextTagPaster.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/TextTagPaster.java	(revision 14153)
@@ -16,6 +16,6 @@
 import javax.swing.TransferHandler.TransferSupport;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.help.HelpUtil;
@@ -85,5 +85,5 @@
     public static int warning(String text, String data, String code) {
         ExtendedDialog ed = new ExtendedDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("Do you want to paste these tags?"),
                     tr("Ok"), tr("Cancel"), tr("Clear buffer"), tr("Ignore warnings"));
@@ -118,5 +118,5 @@
 
         ExtendedDialog ed = new ExtendedDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("Warning"),
                     tr("Ok"), tr("Clear buffer"))
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 14153)
@@ -36,5 +36,4 @@
 import javax.swing.event.PopupMenuListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AbstractSelectAction;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
@@ -205,5 +204,5 @@
 
             Conflict<? extends OsmPrimitive> c = conflicts.get(index);
-            ConflictResolutionDialog dialog = new ConflictResolutionDialog(Main.parent);
+            ConflictResolutionDialog dialog = new ConflictResolutionDialog(MainApplication.getMainFrame());
             dialog.getConflictResolver().populate(c);
             dialog.showDialog();
@@ -627,5 +626,5 @@
             GuiHelper.runInEDT(() -> {
                 HelpAwareOptionPane.showOptionDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         sb.toString(),
                         tr("Conflicts detected"),
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictResolutionDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictResolutionDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictResolutionDialog.java	(revision 14153)
@@ -17,9 +17,9 @@
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.UndoRedoHandler;
 import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.conflict.pair.ConflictResolver;
 import org.openstreetmap.josm.gui.help.HelpBrowser;
@@ -180,5 +180,5 @@
                         tr("Close anyway"),
                         tr("Continue resolving")};
-                int ret = JOptionPane.showOptionDialog(Main.parent,
+                int ret = JOptionPane.showOptionDialog(MainApplication.getMainFrame(),
                         tr("<html>You did not finish to merge the differences in this conflict.<br>"
                                 + "Conflict resolutions will not be applied unless all differences<br>"
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java	(revision 14153)
@@ -32,9 +32,9 @@
 import javax.swing.table.TableColumn;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.NameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.RelationToChildReference;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PrimitiveRenderer;
 import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
@@ -132,5 +132,5 @@
      */
     public DeleteFromRelationConfirmationDialog() {
-        super(GuiHelper.getFrameForComponent(Main.parent), "", ModalityType.DOCUMENT_MODAL);
+        super(GuiHelper.getFrameForComponent(MainApplication.getMainFrame()), "", ModalityType.DOCUMENT_MODAL);
         build();
     }
@@ -164,5 +164,5 @@
                     getClass().getName() + ".geometry",
                     WindowGeometry.centerInWindow(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             new Dimension(400, 200)
                     )
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java	(revision 14153)
@@ -21,5 +21,4 @@
 import javax.swing.SingleSelectionModel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.IPrimitive;
@@ -63,8 +62,8 @@
      */
     public InspectPrimitiveDialog(final Collection<? extends IPrimitive> primitives, OsmData<?, ?, ?, ?> data) {
-        super(Main.parent, tr("Advanced object info"), tr("Close"));
+        super(MainApplication.getMainFrame(), tr("Advanced object info"), tr("Close"));
         this.primitives = new ArrayList<>(primitives);
         setRememberWindowGeometry(getClass().getName() + ".geometry",
-                WindowGeometry.centerInWindow(Main.parent, new Dimension(750, 550)));
+                WindowGeometry.centerInWindow(MainApplication.getMainFrame(), new Dimension(750, 550)));
 
         setButtonIcons("ok");
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListPopup.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListPopup.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListPopup.java	(revision 14153)
@@ -19,6 +19,6 @@
 import javax.swing.JPopupMenu;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.Layer.LayerAction;
@@ -55,5 +55,5 @@
             if (object instanceof Component) {
                 ExtendedDialog ed = new ExtendedDialog(
-                        Main.parent, tr("Information about layer"),
+                        MainApplication.getMainFrame(), tr("Information about layer"),
                         tr("OK"));
                 ed.setButtonIcons("ok");
@@ -65,5 +65,5 @@
             } else {
                 JOptionPane.showMessageDialog(
-                        Main.parent, object,
+                        MainApplication.getMainFrame(), object,
                         tr("Information about layer"),
                         JOptionPane.INFORMATION_MESSAGE
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/LogShowDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/LogShowDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/LogShowDialog.java	(revision 14153)
@@ -11,6 +11,6 @@
 import javax.swing.JScrollPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.widgets.JosmEditorPane;
 import org.openstreetmap.josm.tools.GBC;
@@ -30,5 +30,5 @@
      */
     public LogShowDialog(String title, String msg, String log) {
-        super(Main.parent, title, tr("OK"));
+        super(MainApplication.getMainFrame(), title, tr("OK"));
         setButtonIcons("ok");
         setContent(build(msg, log));
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java	(revision 14153)
@@ -52,5 +52,4 @@
 import javax.swing.table.TableCellRenderer;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.actions.JosmAction;
@@ -539,5 +538,5 @@
                 return;
             final StyleSource s = model.getRow(sel);
-            ExtendedDialog info = new ExtendedDialog(Main.parent, tr("Map Style info"), tr("Close"));
+            ExtendedDialog info = new ExtendedDialog(MainApplication.getMainFrame(), tr("Map Style info"), tr("Close"));
             info.setPreferredSize(new Dimension(600, 400));
             info.setButtonIcons("ok");
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/MenuItemSearchDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/MenuItemSearchDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/MenuItemSearchDialog.java	(revision 14153)
@@ -14,5 +14,4 @@
 import javax.swing.ListCellRenderer;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.gui.ExtendedDialog;
@@ -31,5 +30,5 @@
 
     private MenuItemSearchDialog(MainMenu menu) {
-        super(Main.parent, tr("Search menu items"), tr("Select"), tr("Cancel"));
+        super(MainApplication.getMainFrame(), tr("Search menu items"), tr("Select"), tr("Cancel"));
         this.selector = new MenuItemSelector(menu);
         this.selector.setDblClickListener(e -> buttonAction(0, null));
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java	(revision 14153)
@@ -28,5 +28,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.DownloadNotesInViewAction;
 import org.openstreetmap.josm.actions.UploadNotesAction;
@@ -320,5 +319,5 @@
                 return;
             }
-            NoteInputDialog dialog = new NoteInputDialog(Main.parent, tr("Comment on note"), tr("Add comment"));
+            NoteInputDialog dialog = new NoteInputDialog(MainApplication.getMainFrame(), tr("Comment on note"), tr("Add comment"));
             dialog.showNoteDialog(tr("Add comment to note:"), ImageProvider.get("dialogs/notes", "note_comment"));
             if (dialog.getValue() != 1) {
@@ -344,5 +343,5 @@
         @Override
         public void actionPerformed(ActionEvent e) {
-            NoteInputDialog dialog = new NoteInputDialog(Main.parent, tr("Close note"), tr("Close note"));
+            NoteInputDialog dialog = new NoteInputDialog(MainApplication.getMainFrame(), tr("Close note"), tr("Close note"));
             dialog.showNoteDialog(tr("Close note with message:"), ImageProvider.get("dialogs/notes", "note_closed"));
             if (dialog.getValue() != 1) {
@@ -389,5 +388,5 @@
         @Override
         public void actionPerformed(ActionEvent e) {
-            NoteInputDialog dialog = new NoteInputDialog(Main.parent, tr("Reopen note"), tr("Reopen note"));
+            NoteInputDialog dialog = new NoteInputDialog(MainApplication.getMainFrame(), tr("Reopen note"), tr("Reopen note"));
             dialog.showNoteDialog(tr("Reopen note with message:"), ImageProvider.get("dialogs/notes", "note_open"));
             if (dialog.getValue() != 1) {
@@ -415,5 +414,5 @@
         @Override
         public void actionPerformed(ActionEvent e) {
-            NoteSortDialog sortDialog = new NoteSortDialog(Main.parent, tr("Sort notes"), tr("Apply"));
+            NoteSortDialog sortDialog = new NoteSortDialog(MainApplication.getMainFrame(), tr("Sort notes"), tr("Apply"));
             sortDialog.showSortDialog(noteData.getCurrentSortMethod());
             if (sortDialog.getValue() == 1) {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 14153)
@@ -48,5 +48,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
@@ -569,5 +568,5 @@
                 pref.setBorder(BorderFactory.createEmptyBorder());
                 pref.addActionListener(e -> {
-                    final PreferenceDialog p = new PreferenceDialog(Main.parent);
+                    final PreferenceDialog p = new PreferenceDialog(MainApplication.getMainFrame());
                     if (TabPreferenceSetting.class.isAssignableFrom(preferenceClass)) {
                         p.selectPreferencesTabByClass((Class<? extends TabPreferenceSetting>) preferenceClass);
@@ -677,5 +676,5 @@
     private class DetachedDialog extends JDialog {
         DetachedDialog() {
-            super(GuiHelper.getFrameForComponent(Main.parent));
+            super(GuiHelper.getFrameForComponent(MainApplication.getMainFrame()));
             getContentPane().add(ToggleDialog.this);
             addWindowListener(new WindowAdapter() {
@@ -714,5 +713,5 @@
                 ToggleDialog.this.setPreferredSize(ToggleDialog.this.getDefaultDetachedSize());
                 pack();
-                setLocationRelativeTo(Main.parent);
+                setLocationRelativeTo(MainApplication.getMainFrame());
             }
             super.setTitle(titleBar.getTitle());
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 14153)
@@ -29,5 +29,4 @@
 import javax.swing.tree.TreePath;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AbstractSelectAction;
 import org.openstreetmap.josm.actions.AutoScaleAction;
@@ -251,5 +250,5 @@
                 if (asked == JOptionPane.DEFAULT_OPTION) {
                     String[] a = new String[] {tr("Whole group"), tr("Single elements"), tr("Nothing")};
-                    asked = JOptionPane.showOptionDialog(Main.parent, tr("Ignore whole group or individual elements?"),
+                    asked = JOptionPane.showOptionDialog(MainApplication.getMainFrame(), tr("Ignore whole group or individual elements?"),
                             tr("Ignoring elements"), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, null,
                             a, a[1]);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityAction.java	(revision 14153)
@@ -34,5 +34,5 @@
 import javax.swing.border.Border;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
@@ -117,5 +117,7 @@
             // Action can be trigger either by opacity button or by popup menu (in case toggle buttons are hidden).
             // In that case, show it in the middle of screen (because opacityButton is not visible)
-            popup.show(Main.parent, Main.parent.getWidth() / 2, (Main.parent.getHeight() - popup.getHeight()) / 2);
+            popup.show(MainApplication.getMainFrame(),
+                    MainApplication.getMainFrame().getWidth() / 2,
+                    (MainApplication.getMainFrame().getHeight() - popup.getHeight()) / 2);
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 14153)
@@ -48,5 +48,4 @@
 import javax.swing.table.TableRowSorter;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.actions.relation.DownloadMembersAction;
@@ -1029,5 +1028,5 @@
             }
 
-            ExtendedDialog ed = new ExtendedDialog(Main.parent,
+            ExtendedDialog ed = new ExtendedDialog(MainApplication.getMainFrame(),
                     tr("Change relation"),
                     tr("Delete from relation"), tr("Cancel"));
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/SearchBasedRowFilter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/SearchBasedRowFilter.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/SearchBasedRowFilter.java	(revision 14153)
@@ -27,5 +27,5 @@
 
     @Override
-    public boolean include(Entry entry) {
+    public boolean include(Entry<? extends TableModel, ? extends Integer> entry) {
         final String key = entry.getStringValue(0);
         final String value = entry.getStringValue(1);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(revision 14153)
@@ -62,5 +62,4 @@
 import javax.swing.text.JTextComponent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.actions.search.SearchAction;
@@ -83,4 +82,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;
@@ -351,5 +351,5 @@
         Logging.warn(parseError);
         JOptionPane.showMessageDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 parseError.getMessage(),
                 tr("Error"),
@@ -383,5 +383,5 @@
     private static boolean warnOverwriteKey(String action, String togglePref) {
         return new ExtendedDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 tr("Overwrite key"),
                 tr("Replace"), tr("Cancel"))
@@ -420,5 +420,5 @@
 
         protected EditTagDialog(String key, Map<String, Integer> map, final boolean initialFocusOnKey) {
-            super(Main.parent, trn("Change value?", "Change values?", map.size()), tr("OK"), tr("Cancel"));
+            super(MainApplication.getMainFrame(), trn("Change value?", "Change values?", map.size()), tr("OK"), tr("Cancel"));
             setButtonIcons("ok", "cancel");
             setCancelButton(2);
@@ -576,5 +576,5 @@
 
             setRememberWindowGeometry(getClass().getName() + ".geometry",
-                WindowGeometry.centerInWindow(Main.parent, size));
+                WindowGeometry.centerInWindow(MainApplication.getMainFrame(), size));
         }
 
@@ -688,5 +688,5 @@
 
         protected AddTagsDialog() {
-            super(Main.parent, tr("Add value?"), tr("OK"), tr("Cancel"));
+            super(MainApplication.getMainFrame(), tr("Add value?"), tr("OK"), tr("Cancel"));
             setButtonIcons("ok", "cancel");
             setCancelButton(2);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java	(revision 14153)
@@ -30,5 +30,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;
@@ -335,5 +334,5 @@
             if (conflictsCount > 0) {
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         trn("There was {0} conflict during import.",
                                 "There were {0} conflicts during import.",
@@ -374,5 +373,5 @@
 
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     message,
                     tr("Relation is deleted"),
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 14153)
@@ -49,5 +49,4 @@
 import javax.swing.KeyStroke;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.command.ChangeCommand;
@@ -182,5 +181,5 @@
 
         setRememberWindowGeometry(getClass().getName() + ".geometry",
-                WindowGeometry.centerInWindow(Main.parent, new Dimension(700, 650)));
+                WindowGeometry.centerInWindow(MainApplication.getMainFrame(), new Dimension(700, 650)));
 
         final TaggingPresetHandler presetHandler = new TaggingPresetHandler() {
@@ -780,5 +779,5 @@
             int ret = ConditionalOptionPaneUtil.showOptionDialog(
                     "clean_relation_self_references",
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("<html>There is at least one member in this relation referring<br>"
                             + "to the relation itself.<br>"
@@ -853,5 +852,5 @@
         int ret = ConditionalOptionPaneUtil.showOptionDialog(
                 "add_primitive_to_relation",
-                Main.parent,
+                MainApplication.getMainFrame(),
                 msg,
                 tr("Multiple members referring to same object."),
@@ -885,5 +884,5 @@
                 Utils.escapeReservedCharactersHTML(primitive.getDisplayName(DefaultNameFormatter.getInstance())));
         JOptionPane.showMessageDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 msg,
                 tr("Warning"),
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ParentRelationLoadingTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ParentRelationLoadingTask.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ParentRelationLoadingTask.java	(revision 14153)
@@ -12,8 +12,8 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.DataSetMerger;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -131,5 +131,5 @@
     protected void showLastException() {
         JOptionPane.showMessageDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 Optional.ofNullable(lastException.getMessage()).orElseGet(lastException::toString),
                 tr("Error"),
@@ -174,5 +174,5 @@
                 getLayer().getConflicts().add(visitor.getConflicts());
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr("There were {0} conflicts during import.",
                                 visitor.getConflicts().size()),
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java	(revision 14153)
@@ -8,8 +8,8 @@
 import java.util.Collection;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
@@ -52,5 +52,5 @@
      */
     protected RelationEditor(OsmDataLayer layer, Relation relation) {
-        super(Main.parent,
+        super(MainApplication.getMainFrame(),
                 "",
                 new String[] {tr("Apply Changes"), tr("Cancel")},
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/CancelAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/CancelAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/CancelAction.java	(revision 14153)
@@ -9,8 +9,8 @@
 import javax.swing.RootPaneContainer;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -83,5 +83,5 @@
 
         return HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 tr("<html>The relation has been changed.<br><br>Do you want to save your changes?</html>"),
                         tr("Unsaved changes"),
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RefreshAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RefreshAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RefreshAction.java	(revision 14153)
@@ -11,5 +11,4 @@
 import javax.swing.JRootPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.UndoRedoHandler;
 import org.openstreetmap.josm.data.UndoRedoHandler.CommandQueueListener;
@@ -17,4 +16,5 @@
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -94,5 +94,5 @@
 
         return HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 tr("<html>You have unsaved changes in this editor window.<br>"+
                    "<br>Do you want to discard these changes and reload data from layer?</html>"),
@@ -123,5 +123,5 @@
 
         return HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 tr("<html>Relation has been deleted outside editor.<br><br>Do you want to close this window?</html>"),
                         tr("Deleted relation"),
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java	(revision 14153)
@@ -11,5 +11,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.AddCommand;
 import org.openstreetmap.josm.command.ChangeCommand;
@@ -62,5 +61,5 @@
             String msg = tr("One or more members of this new relation have been deleted while the relation editor\n" +
             "was open. They have been removed from the relation members list.");
-            JOptionPane.showMessageDialog(Main.parent, msg, tr("Warning"), JOptionPane.WARNING_MESSAGE);
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(), msg, tr("Warning"), JOptionPane.WARNING_MESSAGE);
         }
         // If the user wanted to create a new relation, but hasn't added any members or
@@ -124,5 +123,5 @@
 
         int ret = HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 tr("<html>This relation has been changed outside of the editor.<br>"
                         + "You cannot apply your changes and continue editing.<br>"
@@ -144,5 +143,5 @@
     protected void warnDoubleConflict() {
         JOptionPane.showMessageDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 tr("<html>Layer ''{0}'' already has a conflict for object<br>"
                         + "''{1}''.<br>"
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SetRoleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SetRoleAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SetRoleAction.java	(revision 14153)
@@ -11,6 +11,6 @@
 import javax.swing.event.DocumentListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -61,5 +61,5 @@
         int ret = ConditionalOptionPaneUtil.showOptionDialog(
                 "relation_editor.confirm_applying_empty_role",
-                Main.parent,
+                MainApplication.getMainFrame(),
                 message,
                 tr("Confirm empty role"),
Index: /trunk/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java	(revision 14153)
@@ -22,7 +22,7 @@
 import javax.swing.event.ListSelectionListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.UserIdentityManager;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.download.BookmarkList.Bookmark;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
@@ -188,5 +188,5 @@
             if (currentArea == null) {
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr("Currently, there is no download area selected. Please select an area first."),
                         tr("Information"),
@@ -198,5 +198,5 @@
             b.setName(
                     JOptionPane.showInputDialog(
-                            Main.parent, tr("Please enter a name for the bookmarked download area."),
+                            MainApplication.getMainFrame(), tr("Please enter a name for the bookmarked download area."),
                             tr("Name of location"),
                             JOptionPane.QUESTION_MESSAGE)
@@ -259,5 +259,5 @@
             Object value =
                 JOptionPane.showInputDialog(
-                        Main.parent, tr("Please enter a name for the bookmarked download area."),
+                        MainApplication.getMainFrame(), tr("Please enter a name for the bookmarked download area."),
                         tr("Name of location"),
                         JOptionPane.QUESTION_MESSAGE,
Index: /trunk/src/org/openstreetmap/josm/gui/download/DownloadDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/download/DownloadDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/download/DownloadDialog.java	(revision 14153)
@@ -35,5 +35,4 @@
 import javax.swing.event.ChangeListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
 import org.openstreetmap.josm.data.Bounds;
@@ -81,5 +80,5 @@
     public static synchronized DownloadDialog getInstance() {
         if (instance == null) {
-            instance = new DownloadDialog(Main.parent);
+            instance = new DownloadDialog(MainApplication.getMainFrame());
         }
         return instance;
Index: /trunk/src/org/openstreetmap/josm/gui/download/DownloadObjectDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/download/DownloadObjectDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/download/DownloadObjectDialog.java	(revision 14153)
@@ -11,6 +11,6 @@
 import javax.swing.JCheckBox;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.OsmIdSelectionDialog;
 import org.openstreetmap.josm.io.NetworkManager;
@@ -31,8 +31,8 @@
 
     /**
-     * Constructs a new DownloadObjectDialog with Main.parent as parent component.
+     * Constructs a new DownloadObjectDialog with MainApplication.getMainFrame() as parent component.
      */
     public DownloadObjectDialog() {
-        this(Main.parent);
+        this(MainApplication.getMainFrame());
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/download/PlaceSelection.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/download/PlaceSelection.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/download/PlaceSelection.java	(revision 14153)
@@ -43,5 +43,4 @@
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
@@ -272,5 +271,5 @@
                     Logging.log(Logging.LEVEL_WARN, tr("Error occured with query ''{0}'': ''{1}''", urlString, e.getMessage()), e);
                     GuiHelper.runInEDTAndWait(() -> HelpAwareOptionPane.showOptionDialog(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             tr("Name server returned invalid data. Please try again."),
                             tr("Bad response"),
Index: /trunk/src/org/openstreetmap/josm/gui/help/HelpBrowser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/help/HelpBrowser.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/help/HelpBrowser.java	(revision 14153)
@@ -44,5 +44,4 @@
 import javax.swing.text.html.StyleSheet;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
@@ -384,5 +383,5 @@
                 Logging.warn(e);
                 HelpAwareOptionPane.showOptionDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr(
                                 "<html>Failed to open help page for url {0}.<br>"
@@ -469,5 +468,5 @@
                 if (!GraphicsEnvironment.isHeadless()) {
                     JOptionPane.showMessageDialog(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             message,
                             tr("Warning"),
Index: /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialog.java	(revision 14153)
@@ -18,5 +18,4 @@
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.history.History;
@@ -48,5 +47,5 @@
      */
     public HistoryBrowserDialog(History history) {
-        super(GuiHelper.getFrameForComponent(Main.parent), false);
+        super(GuiHelper.getFrameForComponent(MainApplication.getMainFrame()), false);
         build();
         setHistory(history);
Index: /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java	(revision 14153)
@@ -19,5 +19,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.history.History;
@@ -225,5 +224,5 @@
         if (notNewPrimitives.isEmpty()) {
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("Please select at least one already uploaded node, way, or relation."),
                     tr("Warning"),
Index: /trunk/src/org/openstreetmap/josm/gui/io/AbstractUploadTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/AbstractUploadTask.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/io/AbstractUploadTask.java	(revision 14153)
@@ -17,5 +17,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.DownloadReferrersAction;
 import org.openstreetmap.josm.actions.UpdateDataAction;
@@ -155,5 +154,5 @@
         );
         int ret = HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 msg,
                 tr("Conflicts detected"),
@@ -195,5 +194,5 @@
         );
         int ret = HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 msg,
                 tr("Conflicts detected"),
@@ -222,5 +221,5 @@
         );
         JOptionPane.showMessageDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 msg,
                 tr("Changeset closed"),
@@ -255,5 +254,5 @@
                 options[0].text)) + "</html>";
         int ret = HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 msg,
                 tr("Object still in use"),
Index: /trunk/src/org/openstreetmap/josm/gui/io/AsynchronousUploadPrimitivesTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/AsynchronousUploadPrimitivesTask.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/io/AsynchronousUploadPrimitivesTask.java	(revision 14153)
@@ -87,5 +87,5 @@
             if (asynchronousUploadPrimitivesTask != null) {
                 GuiHelper.runInEDTAndWait(() ->
-                        JOptionPane.showMessageDialog(MainApplication.parent,
+                        JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                                 tr("A background upload is already in progress. " +
                                         "Kindly wait for it to finish before uploading new changes")));
Index: /trunk/src/org/openstreetmap/josm/gui/io/CloseChangesetDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/CloseChangesetDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/io/CloseChangesetDialog.java	(revision 14153)
@@ -25,6 +25,6 @@
 import javax.swing.event.ListSelectionListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Changeset;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -97,5 +97,5 @@
             new WindowGeometry(
                     getClass().getName() + ".geometry",
-                    WindowGeometry.centerInWindow(Main.parent, new Dimension(300, 300))
+                    WindowGeometry.centerInWindow(MainApplication.getMainFrame(), new Dimension(300, 300))
             ).applySafe(this);
         } else if (isShowing()) { // Avoid IllegalComponentStateException like in #8775
@@ -109,5 +109,5 @@
      */
     public CloseChangesetDialog() {
-        super(GuiHelper.getFrameForComponent(Main.parent), ModalityType.DOCUMENT_MODAL);
+        super(GuiHelper.getFrameForComponent(MainApplication.getMainFrame()), ModalityType.DOCUMENT_MODAL);
         build();
     }
Index: /trunk/src/org/openstreetmap/josm/gui/io/CredentialDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/CredentialDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/io/CredentialDialog.java	(revision 14153)
@@ -30,5 +30,5 @@
 import javax.swing.JTextField;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
 import org.openstreetmap.josm.gui.help.HelpUtil;
@@ -120,5 +120,5 @@
     public void setVisible(boolean visible) {
         if (visible) {
-            WindowGeometry.centerInWindow(Main.parent, new Dimension(350, 300)).applySafe(this);
+            WindowGeometry.centerInWindow(MainApplication.getMainFrame(), new Dimension(350, 300)).applySafe(this);
         }
         super.setVisible(visible);
Index: /trunk/src/org/openstreetmap/josm/gui/io/CustomConfigurator.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/CustomConfigurator.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/io/CustomConfigurator.java	(revision 14153)
@@ -39,9 +39,9 @@
 import javax.xml.transform.stream.StreamResult;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.PreferencesUtils;
 import org.openstreetmap.josm.data.Version;
 import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MainFrame;
 import org.openstreetmap.josm.plugins.PluginDownloadTask;
 import org.openstreetmap.josm.plugins.PluginInformation;
@@ -137,10 +137,9 @@
         }
         File fOut = new File(dir, path);
-        DownloadFileTask downloadFileTask = new DownloadFileTask(Main.parent, address, fOut, mkdir, unzip);
+        DownloadFileTask downloadFileTask = new DownloadFileTask(MainApplication.getMainFrame(), address, fOut, mkdir, unzip);
 
         MainApplication.worker.submit(downloadFileTask);
         PreferencesUtils.log("Info: downloading file from %s to %s in background ", parentDir, fOut.getAbsolutePath());
         if (unzip) PreferencesUtils.log("and unpacking it"); else PreferencesUtils.log("");
-
     }
 
@@ -152,10 +151,11 @@
     public static void messageBox(String type, String text) {
         char c = (type == null || type.isEmpty() ? "plain" : type).charAt(0);
+        MainFrame parent = MainApplication.getMainFrame();
         switch (c) {
-            case 'i': JOptionPane.showMessageDialog(Main.parent, text, tr("Information"), JOptionPane.INFORMATION_MESSAGE); break;
-            case 'w': JOptionPane.showMessageDialog(Main.parent, text, tr("Warning"), JOptionPane.WARNING_MESSAGE); break;
-            case 'e': JOptionPane.showMessageDialog(Main.parent, text, tr("Error"), JOptionPane.ERROR_MESSAGE); break;
-            case 'q': JOptionPane.showMessageDialog(Main.parent, text, tr("Question"), JOptionPane.QUESTION_MESSAGE); break;
-            case 'p': JOptionPane.showMessageDialog(Main.parent, text, tr("Message"), JOptionPane.PLAIN_MESSAGE); break;
+            case 'i': JOptionPane.showMessageDialog(parent, text, tr("Information"), JOptionPane.INFORMATION_MESSAGE); break;
+            case 'w': JOptionPane.showMessageDialog(parent, text, tr("Warning"), JOptionPane.WARNING_MESSAGE); break;
+            case 'e': JOptionPane.showMessageDialog(parent, text, tr("Error"), JOptionPane.ERROR_MESSAGE); break;
+            case 'q': JOptionPane.showMessageDialog(parent, text, tr("Question"), JOptionPane.QUESTION_MESSAGE); break;
+            case 'p': JOptionPane.showMessageDialog(parent, text, tr("Message"), JOptionPane.PLAIN_MESSAGE); break;
             default: Logging.warn("Unsupported messageBox type: " + c);
         }
@@ -170,8 +170,8 @@
     public static int askForOption(String text, String opts) {
         if (!opts.isEmpty()) {
-            return JOptionPane.showOptionDialog(Main.parent, text, "Question",
+            return JOptionPane.showOptionDialog(MainApplication.getMainFrame(), text, "Question",
                     JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, opts.split(";"), 0);
         } else {
-            return JOptionPane.showOptionDialog(Main.parent, text, "Question",
+            return JOptionPane.showOptionDialog(MainApplication.getMainFrame(), text, "Question",
                     JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, 2);
         }
@@ -179,5 +179,5 @@
 
     public static String askForText(String text) {
-        String s = JOptionPane.showInputDialog(Main.parent, text, tr("Enter text"), JOptionPane.QUESTION_MESSAGE);
+        String s = JOptionPane.showInputDialog(MainApplication.getMainFrame(), text, tr("Enter text"), JOptionPane.QUESTION_MESSAGE);
         return s != null ? s.trim() : null;
     }
@@ -344,5 +344,5 @@
                     if (!installList.isEmpty()) {
                         PluginDownloadTask pluginDownloadTask =
-                                new PluginDownloadTask(Main.parent, toInstallPlugins, tr("Installing plugins"));
+                                new PluginDownloadTask(MainApplication.getMainFrame(), toInstallPlugins, tr("Installing plugins"));
                         MainApplication.worker.submit(pluginDownloadTask);
                     }
Index: /trunk/src/org/openstreetmap/josm/gui/io/DownloadOpenChangesetsTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/DownloadOpenChangesetsTask.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/io/DownloadOpenChangesetsTask.java	(revision 14153)
@@ -13,5 +13,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.UserIdentityManager;
 import org.openstreetmap.josm.data.osm.Changeset;
@@ -19,4 +18,5 @@
 import org.openstreetmap.josm.data.osm.UserInfo;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -81,5 +81,5 @@
             if (!GraphicsEnvironment.isHeadless()) {
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr("There are no open changesets"),
                         tr("No open changesets"),
Index: /trunk/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java	(revision 14153)
@@ -19,5 +19,4 @@
 import javax.swing.JScrollPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadReferrersTask;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -225,5 +224,5 @@
 
         return new ExtendedDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 title,
                 tr("Ok"))
Index: /trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java	(revision 14153)
@@ -42,8 +42,8 @@
 import javax.swing.event.TableModelListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.SessionSaveAsAction;
 import org.openstreetmap.josm.actions.UploadAction;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.io.SaveLayersModel.Mode;
 import org.openstreetmap.josm.gui.layer.AbstractModifiableLayer;
@@ -111,5 +111,5 @@
     public static boolean saveUnsavedModifications(Iterable<? extends Layer> selectedLayers, Reason reason) {
         if (!GraphicsEnvironment.isHeadless()) {
-            SaveLayersDialog dialog = new SaveLayersDialog(Main.parent);
+            SaveLayersDialog dialog = new SaveLayersDialog(MainApplication.getMainFrame());
             List<AbstractModifiableLayer> layersWithUnmodifiedChanges = new ArrayList<>();
             for (Layer l: selectedLayers) {
@@ -278,5 +278,5 @@
         // For unit test coverage in headless mode
         if (!GraphicsEnvironment.isHeadless()) {
-            JOptionPane.showConfirmDialog(Main.parent, panel, title, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE);
+            JOptionPane.showConfirmDialog(MainApplication.getMainFrame(), panel, title, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE);
         }
     }
@@ -665,5 +665,5 @@
             );
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     msg,
                     tr("Incomplete upload and/or save"),
Index: /trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 14153)
@@ -36,5 +36,4 @@
 import javax.swing.JTabbedPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.Version;
@@ -44,4 +43,5 @@
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
 import org.openstreetmap.josm.gui.help.HelpUtil;
@@ -105,5 +105,5 @@
      */
     public UploadDialog() {
-        super(GuiHelper.getFrameForComponent(Main.parent), ModalityType.DOCUMENT_MODAL);
+        super(GuiHelper.getFrameForComponent(MainApplication.getMainFrame()), ModalityType.DOCUMENT_MODAL);
         build();
         pack();
@@ -384,5 +384,5 @@
                     getClass().getName() + ".geometry",
                     WindowGeometry.centerInWindow(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             new Dimension(400, 600)
                     )
@@ -545,5 +545,5 @@
             }
             if (!emptyChangesetTags.isEmpty() && JOptionPane.OK_OPTION != JOptionPane.showConfirmDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     trn(
                             "<html>The following changeset tag contains an empty key/value:<br>{0}<br>Continue?</html>",
Index: /trunk/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java	(revision 14153)
@@ -14,5 +14,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.osm.Changeset;
@@ -26,4 +25,5 @@
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -127,5 +127,5 @@
         String msg = "<html>" + msg1 + "<br><br>" + msg2 +"<br><br>" + msg3 + "</html>";
         int ret = HelpAwareOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 msg,
                 tr("Changeset is full"),
Index: /trunk/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java	(revision 14153)
@@ -32,8 +32,8 @@
 import javax.swing.event.ListSelectionListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 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.PrimitiveRenderer;
 import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
@@ -61,5 +61,5 @@
      */
     public UploadSelectionDialog() {
-        super(GuiHelper.getFrameForComponent(Main.parent), ModalityType.DOCUMENT_MODAL);
+        super(GuiHelper.getFrameForComponent(MainApplication.getMainFrame()), ModalityType.DOCUMENT_MODAL);
         build();
     }
@@ -174,5 +174,5 @@
                     getClass().getName() + ".geometry",
                     WindowGeometry.centerInWindow(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             new Dimension(200, 400)
                     )
Index: /trunk/src/org/openstreetmap/josm/gui/io/importexport/FileImporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/importexport/FileImporter.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/io/importexport/FileImporter.java	(revision 14153)
@@ -10,7 +10,7 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 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.progress.ProgressMonitor;
@@ -115,5 +115,5 @@
         Logging.error(e);
         HelpAwareOptionPane.showMessageDialogInEDT(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 tr("<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>",
                         f.getName(), Utils.escapeReservedCharactersHTML(e.getMessage())),
@@ -146,5 +146,5 @@
             Logging.error(e);
             HelpAwareOptionPane.showMessageDialogInEDT(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("<html>Could not read files.<br>Error is:<br>{0}</html>", Utils.escapeReservedCharactersHTML(e.getMessage())),
                     tr("Error"),
Index: /trunk/src/org/openstreetmap/josm/gui/io/importexport/GpxExporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/importexport/GpxExporter.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/io/importexport/GpxExporter.java	(revision 14153)
@@ -25,5 +25,4 @@
 import javax.swing.ListSelectionModel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.gpx.GpxConstants;
 import org.openstreetmap.josm.data.gpx.GpxData;
@@ -152,5 +151,5 @@
         p.add(keywords, GBC.eop().fill(GBC.HORIZONTAL));
 
-        ExtendedDialog ed = new ExtendedDialog(Main.parent,
+        ExtendedDialog ed = new ExtendedDialog(MainApplication.getMainFrame(),
                 tr("Export options"),
                 tr("Export and Save"), tr("Cancel"))
@@ -212,5 +211,5 @@
         } catch (IOException | InvalidPathException ex) {
             Logging.error(ex);
-            JOptionPane.showMessageDialog(Main.parent, tr("Error while exporting {0}:\n{1}", fn, ex.getMessage()),
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(), tr("Error while exporting {0}:\n{1}", fn, ex.getMessage()),
                     tr("Error"), JOptionPane.ERROR_MESSAGE);
         }
@@ -309,5 +308,5 @@
             l.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
             int answer = JOptionPane.showConfirmDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     new JScrollPane(l),
                     tr("Choose a predefined license"),
Index: /trunk/src/org/openstreetmap/josm/gui/io/importexport/NMEAImporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/importexport/NMEAImporter.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/io/importexport/NMEAImporter.java	(revision 14153)
@@ -11,5 +11,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
@@ -86,5 +85,5 @@
         } else {
             HelpAwareOptionPane.showMessageDialogInEDT(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     msg.toString(),
                     tr("NMEA import failure!"),
Index: /trunk/src/org/openstreetmap/josm/gui/io/importexport/OsmChangeImporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/importexport/OsmChangeImporter.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/io/importexport/OsmChangeImporter.java	(revision 14153)
@@ -11,5 +11,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -78,5 +77,5 @@
             GuiHelper.runInEDT(() ->
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr("No data found in file {0}.", associatedFile.getPath()),
                         tr("Open OsmChange file"),
Index: /trunk/src/org/openstreetmap/josm/gui/io/importexport/OsmExporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/importexport/OsmExporter.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/io/importexport/OsmExporter.java	(revision 14153)
@@ -16,6 +16,6 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -99,5 +99,5 @@
             Logging.error(e);
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("<html>An error occurred while saving.<br>Error is:<br>{0}</html>",
                             Utils.escapeReservedCharactersHTML(e.getMessage())),
@@ -114,5 +114,5 @@
                 Logging.error(e2);
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr("<html>An error occurred while restoring backup file.<br>Error is:<br>{0}</html>",
                                 Utils.escapeReservedCharactersHTML(e2.getMessage())),
Index: /trunk/src/org/openstreetmap/josm/gui/io/importexport/OsmImporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/importexport/OsmImporter.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/io/importexport/OsmImporter.java	(revision 14153)
@@ -12,5 +12,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -146,5 +145,5 @@
                 }
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         msg,
                         tr("Open OSM file"),
Index: /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 14153)
@@ -74,5 +74,4 @@
 import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
 import org.openstreetmap.gui.jmapviewer.tilesources.AbstractTMSTileSource;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
 import org.openstreetmap.josm.actions.ImageryAdjustAction;
@@ -420,5 +419,5 @@
         public void actionPerformed(ActionEvent ae) {
             if (tile != null) {
-                ExtendedDialog ed = new ExtendedDialog(Main.parent, tr("Tile Info"), tr("OK"));
+                ExtendedDialog ed = new ExtendedDialog(MainApplication.getMainFrame(), tr("Tile Info"), tr("OK"));
                 JPanel panel = new JPanel(new GridBagLayout());
                 Rectangle2D displaySize = layer.coordinateConverter.getRectangleForTile(tile);
Index: /trunk/src/org/openstreetmap/josm/gui/layer/CustomizeColor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/CustomizeColor.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/CustomizeColor.java	(revision 14153)
@@ -19,6 +19,6 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.preferences.AbstractProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.layer.Layer.LayerAction;
@@ -77,5 +77,5 @@
         Object[] options = new Object[]{tr("OK"), tr("Cancel"), tr("Default")};
         int answer = JOptionPane.showOptionDialog(
-                Main.parent,
+                MainApplication.getMainFrame(),
                 c,
                 tr("Choose a color"),
Index: /trunk/src/org/openstreetmap/josm/gui/layer/Layer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 14153)
@@ -20,5 +20,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.GpxExportAction;
 import org.openstreetmap.josm.actions.SaveAction;
@@ -32,4 +31,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.tools.Destroyable;
 import org.openstreetmap.josm.tools.ImageProcessor;
@@ -605,5 +605,5 @@
 
             // run later to not block loading the UI.
-            SwingUtilities.invokeLater(() -> JOptionPane.showMessageDialog(Main.parent,
+            SwingUtilities.invokeLater(() -> JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                     message,
                     tr("Warning"),
Index: /trunk/src/org/openstreetmap/josm/gui/layer/MainLayerManager.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/MainLayerManager.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/MainLayerManager.java	(revision 14153)
@@ -232,5 +232,5 @@
             GuiHelper.runInEDT(() ->
                     JOptionPane.showMessageDialog(
-                            MainApplication.parent,
+                            MainApplication.getMainFrame(),
                             tr("Trying to set a read only data layer as edit layer"),
                             tr("Warning"),
@@ -289,5 +289,5 @@
     protected Collection<Layer> realRemoveSingleLayer(Layer layer) {
         if ((layer instanceof OsmDataLayer) && (((OsmDataLayer) layer).isUploadInProgress())) {
-            GuiHelper.runInEDT(() -> JOptionPane.showMessageDialog(MainApplication.parent,
+            GuiHelper.runInEDT(() -> JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                     tr("Trying to delete the layer with background upload. Please wait until the upload is finished.")));
 
@@ -495,5 +495,5 @@
             Logging.warn(msg);
             if (!GraphicsEnvironment.isHeadless()) {
-                GuiHelper.runInEDT(() -> JOptionPane.showMessageDialog(MainApplication.parent, msg));
+                GuiHelper.runInEDT(() -> JOptionPane.showMessageDialog(MainApplication.getMainFrame(), msg));
             }
         }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/NoteLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/NoteLayer.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/NoteLayer.java	(revision 14153)
@@ -34,5 +34,4 @@
 import javax.swing.text.View;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.SaveActionBase;
 import org.openstreetmap.josm.data.Bounds;
@@ -44,5 +43,4 @@
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.gui.MainApplication;
-import org.openstreetmap.josm.gui.MainFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
@@ -236,5 +234,5 @@
             displayedPanel.enableClickableHyperlinks();
             pTooltip = fixPanelSizeAndLocation(mv, text, xl, xr, yt, yb);
-            displayedWindow = new JWindow((MainFrame) Main.parent);
+            displayedWindow = new JWindow(MainApplication.getMainFrame());
             displayedWindow.setAutoRequestFocus(false);
             displayedWindow.add(displayedPanel);
Index: /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 14153)
@@ -44,5 +44,4 @@
 import javax.swing.JScrollPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
 import org.openstreetmap.josm.actions.RenameLayerAction;
@@ -567,5 +566,5 @@
             Logging.error(e);
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     e.getHtmlMessage() != null ? e.getHtmlMessage() : e.getMessage(),
                     tr("Error"),
@@ -1027,5 +1026,5 @@
             String result = DatasetConsistencyTest.runTests(data);
             if (result.isEmpty()) {
-                JOptionPane.showMessageDialog(Main.parent, tr("No problems found"));
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(), tr("No problems found"));
             } else {
                 JPanel p = new JPanel(new GridBagLayout());
@@ -1036,5 +1035,5 @@
                 p.add(new JScrollPane(info), GBC.eop());
 
-                JOptionPane.showMessageDialog(Main.parent, p, tr("Warning"), JOptionPane.WARNING_MESSAGE);
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(), p, tr("Warning"), JOptionPane.WARNING_MESSAGE);
             }
         }
@@ -1103,5 +1102,5 @@
             }
             return new ExtendedDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("Empty document"),
                     tr("Save anyway"), tr("Cancel"))
@@ -1116,5 +1115,5 @@
         return conflictsCol == null || conflictsCol.isEmpty() || 1 == GuiHelper.runInEDTAndWaitAndReturn(() ->
             new ExtendedDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     /* I18N: Display title of the window showing conflicts */
                     tr("Conflicts"),
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 14153)
@@ -60,5 +60,4 @@
 import javax.swing.event.DocumentListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.DiskAccessAction;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
@@ -133,5 +132,5 @@
                 timezone = Timezone.parseTimezone(tfTimezone.getText().trim());
             } catch (ParseException e) {
-                JOptionPane.showMessageDialog(Main.parent, e.getMessage(),
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(), e.getMessage(),
                         tr("Invalid timezone"), JOptionPane.ERROR_MESSAGE);
                 return AGAIN;
@@ -141,5 +140,5 @@
                 delta = Offset.parseOffset(tfOffset.getText().trim());
             } catch (ParseException e) {
-                JOptionPane.showMessageDialog(Main.parent, e.getMessage(),
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(), e.getMessage(),
                         tr("Invalid offset"), JOptionPane.ERROR_MESSAGE);
                 return AGAIN;
@@ -147,5 +146,5 @@
 
             if (lastNumMatched == 0 && new ExtendedDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr("Correlate images with GPX track"),
                         tr("OK"), tr("Try Again")).
@@ -272,5 +271,5 @@
                         if (!sel.getName().equals(wrapper.name)) {
                             JOptionPane.showMessageDialog(
-                                    Main.parent,
+                                    MainApplication.getMainFrame(),
                                     tr("File {0} is loaded yet under the name \"{1}\"", sel.getName(), wrapper.name),
                                     tr("Error"),
@@ -291,5 +290,5 @@
                     Logging.error(ex);
                     JOptionPane.showMessageDialog(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             tr("Error while parsing {0}", sel.getName())+": "+ex.getMessage(),
                             tr("Error"),
@@ -300,5 +299,5 @@
                     Logging.error(ex);
                     JOptionPane.showMessageDialog(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             tr("Could not read \"{0}\"", sel.getName())+'\n'+ex.getMessage(),
                             tr("Error"),
@@ -490,5 +489,5 @@
             while (!isOk) {
                 int answer = JOptionPane.showConfirmDialog(
-                        Main.parent, panel,
+                        MainApplication.getMainFrame(), panel,
                         tr("Synchronize time from a photo of the GPS receiver"),
                         JOptionPane.OK_CANCEL_OPTION,
@@ -504,5 +503,5 @@
                     - dateFormat.parse(tfGpsTime.getText()).getTime();
                 } catch (ParseException e) {
-                    JOptionPane.showMessageDialog(Main.parent, tr("Error while parsing the date.\n"
+                    JOptionPane.showMessageDialog(MainApplication.getMainFrame(), tr("Error while parsing the date.\n"
                             + "Please use the requested format"),
                             tr("Invalid date"), JOptionPane.ERROR_MESSAGE);
@@ -723,5 +722,5 @@
         if (!GraphicsEnvironment.isHeadless()) {
             syncDialog = new ExtendedDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("Correlate images with GPX track"),
                     new String[] {tr("Correlate"), tr("Cancel")},
@@ -932,5 +931,5 @@
             } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
                 Logging.warn(e);
-                JOptionPane.showMessageDialog(Main.parent,
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                         tr("An error occurred while trying to match the photos to the GPX track."
                                 +" You can adjust the sliders to manually match the photos."),
@@ -950,5 +949,5 @@
             // immediately. Therefore "Close" is marked with an "OK" icon.
             // Settings are only saved temporarily to the layer.
-            new ExtendedDialog(Main.parent,
+            new ExtendedDialog(MainApplication.getMainFrame(),
                     tr("Adjust timezone and offset"),
                     tr("Close")).
@@ -1012,5 +1011,5 @@
             } catch (IndexOutOfBoundsException ex) {
                 Logging.debug(ex);
-                JOptionPane.showMessageDialog(Main.parent,
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                         tr("The selected photos do not contain time information."),
                         tr("Photos do not contain time information"), JOptionPane.WARNING_MESSAGE);
@@ -1018,5 +1017,5 @@
             } catch (NoGpxTimestamps ex) {
                 Logging.debug(ex);
-                JOptionPane.showMessageDialog(Main.parent,
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                         tr("The selected GPX track does not contain timestamps. Please select another one."),
                         tr("GPX Track has no time information"), JOptionPane.WARNING_MESSAGE);
@@ -1081,5 +1080,5 @@
         if (item == null || ((GpxDataWrapper) item).file == null) {
             if (complain) {
-                JOptionPane.showMessageDialog(Main.parent, tr("You should select a GPX track"),
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(), tr("You should select a GPX track"),
                         tr("No selected GPX track"), JOptionPane.ERROR_MESSAGE);
             }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 14153)
@@ -39,5 +39,4 @@
 import javax.swing.SwingConstants;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.LassoModeAction;
 import org.openstreetmap.josm.actions.RenameLayerAction;
@@ -285,5 +284,5 @@
             if (!errorMessages.isEmpty()) {
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         formatErrorMessages(),
                         tr("Error"),
@@ -716,5 +715,5 @@
 
             int result = new ExtendedDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("Delete image file from disk"),
                     tr("Cancel"), tr("Delete"))
@@ -738,5 +737,5 @@
                 } else {
                     JOptionPane.showMessageDialog(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             tr("Image file could not be deleted."),
                             tr("Error"),
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java	(revision 14153)
@@ -31,5 +31,4 @@
 import javax.swing.table.TableRowSorter;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.SystemOfMeasurement;
 import org.openstreetmap.josm.data.gpx.GpxConstants;
@@ -266,5 +265,5 @@
         if (!GraphicsEnvironment.isHeadless()) {
             // build dialog
-            ExtendedDialog ed = new ExtendedDialog(Main.parent, tr("Set track visibility for {0}", layer.getName()),
+            ExtendedDialog ed = new ExtendedDialog(MainApplication.getMainFrame(), tr("Set track visibility for {0}", layer.getName()),
                     tr("Show all"), tr("Show selected only"), tr("Cancel"));
             ed.setButtonIcons("eye", "dialogs/filter", "cancel");
@@ -274,5 +273,5 @@
             ed.configureContextsensitiveHelp("/Action/ChooseTrackVisibility", true);
             ed.setRememberWindowGeometry(getClass().getName() + ".geometry",
-                    WindowGeometry.centerInWindow(Main.parent, new Dimension(1000, 500)));
+                    WindowGeometry.centerInWindow(MainApplication.getMainFrame(), new Dimension(1000, 500)));
             ed.showDialog();
             dateFilter.saveInPrefs();
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertFromGpxLayerAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertFromGpxLayerAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertFromGpxLayerAction.java	(revision 14153)
@@ -21,5 +21,4 @@
 import javax.swing.JRadioButton;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.gpx.GpxConstants;
 import org.openstreetmap.josm.data.gpx.GpxTrack;
@@ -30,4 +29,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 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.OsmDataLayer;
@@ -209,5 +209,5 @@
         rNone.addActionListener(disabler);
 
-        ExtendedDialog ed = new ExtendedDialog(Main.parent, tr("Options"),
+        ExtendedDialog ed = new ExtendedDialog(MainApplication.getMainFrame(), tr("Options"),
                 tr("Convert"), tr("Convert and remember selection"), tr("Cancel"))
                 .setButtonIcons("exportgpx", "exportgpx", "cancel").setContent(p);
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java	(revision 14153)
@@ -14,5 +14,4 @@
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
@@ -58,5 +57,5 @@
                 GBC.eol());
         msg.add(new UrlLabel(Config.getUrls().getOSMWebsite() + "/traces", 2), GBC.eop());
-        if (!ConditionalOptionPaneUtil.showConfirmationDialog("convert_to_data", Main.parent, msg, tr("Warning"),
+        if (!ConditionalOptionPaneUtil.showConfirmationDialog("convert_to_data", MainApplication.getMainFrame(), msg, tr("Warning"),
                 JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, JOptionPane.OK_OPTION)) {
             return;
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java	(revision 14153)
@@ -18,5 +18,4 @@
 import javax.swing.JScrollPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
@@ -100,5 +99,5 @@
             scrollpane.setPreferredSize(new Dimension(panel.getPreferredSize().width, Math.min(panel.getPreferredSize().height, 450)));
         }
-        int answer = JOptionPane.showConfirmDialog(Main.parent, scrollpane, tr("Customize track drawing"),
+        int answer = JOptionPane.showConfirmDialog(MainApplication.getMainFrame(), scrollpane, tr("Customize track drawing"),
                 JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
         if (answer == JOptionPane.CANCEL_OPTION || answer == JOptionPane.CLOSED_OPTION) {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongPanel.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongPanel.java	(revision 14153)
@@ -16,7 +16,7 @@
 import javax.swing.event.ChangeListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.GBC;
@@ -181,5 +181,5 @@
         addChangeListener(e -> options[0].setEnabled(isDownloadOsmData() || isDownloadGpxData()));
 
-        int ret = HelpAwareOptionPane.showOptionDialog(Main.parent, this, title,
+        int ret = HelpAwareOptionPane.showOptionDialog(MainApplication.getMainFrame(), this, title,
                     JOptionPane.QUESTION_MESSAGE, null, options, options[0], helpTopic);
         if (0 == ret) {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java	(revision 14153)
@@ -14,5 +14,4 @@
 
 import org.openstreetmap.gui.jmapviewer.tilesources.AbstractTMSTileSource;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AbstractMergeAction;
 import org.openstreetmap.josm.data.coor.LatLon;
@@ -131,5 +130,6 @@
 
     protected void warnNoImageryLayers() {
-        JOptionPane.showMessageDialog(Main.parent, tr("There are no imagery layers."), tr("No imagery layers"), JOptionPane.WARNING_MESSAGE);
+        JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
+                tr("There are no imagery layers."), tr("No imagery layers"), JOptionPane.WARNING_MESSAGE);
     }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 14153)
@@ -18,5 +18,4 @@
 import javax.swing.filechooser.FileFilter;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.DiskAccessAction;
 import org.openstreetmap.josm.data.gpx.GpxConstants;
@@ -80,5 +79,5 @@
                 "Because its way points do not include a timestamp we cannot correlate them with audio data.</html>",
                 Utils.escapeReservedCharactersHTML(layer.getName()));
-        HelpAwareOptionPane.showOptionDialog(Main.parent, msg, tr("Import not possible"),
+        HelpAwareOptionPane.showOptionDialog(MainApplication.getMainFrame(), msg, tr("Import not possible"),
                 JOptionPane.WARNING_MESSAGE, ht("/Action/ImportAudio#CantImportIntoGpxLayerFromServer"));
     }
@@ -165,5 +164,5 @@
         if (firstTime < 0.0) {
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("No GPX track available in layer to associate audio with."),
                     tr("Error"),
@@ -302,10 +301,10 @@
 
         if (timedMarkersOmitted && !markers.timedMarkersOmitted) {
-            JOptionPane.showMessageDialog(Main.parent,
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                 tr("Some waypoints with timestamps from before the start of the track or after the end were omitted or moved to the start."));
             markers.timedMarkersOmitted = timedMarkersOmitted;
         }
         if (untimedMarkersOmitted && !markers.untimedMarkersOmitted) {
-            JOptionPane.showMessageDialog(Main.parent,
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                 tr("Some waypoints which were too far from the track to sensibly estimate their time were omitted."));
             markers.untimedMarkersOmitted = untimedMarkersOmitted;
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java	(revision 14153)
@@ -14,6 +14,6 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.io.importexport.JpgImporter;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
@@ -46,5 +46,5 @@
                 "Because its way points do not include a timestamp we cannot correlate them with images.</html>",
                 Utils.escapeReservedCharactersHTML(layer.getName()));
-        HelpAwareOptionPane.showOptionDialog(Main.parent, msg, tr("Import not possible"),
+        HelpAwareOptionPane.showOptionDialog(MainApplication.getMainFrame(), msg, tr("Import not possible"),
                 JOptionPane.WARNING_MESSAGE, ht("/Action/ImportImages#CantImportIntoGpxLayerFromServer"));
     }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/ImageMarker.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/ImageMarker.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/ImageMarker.java	(revision 14153)
@@ -20,9 +20,9 @@
 import javax.swing.JViewport;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.gpx.GpxConstants;
 import org.openstreetmap.josm.data.gpx.GpxLink;
 import org.openstreetmap.josm.data.gpx.WayPoint;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -66,5 +66,5 @@
         JOptionPane pane = new JOptionPane(p, JOptionPane.PLAIN_MESSAGE);
         if (!GraphicsEnvironment.isHeadless()) {
-            JDialog dlg = pane.createDialog(Main.parent, imageUrl.toString());
+            JDialog dlg = pane.createDialog(MainApplication.getMainFrame(), imageUrl.toString());
             dlg.setModal(false);
             dlg.toFront();
Index: /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 14153)
@@ -28,5 +28,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.RenameLayerAction;
 import org.openstreetmap.josm.data.Bounds;
@@ -309,5 +308,5 @@
         if (am == null) {
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("No existing audio markers in this layer to offset from."),
                     tr("Error"),
@@ -537,5 +536,5 @@
             if (!AudioPlayer.paused()) {
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr("You need to pause audio at the moment when you hear your synchronization cue."),
                         tr("Warning"),
@@ -547,5 +546,5 @@
             if (synchronizeAudioMarkers(recent)) {
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr("Audio synchronized at point {0}.", syncAudioMarker.getText()),
                         tr("Information"),
@@ -554,5 +553,5 @@
             } else {
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr("Unable to synchronize in layer being played."),
                         tr("Error"),
@@ -575,5 +574,5 @@
             if (!AudioPlayer.paused()) {
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr("You need to have paused audio at the point on the track where you want the marker."),
                         tr("Warning"),
Index: /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java	(revision 14153)
@@ -14,5 +14,4 @@
 import javax.swing.Timer;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.mapmode.MapMode;
 import org.openstreetmap.josm.actions.mapmode.PlayHeadDragMode;
@@ -179,5 +178,5 @@
             /* Not close enough to track, or no audio marker found for some other reason */
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("You need to drag the play head near to the GPX track " +
                        "whose associated sound track you were playing (after the first marker)."),
@@ -238,5 +237,5 @@
             if (cw == null) {
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         tr("You need to SHIFT-drag the play head onto an audio marker or onto the track point where you want to synchronize."),
                         tr("Warning"),
@@ -252,5 +251,5 @@
         if (ca == null) {
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("Unable to create new audio marker."),
                     tr("Error"),
@@ -260,5 +259,5 @@
         } else if (recent.parentLayer.synchronizeAudioMarkers(ca)) {
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("Audio synchronized at point {0}.", recent.parentLayer.syncAudioMarker.getText()),
                     tr("Information"),
@@ -269,5 +268,5 @@
         } else {
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("Unable to synchronize in layer being played."),
                     tr("Error"),
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/Cascade.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/Cascade.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/Cascade.java	(revision 14153)
@@ -201,5 +201,5 @@
             return ((Number) o).floatValue() != 0;
         if (o instanceof List)
-            return !((List) o).isEmpty();
+            return !((List<?>) o).isEmpty();
         if (o instanceof float[])
             return ((float[]) o).length != 0;
Index: /trunk/src/org/openstreetmap/josm/gui/oauth/OAuthAuthorizationWizard.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/oauth/OAuthAuthorizationWizard.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/oauth/OAuthAuthorizationWizard.java	(revision 14153)
@@ -37,8 +37,8 @@
 import javax.swing.text.html.HTMLEditorKit;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.oauth.OAuthAccessTokenHolder;
 import org.openstreetmap.josm.data.oauth.OAuthParameters;
 import org.openstreetmap.josm.data.oauth.OAuthToken;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
 import org.openstreetmap.josm.gui.help.HelpUtil;
@@ -317,5 +317,5 @@
                     getClass().getName() + ".geometry",
                     WindowGeometry.centerInWindow(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             getPreferredSize()
                     )
@@ -344,5 +344,5 @@
             // executed via main worker. The OAuth connections would block otherwise.
             final OAuthAuthorizationWizard wizard = new OAuthAuthorizationWizard(
-                    Main.parent, serverUrl.toExternalForm(), Utils.newDirectExecutor());
+                    MainApplication.getMainFrame(), serverUrl.toExternalForm(), Utils.newDirectExecutor());
             wizard.showDialog();
             return wizard;
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java	(revision 14153)
@@ -29,5 +29,4 @@
 import javax.swing.event.ChangeListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
 import org.openstreetmap.josm.actions.ExpertToggleAction.ExpertModeChangeListener;
@@ -119,5 +118,5 @@
                 final ButtonSpec[] options = RestartAction.getButtonSpecs();
                 if (0 == HelpAwareOptionPane.showOptionDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         sb.toString(),
                         tr("Restart"),
@@ -132,5 +131,5 @@
             } else if (task != null && !task.isCanceled()) {
                 JOptionPane.showMessageDialog(
-                        Main.parent,
+                        MainApplication.getMainFrame(),
                         sb.toString(),
                         tr("Warning"),
@@ -175,6 +174,6 @@
             }
 
-            if (Main.parent != null) {
-                Main.parent.repaint();
+            if (MainApplication.getMainFrame() != null) {
+                MainApplication.getMainFrame().repaint();
             }
         }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 14153)
@@ -72,5 +72,4 @@
 import javax.swing.table.TableModel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.Version;
@@ -1112,5 +1111,5 @@
                 }
                 if (!messages.isEmpty()) {
-                    ExtendedDialog dlg = new ExtendedDialog(Main.parent, tr("Warning"), tr("Cancel"), tr("Continue anyway"));
+                    ExtendedDialog dlg = new ExtendedDialog(MainApplication.getMainFrame(), tr("Warning"), tr("Cancel"), tr("Continue anyway"));
                     dlg.setButtonIcons(
                         ImageProvider.get("cancel"),
@@ -1414,5 +1413,5 @@
 
             GuiHelper.runInEDT(() -> HelpAwareOptionPane.showOptionDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     msg,
                     tr("Error"),
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 14153)
@@ -59,5 +59,4 @@
 import javax.swing.tree.TreePath;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ActionParameter;
 import org.openstreetmap.josm.actions.AdaptableAction;
@@ -514,5 +513,5 @@
             @Override
             public void actionPerformed(ActionEvent e) {
-                final PreferenceDialog p = new PreferenceDialog(Main.parent);
+                final PreferenceDialog p = new PreferenceDialog(MainApplication.getMainFrame());
                 p.selectPreferencesTabByName("toolbar");
                 p.setVisible(true);
@@ -523,5 +522,5 @@
             @Override
             public void actionPerformed(ActionEvent e) {
-                final PreferenceDialog p = new PreferenceDialog(Main.parent);
+                final PreferenceDialog p = new PreferenceDialog(MainApplication.getMainFrame());
                 p.getTabbedPane().getShortcutPreference().setDefaultFilter(act.getDisplayName());
                 p.selectPreferencesTabByName("shortcuts");
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java	(revision 14153)
@@ -37,8 +37,8 @@
 import javax.swing.filechooser.FileFilter;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.DiskAccessAction;
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.PreferencesUtils;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.LogShowDialog;
 import org.openstreetmap.josm.gui.help.HelpUtil;
@@ -237,5 +237,5 @@
 
         if (keys.isEmpty()) {
-            JOptionPane.showMessageDialog(Main.parent,
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                     tr("Please select some preference keys not marked as default"), tr("Warning"), JOptionPane.WARNING_MESSAGE);
             return;
@@ -250,5 +250,5 @@
         if (hasLists) {
             answer = JOptionPane.showOptionDialog(
-                    Main.parent, tr("What to do with preference lists when this file is to be imported?"), tr("Question"),
+                    MainApplication.getMainFrame(), tr("What to do with preference lists when this file is to be imported?"), tr("Question"),
                     JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null,
                     new String[]{tr("Append preferences from file to existing values"), tr("Replace existing values")}, 0);
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ExportProfileAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ExportProfileAction.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ExportProfileAction.java	(revision 14153)
@@ -17,10 +17,10 @@
 import javax.swing.filechooser.FileFilter;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.DiskAccessAction;
 import org.openstreetmap.josm.data.Preferences;
-import org.openstreetmap.josm.spi.preferences.Setting;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.io.CustomConfigurator;
 import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
+import org.openstreetmap.josm.spi.preferences.Setting;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -56,5 +56,5 @@
         }
         if (keys.isEmpty()) {
-            JOptionPane.showMessageDialog(Main.parent,
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                     tr("All the preferences of this group are default, nothing to save"), tr("Warning"), JOptionPane.WARNING_MESSAGE);
             return;
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ListEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ListEditor.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ListEditor.java	(revision 14153)
@@ -16,6 +16,6 @@
 import javax.swing.table.AbstractTableModel;
 
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.spi.preferences.ListSetting;
-import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/PreferencesTable.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/PreferencesTable.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/PreferencesTable.java	(revision 14153)
@@ -29,4 +29,7 @@
 
 import org.openstreetmap.josm.data.preferences.NamedColorProperty;
+import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.spi.preferences.ListListSetting;
 import org.openstreetmap.josm.spi.preferences.ListSetting;
@@ -34,7 +37,4 @@
 import org.openstreetmap.josm.spi.preferences.Setting;
 import org.openstreetmap.josm.spi.preferences.StringSetting;
-import org.openstreetmap.josm.gui.ExtendedDialog;
-import org.openstreetmap.josm.gui.util.GuiHelper;
-import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.tools.GBC;
 
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/StringEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/StringEditor.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/StringEditor.java	(revision 14153)
@@ -10,7 +10,7 @@
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.spi.preferences.StringSetting;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
+import org.openstreetmap.josm.spi.preferences.StringSetting;
 import org.openstreetmap.josm.tools.GBC;
 
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java	(revision 14153)
@@ -23,8 +23,8 @@
 import javax.swing.JSlider;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
 import org.openstreetmap.josm.data.PreferencesUtils;
 import org.openstreetmap.josm.data.preferences.NamedColorProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.gpx.GpxDrawHelper;
 import org.openstreetmap.josm.gui.layer.markerlayer.Marker;
@@ -580,5 +580,5 @@
         } catch (ParseError e) {
             Logging.warn(e);
-            JOptionPane.showMessageDialog(Main.parent,
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                     tr("Incorrect waypoint label pattern: {0}", e.getMessage()), tr("Incorrect pattern"), JOptionPane.ERROR_MESSAGE);
             waypointLabelPattern.requestFocus();
@@ -590,5 +590,5 @@
         } catch (ParseError e) {
             Logging.warn(e);
-            JOptionPane.showMessageDialog(Main.parent,
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                     tr("Incorrect audio waypoint label pattern: {0}", e.getMessage()), tr("Incorrect pattern"), JOptionPane.ERROR_MESSAGE);
             audioWaypointLabelPattern.requestFocus();
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryDialog.java	(revision 14153)
@@ -7,6 +7,6 @@
 import java.awt.Dimension;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.preferences.imagery.AddImageryPanel.ContentValidationListener;
 import org.openstreetmap.josm.gui.util.WindowGeometry;
@@ -33,5 +33,5 @@
         setRememberWindowGeometry(
                 panel.getClass().getName() + ".geometry",
-                WindowGeometry.centerInWindow(Main.parent, new Dimension(400, 600))
+                WindowGeometry.centerInWindow(MainApplication.getMainFrame(), new Dimension(400, 600))
                 );
     }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java	(revision 14153)
@@ -54,5 +54,4 @@
 import org.openstreetmap.gui.jmapviewer.interfaces.MapRectangle;
 import org.openstreetmap.gui.jmapviewer.tilesources.OsmTileSource;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
@@ -546,5 +545,5 @@
                             throw ex;
                         else {
-                            JOptionPane.showMessageDialog(Main.parent,
+                            JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                                     ex.getMessage(), tr("Error"),
                                     JOptionPane.ERROR_MESSAGE);
@@ -815,5 +814,5 @@
                 scrollPane.setPreferredSize(new Dimension(400, 400));
                 box.add(scrollPane);
-                int option = JOptionPane.showConfirmDialog(Main.parent, box, tr("Please abort if you are not sure"),
+                int option = JOptionPane.showConfirmDialog(MainApplication.getMainFrame(), box, tr("Please abort if you are not sure"),
                         JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
                 if (option == JOptionPane.YES_OPTION)
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java	(revision 14153)
@@ -17,5 +17,4 @@
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.preferences.sources.ExtendedSourceEntry;
 import org.openstreetmap.josm.data.preferences.sources.PresetPrefHelper;
@@ -24,4 +23,5 @@
 import org.openstreetmap.josm.data.preferences.sources.SourceType;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
@@ -59,5 +59,5 @@
                         } catch (IOException e) {
                             Logging.log(Logging.LEVEL_WARN, tr("Could not read tagging preset source: {0}", source), e);
-                            ExtendedDialog ed = new ExtendedDialog(Main.parent, tr("Error"),
+                            ExtendedDialog ed = new ExtendedDialog(MainApplication.getMainFrame(), tr("Error"),
                                     tr("Yes"), tr("No"), tr("Cancel"));
                             ed.setContent(tr("Could not read tagging preset source: {0}\nDo you want to keep it?", source));
@@ -84,5 +84,5 @@
                             String msg = tr("Could not read tagging preset source: {0}", source);
                             Logging.log(Logging.LEVEL_ERROR, msg, e);
-                            JOptionPane.showMessageDialog(Main.parent, msg);
+                            JOptionPane.showMessageDialog(MainApplication.getMainFrame(), msg);
                             return false;
                         } catch (SAXParseException e) {
@@ -112,5 +112,5 @@
                         if (errorMessage != null) {
                             Logging.error(errorMessage);
-                            int result = JOptionPane.showConfirmDialog(Main.parent, new JLabel(errorMessage), tr("Error"),
+                            int result = JOptionPane.showConfirmDialog(MainApplication.getMainFrame(), new JLabel(errorMessage), tr("Error"),
                                     JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE);
 
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java	(revision 14153)
@@ -43,5 +43,4 @@
 import javax.swing.event.DocumentListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
 import org.openstreetmap.josm.data.Preferences;
@@ -635,5 +634,5 @@
                     }
                     String s = (String) JOptionPane.showInputDialog(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             tr("Edit JOSM Plugin description URL."),
                             tr("JOSM Plugin description URL"),
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java	(revision 14153)
@@ -22,5 +22,4 @@
 import javax.swing.JSeparator;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
 import org.openstreetmap.josm.data.Bounds;
@@ -35,4 +34,5 @@
 import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
@@ -476,5 +476,5 @@
         if (pc == null) {
             JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("The projection {0} could not be activated. Using Mercator", id),
                     tr("Error"),
Index: /trunk/src/org/openstreetmap/josm/gui/progress/NullProgressMonitor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/progress/NullProgressMonitor.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/progress/NullProgressMonitor.java	(revision 14153)
@@ -4,5 +4,5 @@
 import java.awt.Component;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Logging;
 
@@ -127,5 +127,5 @@
     @Override
     public Component getWindowParent() {
-        return Main.parent;
+        return MainApplication.getMainFrame();
     }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/progress/swing/PleaseWaitProgressMonitor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/progress/swing/PleaseWaitProgressMonitor.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/progress/swing/PleaseWaitProgressMonitor.java	(revision 14153)
@@ -11,5 +11,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
@@ -171,5 +170,5 @@
      */
     public PleaseWaitProgressMonitor(String windowTitle) {
-        this(Main.parent);
+        this(MainApplication.getMainFrame());
         this.windowTitle = windowTitle;
     }
@@ -401,5 +400,5 @@
         Component parent = dialog;
         if (isInBackground || parent == null)
-            return Main.parent;
+            return MainApplication.getMainFrame();
         else
             return parent;
Index: /trunk/src/org/openstreetmap/josm/gui/progress/swing/SwingRenderingProgressMonitor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/progress/swing/SwingRenderingProgressMonitor.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/progress/swing/SwingRenderingProgressMonitor.java	(revision 14153)
@@ -4,5 +4,5 @@
 import java.awt.Component;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.progress.AbstractProgressMonitor;
 import org.openstreetmap.josm.gui.progress.CancelHandler;
@@ -85,5 +85,5 @@
     @Override
     public Component getWindowParent() {
-        return Main.parent;
+        return MainApplication.getMainFrame();
     }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 14153)
@@ -32,5 +32,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AdaptableAction;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
@@ -432,5 +431,5 @@
          */
         PresetDialog(Component content, String title, ImageIcon icon, boolean disableApply, boolean showNewRelation) {
-            super(Main.parent, title,
+            super(MainApplication.getMainFrame(), title,
                     showNewRelation ?
                             (new String[] {tr("Apply Preset"), tr("New relation"), tr("Cancel")}) :
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java	(revision 14153)
@@ -21,6 +21,6 @@
 import javax.swing.JSeparator;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MainFrame;
 import org.openstreetmap.josm.tools.AlphanumComparator;
 import org.openstreetmap.josm.tools.Logging;
@@ -105,5 +105,6 @@
                 if (pointerInfo != null) {
                     Point p = pointerInfo.getLocation();
-                    pm.show(Main.parent, p.x-Main.parent.getX(), p.y-Main.parent.getY());
+                    MainFrame parent = MainApplication.getMainFrame();
+                    pm.show(parent, p.x-parent.getX(), p.y-parent.getY());
                 }
             } catch (SecurityException ex) {
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java	(revision 14153)
@@ -24,6 +24,6 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.preferences.sources.PresetPrefHelper;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.tagging.presets.items.Check;
 import org.openstreetmap.josm.gui.tagging.presets.items.CheckGroup;
@@ -391,5 +391,5 @@
                 if (displayErrMsg) {
                     JOptionPane.showMessageDialog(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             tr("Could not read tagging preset source: {0}", source),
                             tr("Error"),
@@ -402,5 +402,5 @@
                 if (displayErrMsg) {
                     JOptionPane.showMessageDialog(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             "<html>" + tr("Error parsing {0}: ", source) + "<br><br><table width=600>" +
                                     Utils.escapeReservedCharactersHTML(e.getMessage()) + "</table></html>",
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchDialog.java	(revision 14153)
@@ -6,7 +6,7 @@
 import java.awt.event.ActionEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 
 /**
@@ -32,5 +32,5 @@
 
     private TaggingPresetSearchDialog() {
-        super(Main.parent, tr("Search presets"), tr("Select"), tr("Cancel"));
+        super(MainApplication.getMainFrame(), tr("Search presets"), tr("Select"), tr("Cancel"));
         selector = new TaggingPresetSelector(true, true);
         setContent(selector, false);
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java	(revision 14153)
@@ -8,5 +8,4 @@
 import java.util.HashSet;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.osm.OsmData;
@@ -66,5 +65,5 @@
 
     TaggingPresetSearchPrimitiveDialog() {
-        super(Main.parent, tr("Search for objects by preset"), tr("Search"), tr("Cancel"));
+        super(MainApplication.getMainFrame(), tr("Search for objects by preset"), tr("Search"), tr("Cancel"));
         selector = new TaggingPresetSelector(false, false);
         setContent(selector, false);
Index: /trunk/src/org/openstreetmap/josm/gui/util/GuiHelper.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/util/GuiHelper.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/util/GuiHelper.java	(revision 14153)
@@ -51,5 +51,4 @@
 import javax.swing.plaf.FontUIResource;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.preferences.StrokeProperty;
 import org.openstreetmap.josm.gui.ExtendedDialog;
@@ -296,5 +295,5 @@
      */
     public static boolean warnUser(String title, String content, ImageIcon baseActionIcon, String continueToolTip) {
-        ExtendedDialog dlg = new ExtendedDialog(Main.parent,
+        ExtendedDialog dlg = new ExtendedDialog(MainApplication.getMainFrame(),
                 title, tr("Cancel"), tr("Continue"));
         dlg.setContent(content);
Index: /trunk/src/org/openstreetmap/josm/gui/util/MultikeyActionsHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/util/MultikeyActionsHandler.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/util/MultikeyActionsHandler.java	(revision 14153)
@@ -23,5 +23,4 @@
 import javax.swing.event.PopupMenuListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.util.MultikeyShortcutAction.MultikeyInfo;
@@ -102,7 +101,7 @@
             }
             layers.addPopupMenuListener(new StatusLinePopupMenuListener());
-            layers.show(Main.parent, Integer.MAX_VALUE, Integer.MAX_VALUE);
-            layers.setLocation(Main.parent.getX() + Main.parent.getWidth() - layers.getWidth(),
-                               Main.parent.getY() + Main.parent.getHeight() - layers.getHeight());
+            layers.show(MainApplication.getMainFrame(), Integer.MAX_VALUE, Integer.MAX_VALUE);
+            layers.setLocation(MainApplication.getMainFrame().getX() + MainApplication.getMainFrame().getWidth() - layers.getWidth(),
+                               MainApplication.getMainFrame().getY() + MainApplication.getMainFrame().getHeight() - layers.getHeight());
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/util/WindowGeometry.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/util/WindowGeometry.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/util/WindowGeometry.java	(revision 14153)
@@ -19,5 +19,5 @@
 import javax.swing.JComponent;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
@@ -410,6 +410,6 @@
         Dimension result = new Dimension();
         GraphicsConfiguration gc = component.getGraphicsConfiguration();
-        if (gc == null && Main.parent != null) {
-            gc = Main.parent.getGraphicsConfiguration();
+        if (gc == null && MainApplication.getMainFrame() != null) {
+            gc = MainApplication.getMainFrame().getGraphicsConfiguration();
         }
         if (gc != null) {
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/EditableList.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/EditableList.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/EditableList.java	(revision 14153)
@@ -17,5 +17,5 @@
 import javax.swing.JScrollPane;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.GBC;
 
@@ -61,5 +61,5 @@
         addSrcButton.addActionListener(e -> {
             String source = JOptionPane.showInputDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     title,
                     title,
@@ -79,5 +79,5 @@
             if (row == -1) {
                 if (sourcesList.getModel().getSize() == 0) {
-                    String source1 = JOptionPane.showInputDialog(Main.parent, title, title, JOptionPane.QUESTION_MESSAGE);
+                    String source1 = JOptionPane.showInputDialog(MainApplication.getMainFrame(), title, title, JOptionPane.QUESTION_MESSAGE);
                     if (source1 != null && !source1.isEmpty()) {
                         ((DefaultListModel<String>) sourcesList.getModel()).addElement(source1);
@@ -85,5 +85,5 @@
                 } else {
                     JOptionPane.showMessageDialog(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             tr("Please select the row to edit."),
                             tr("Information"),
@@ -92,5 +92,5 @@
                 }
             } else {
-                String source2 = (String) JOptionPane.showInputDialog(Main.parent,
+                String source2 = (String) JOptionPane.showInputDialog(MainApplication.getMainFrame(),
                         title,
                         title,
@@ -106,5 +106,5 @@
         deleteSrcButton.addActionListener(e -> {
             if (sourcesList.getSelectedIndex() == -1) {
-                JOptionPane.showMessageDialog(Main.parent, tr("Please select the row to delete."), tr("Information"),
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(), tr("Please select the row to delete."), tr("Information"),
                         JOptionPane.QUESTION_MESSAGE);
             } else {
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/FileChooserManager.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/FileChooserManager.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/FileChooserManager.java	(revision 14153)
@@ -10,9 +10,9 @@
 import javax.swing.filechooser.FileFilter;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.DiskAccessAction;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.actions.SaveActionBase;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.PlatformManager;
@@ -330,5 +330,5 @@
      * When the user choses a file or directory, the {@code lastDirProperty} is updated to the chosen directory path.
      *
-     * @param parent The Component used as the parent of the AbstractFileChooser. If null, uses {@code Main.parent}.
+     * @param parent The Component used as the parent of the AbstractFileChooser. If null, uses {@code MainApplication.getMainFrame()}.
      * @return the {@code AbstractFileChooser} if the user effectively choses a file or directory. {@code null} if the user cancelled the dialog.
      */
@@ -338,5 +338,5 @@
 
         if (parent == null) {
-            parent = Main.parent;
+            parent = MainApplication.getMainFrame();
         }
 
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/NativeFileChooser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/NativeFileChooser.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/NativeFileChooser.java	(revision 14153)
@@ -13,5 +13,5 @@
 import javax.swing.filechooser.FileFilter;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.PlatformManager;
 import org.openstreetmap.josm.tools.Utils;
@@ -35,5 +35,5 @@
      */
     public NativeFileChooser(File file) {
-        fileDialog = new FileDialog((Frame) Main.parent);
+        fileDialog = new FileDialog((Frame) MainApplication.getMainFrame());
         if (file != null) {
             fileDialog.setDirectory(file.getAbsolutePath());
Index: /trunk/src/org/openstreetmap/josm/io/audio/AudioUtil.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/audio/AudioUtil.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/io/audio/AudioUtil.java	(revision 14153)
@@ -15,5 +15,5 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.Logging;
@@ -66,5 +66,5 @@
         Logging.error(msg);
         if (!GraphicsEnvironment.isHeadless()) {
-            JOptionPane.showMessageDialog(Main.parent,
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                     "<html><p>" + msg + "</p></html>",
                     tr("Error playing sound"), JOptionPane.ERROR_MESSAGE);
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java	(revision 14153)
@@ -29,5 +29,4 @@
 import javax.swing.table.TableModel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
 import org.openstreetmap.josm.data.UndoRedoHandler;
@@ -139,5 +138,6 @@
      */
     public AddTagsDialog(String[][] tags, String senderName, Collection<? extends OsmPrimitive> primitives) {
-        super(Main.parent, tr("Add tags to selected objects"), new String[] {tr("Add selected tags"), tr("Add all tags"), tr("Cancel")},
+        super(MainApplication.getMainFrame(), tr("Add tags to selected objects"),
+                new String[] {tr("Add selected tags"), tr("Add all tags"), tr("Cancel")},
                 false,
                 true);
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java	(revision 14153)
@@ -21,8 +21,8 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadParams;
 import org.openstreetmap.josm.data.osm.DownloadPolicy;
 import org.openstreetmap.josm.data.osm.UploadPolicy;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
 import org.openstreetmap.josm.spi.preferences.Config;
@@ -181,5 +181,5 @@
         if (Config.getPref().getBoolean(globalConfirmationKey, globalConfirmationDefault)) {
             // Ensure dialog box does not exceed main window size
-            Integer maxWidth = (int) Math.max(200, Main.parent.getWidth()*0.6);
+            Integer maxWidth = (int) Math.max(200, MainApplication.getMainFrame().getWidth()*0.6);
             String message = "<html><div>" + getPermissionMessage() +
                     "<br/>" + tr("Do you want to allow this?") + "</div></html>";
@@ -189,5 +189,5 @@
             }
             Object[] choices = new Object[] {tr("Yes, always"), tr("Yes, once"), tr("No")};
-            int choice = JOptionPane.showOptionDialog(Main.parent, label, tr("Confirm Remote Control action"),
+            int choice = JOptionPane.showOptionDialog(MainApplication.getMainFrame(), label, tr("Confirm Remote Control action"),
                     JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, choices, choices[1]);
             if (choice != JOptionPane.YES_OPTION && choice != JOptionPane.NO_OPTION) { // Yes/no refer to always/once
Index: /trunk/src/org/openstreetmap/josm/io/session/SessionReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/session/SessionReader.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/io/session/SessionReader.java	(revision 14153)
@@ -32,5 +32,4 @@
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.ViewportData;
 import org.openstreetmap.josm.data.coor.EastNorth;
@@ -38,4 +37,5 @@
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
@@ -675,5 +675,5 @@
                 SwingUtilities.invokeAndWait(() -> {
                     ExtendedDialog dlg = new ExtendedDialog(
-                            Main.parent,
+                            MainApplication.getMainFrame(),
                             title,
                             tr("Cancel"), tr("Skip layer and continue"))
Index: /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 14153)
@@ -53,5 +53,4 @@
 import javax.swing.UIManager;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.RestartAction;
 import org.openstreetmap.josm.data.Preferences;
@@ -186,5 +185,5 @@
             a.setCaretPosition(0);
             if (!GraphicsEnvironment.isHeadless()) {
-                JOptionPane.showMessageDialog(Main.parent, new JScrollPane(a), tr("Plugin information"),
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(), new JScrollPane(a), tr("Plugin information"),
                         JOptionPane.INFORMATION_MESSAGE);
             }
@@ -1397,5 +1396,5 @@
         try {
             FutureTask<Integer> task = new FutureTask<>(() -> HelpAwareOptionPane.showOptionDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     msg.toString(),
                     tr("Update plugins"),
@@ -1480,5 +1479,5 @@
         case 0:
             // update the plugin
-            updatePlugins(Main.parent, Collections.singleton(pluginInfo), null, true);
+            updatePlugins(MainApplication.getMainFrame(), Collections.singleton(pluginInfo), null, true);
             return pluginDownloadTask;
         case 1:
@@ -1487,5 +1486,5 @@
             Config.getPref().putList("plugins", new ArrayList<>(plugins));
             GuiHelper.runInEDTAndWait(() -> JOptionPane.showMessageDialog(
-                    Main.parent,
+                    MainApplication.getMainFrame(),
                     tr("The plugin has been removed from the configuration. Please restart JOSM to unload the plugin."),
                     tr("Information"),
Index: /trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 14153)
@@ -29,6 +29,6 @@
 import javax.swing.UIManager;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Preferences;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.io.CertificateAmendment.NativeCertAmend;
 
@@ -85,5 +85,5 @@
             eawtApplication.getDeclaredMethod("setDockIconImage", Image.class).invoke(appli, ImageProvider.get("logo").getImage());
             // enable full screen
-            enableOSXFullscreen((Window) Main.parent);
+            enableOSXFullscreen(MainApplication.getMainFrame());
         } catch (ReflectiveOperationException | SecurityException | IllegalArgumentException ex) {
             // We'll just ignore this for now. The user will still be able to close JOSM by closing all its windows.
Index: /trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java	(revision 14152)
+++ /trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java	(revision 14153)
@@ -77,9 +77,9 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.StructUtils;
 import org.openstreetmap.josm.data.StructUtils.StructEntry;
 import org.openstreetmap.josm.data.StructUtils.WriteExplicitly;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.io.CertificateAmendment.NativeCertAmend;
 import org.openstreetmap.josm.spi.preferences.Config;
@@ -403,5 +403,5 @@
                     "For your own safety, <b>please click Yes</b> in next dialog."))
                    .append("</html>");
-            JOptionPane.showMessageDialog(Main.parent, message.toString(), tr("Warning"), JOptionPane.WARNING_MESSAGE);
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(), message.toString(), tr("Warning"), JOptionPane.WARNING_MESSAGE);
             for (String alias : insecureCertificates) {
                 Logging.warn(tr("Removing insecure certificate from {0} keystore: {1}", WINDOWS_ROOT, alias));
@@ -441,5 +441,5 @@
                     "If unsure, you can also click No then disable HTTPS support in Remote Control preferences."))
                    .append("</html>");
-            JOptionPane.showMessageDialog(Main.parent, message.toString(),
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(), message.toString(),
                     tr("HTTPS support in Remote Control"), JOptionPane.INFORMATION_MESSAGE);
         }
Index: /trunk/test/unit/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListMergeModelTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListMergeModelTest.java	(revision 14152)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListMergeModelTest.java	(revision 14153)
@@ -659,5 +659,4 @@
     /* PropertyChangeListener                                                        */
     /* ----------------------------------------------------------------------------- */
-    @SuppressWarnings("unchecked")
     @Test
     public void testAddPropertyChangeListener() throws ReflectiveOperationException {
@@ -675,5 +674,4 @@
     }
 
-    @SuppressWarnings("unchecked")
     @Test
     public void testRemovePropertyChangeListener() throws ReflectiveOperationException {
@@ -711,4 +709,5 @@
             public ArrayList<PropertyChangeEvent> events = new ArrayList<>();
 
+            @Override
             public void propertyChange(PropertyChangeEvent evt) {
                 events.add(evt);
Index: /trunk/test/unit/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferenceHighLevelTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferenceHighLevelTest.java	(revision 14152)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferenceHighLevelTest.java	(revision 14153)
@@ -9,5 +9,4 @@
 
 import java.awt.Component;
-import java.awt.Window;
 import java.io.File;
 import java.nio.file.Files;
@@ -21,5 +20,4 @@
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.Preferences;
@@ -69,8 +67,4 @@
     @Before
     public void setUp() throws ReflectiveOperationException {
-        if (!java.awt.GraphicsEnvironment.isHeadless()) {
-            originalMainParent = Main.parent;
-            Main.parent = new Window(null);
-        }
 
         // some other tests actually go ahead and load plugins (notably at time of writing,
@@ -120,13 +114,7 @@
         pluginList.clear();
         pluginList.addAll(this.originalPluginList);
-
-        if (!java.awt.GraphicsEnvironment.isHeadless()) {
-            Main.parent = originalMainParent;
-        }
     }
 
     private Collection<PluginProxy> originalPluginList;
-
-    private Component originalMainParent;
 
     private File pluginDir;
Index: /trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerJOSMTooOldTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerJOSMTooOldTest.java	(revision 14152)
+++ /trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerJOSMTooOldTest.java	(revision 14153)
@@ -15,7 +15,7 @@
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.Preferences;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -115,5 +115,5 @@
 
         final List<PluginInformation> updatedPlugins = PluginHandler.updatePlugins(
-            Main.parent,
+            MainApplication.getMainFrame(),
             null,
             null,
@@ -183,5 +183,5 @@
 
         final List<PluginInformation> updatedPlugins = PluginHandler.updatePlugins(
-            Main.parent,
+            MainApplication.getMainFrame(),
             null,
             null,
@@ -257,5 +257,5 @@
 
         final List<PluginInformation> updatedPlugins = ImmutableList.copyOf(PluginHandler.updatePlugins(
-            Main.parent,
+            MainApplication.getMainFrame(),
             null,
             null,
Index: /trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTest.java	(revision 14152)
+++ /trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTest.java	(revision 14153)
@@ -13,6 +13,6 @@
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.preferences.plugin.PluginPreferenceTest;
 import org.openstreetmap.josm.plugins.PluginHandler.DeprecatedPlugin;
@@ -73,5 +73,5 @@
     public void testFilterDeprecatedPlugins() {
         List<String> plugins = new ArrayList<>(Arrays.asList("foo", "bar", "imagery"));
-        PluginHandler.filterDeprecatedPlugins(Main.parent, plugins);
+        PluginHandler.filterDeprecatedPlugins(MainApplication.getMainFrame(), plugins);
         assertEquals(2, plugins.size());
         assertFalse(plugins.contains("imagery"));
@@ -84,5 +84,5 @@
     public void testFilterUnmaintainedPlugins() {
         List<String> plugins = new ArrayList<>(Arrays.asList("foo", "bar", "gpsbabelgui"));
-        PluginHandler.filterUnmaintainedPlugins(Main.parent, plugins);
+        PluginHandler.filterUnmaintainedPlugins(MainApplication.getMainFrame(), plugins);
         assertEquals(2, plugins.size());
         assertFalse(plugins.contains("gpsbabelgui"));
Index: /trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java	(revision 14152)
+++ /trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java	(revision 14153)
@@ -22,5 +22,4 @@
 import org.junit.runners.model.Statement;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.actions.DeleteAction;
Index: /trunk/test/unit/org/openstreetmap/josm/testutils/PluginServer.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/testutils/PluginServer.java	(revision 14152)
+++ /trunk/test/unit/org/openstreetmap/josm/testutils/PluginServer.java	(revision 14153)
@@ -1,4 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.testutils;
+
+import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
 
 import java.io.File;
@@ -12,12 +14,10 @@
 import java.util.stream.Collectors;
 
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.tools.Logging;
 
-import org.junit.runner.Description;
-import org.junit.runners.model.Statement;
-
-import com.google.common.collect.ImmutableList;
-
+import com.github.tomakehurst.wiremock.WireMockServer;
 import com.github.tomakehurst.wiremock.client.MappingBuilder;
 import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder;
@@ -25,7 +25,5 @@
 import com.github.tomakehurst.wiremock.core.Options;
 import com.github.tomakehurst.wiremock.junit.WireMockRule;
-import com.github.tomakehurst.wiremock.WireMockServer;
-
-import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
+import com.google.common.collect.ImmutableList;
 
 public class PluginServer {
@@ -75,5 +73,5 @@
 
         public String getRemotePluginsListManifestSection() {
-            final Map<String, String> attrs = new HashMap<String, String>();
+            final Map<String, String> attrs = new HashMap<>();
             JarFile jarFile = null;
 
@@ -239,5 +237,4 @@
             return super.apply(new Statement() {
                 @Override
-                @SuppressWarnings("unchecked")
                 public void evaluate() throws Throwable {
                     PluginServer.this.applyToWireMockServer(PluginServerRule.this);
