Index: /applications/editors/josm/plugins/print/.classpath
===================================================================
--- /applications/editors/josm/plugins/print/.classpath	(revision 34546)
+++ /applications/editors/josm/plugins/print/.classpath	(revision 34547)
@@ -2,5 +2,9 @@
 <classpath>
 	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="src" path="test/unit"/>
+	<classpathentry kind="src" output="bintest" path="test/unit">
+		<attributes>
+			<attribute name="test" value="true"/>
+		</attributes>
+	</classpathentry>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry combineaccessrules="false" kind="src" path="/JOSM"/>
Index: /applications/editors/josm/plugins/print/build.xml
===================================================================
--- /applications/editors/josm/plugins/print/build.xml	(revision 34546)
+++ /applications/editors/josm/plugins/print/build.xml	(revision 34547)
@@ -5,5 +5,5 @@
     <property name="commit.message" value="Added a field to specify the map scale."/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="12840"/>
+    <property name="plugin.main.version" value="14153"/>
 
     <property name="plugin.author" value="Kai Pastor"/>
Index: /applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintAction.java
===================================================================
--- /applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintAction.java	(revision 34546)
+++ /applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintAction.java	(revision 34547)
@@ -9,6 +9,6 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -48,5 +48,5 @@
     public void run() {
         PrintPlugin.adjustPrefs();
-        PrintDialog window = new PrintDialog(Main.parent);
+        PrintDialog window = new PrintDialog(MainApplication.getMainFrame());
         window.setVisible(true);
         PrintPlugin.restorePrefs();
Index: /applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintDialog.java
===================================================================
--- /applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintDialog.java	(revision 34546)
+++ /applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintDialog.java	(revision 34547)
@@ -59,7 +59,7 @@
 
 import org.openstreetmap.gui.jmapviewer.tilesources.AbstractOsmTileSource;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.util.WindowGeometry;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Logging;
@@ -166,5 +166,5 @@
         } else if (isShowing()) { // Avoid IllegalComponentStateException like in #8775
             new WindowGeometry(this).remember(getClass().getName() + ".geometry");
-            Main.pref.putBoolean("print.preview.enabled", previewCheckBox.isSelected());
+            Config.getPref().putBoolean("print.preview.enabled", previewCheckBox.isSelected());
         }
         super.setVisible(visible);
@@ -220,5 +220,5 @@
         caption = new JLabel(" 1 :");
         add(caption, std.grid(GBC.RELATIVE, row));
-        int mapScale = Main.pref.getInt("print.map-scale", PrintPlugin.DEF_MAP_SCALE);
+        int mapScale = Config.getPref().getInt("print.map-scale", PrintPlugin.DEF_MAP_SCALE);
         mapView.setFixedMapScale(mapScale);
         scaleModel = new SpinnerNumberModel(mapScale, 250, 5000000, 250);
@@ -232,5 +232,5 @@
                         try {
                             scaleField.commitEdit();
-                            Main.pref.put("print.map-scale", scaleModel.getNumber().toString());
+                            Config.getPref().put("print.map-scale", scaleModel.getNumber().toString());
                             mapView.setFixedMapScale(scaleModel.getNumber().intValue());
                             printPreview.repaint();
@@ -250,5 +250,5 @@
         add(caption, std.grid(GBC.RELATIVE, row));
         resolutionModel = new SpinnerNumberModel(
-          Main.pref.getInt("print.resolution.dpi", PrintPlugin.DEF_RESOLUTION_DPI),
+          Config.getPref().getInt("print.resolution.dpi", PrintPlugin.DEF_RESOLUTION_DPI),
           30, 1200, 10);
         final JSpinner resolutionField = new JSpinner(resolutionModel);
@@ -261,5 +261,5 @@
                         try {
                             resolutionField.commitEdit();
-                            Main.pref.put("print.resolution.dpi", resolutionModel.getNumber().toString());
+                            Config.getPref().put("print.resolution.dpi", resolutionModel.getNumber().toString());
                             printPreview.repaint();
                         } catch (ParseException e) {
@@ -277,5 +277,5 @@
 
         row++;
-        final JTextArea attributionText = new JTextArea(Main.pref.get("print.attribution", AbstractOsmTileSource.DEFAULT_OSM_ATTRIBUTION));
+        final JTextArea attributionText = new JTextArea(Config.getPref().get("print.attribution", AbstractOsmTileSource.DEFAULT_OSM_ATTRIBUTION));
         attributionText.setRows(10);
         attributionText.setLineWrap(true);
@@ -287,5 +287,5 @@
                     @Override
                     public void run() {
-                        Main.pref.put("print.attribution", attributionText.getText());
+                        Config.getPref().put("print.attribution", attributionText.getText());
                         printPreview.repaint();
                     }
@@ -311,5 +311,5 @@
         row++;
         previewCheckBox = new JCheckBox(tr("Map Preview"));
-        previewCheckBox.setSelected(Main.pref.getBoolean("print.preview.enabled", false));
+        previewCheckBox.setSelected(Config.getPref().getBoolean("print.preview.enabled", false));
         previewCheckBox.setActionCommand("toggle-preview");
         previewCheckBox.addActionListener(this);
@@ -416,5 +416,5 @@
             }
         } else if ("toggle-preview".equals(cmd)) {
-            Main.pref.putBoolean("print.preview.enabled", previewCheckBox.isSelected());
+            Config.getPref().putBoolean("print.preview.enabled", previewCheckBox.isSelected());
             if (previewCheckBox.isSelected()) {
                 printPreview.setPrintable(mapView);
@@ -438,5 +438,5 @@
                     msg = tr("Printing has been cancelled.");
                 }
-                JOptionPane.showMessageDialog(Main.parent, msg,
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(), msg,
                   tr("Printing stopped"),
                   JOptionPane.WARNING_MESSAGE);
@@ -446,5 +446,5 @@
                     msg = tr("Printing has failed.");
                 }
-                JOptionPane.showMessageDialog(Main.parent, msg,
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(), msg,
                   tr("Printing stopped"),
                   JOptionPane.ERROR_MESSAGE);
@@ -466,5 +466,5 @@
                 }
             }
-            Main.pref.putListOfLists("print.settings.service-attributes", serviceAttributes);
+            Config.getPref().putListOfLists("print.settings.service-attributes", serviceAttributes);
         }
 
@@ -488,5 +488,5 @@
             }
         }
-        Main.pref.putListOfLists("print.settings.request-attributes", requestAttributes);
+        Config.getPref().putListOfLists("print.settings.request-attributes", requestAttributes);
     }
 
@@ -540,5 +540,5 @@
 
     protected void loadPrintSettings() {
-        for (List<String> setting : Main.pref.getListOfLists("print.settings.service-attributes")) {
+        for (List<String> setting : Config.getPref().getListOfLists("print.settings.service-attributes")) {
             try {
                 PrintServiceAttribute a = (PrintServiceAttribute) unmarshallPrintSetting(setting);
@@ -550,5 +550,5 @@
             }
         }
-        for (List<String> setting : Main.pref.getListOfLists("print.settings.request-attributes")) {
+        for (List<String> setting : Config.getPref().getListOfLists("print.settings.request-attributes")) {
             try {
                 attrs.add(unmarshallPrintSetting(setting));
Index: /applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintPlugin.java
===================================================================
--- /applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintPlugin.java	(revision 34546)
+++ /applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintPlugin.java	(revision 34547)
@@ -6,9 +6,9 @@
 import javax.swing.KeyStroke;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.plugins.Plugin;
 import org.openstreetmap.josm.plugins.PluginInformation;
+import org.openstreetmap.josm.spi.preferences.Config;
 
 /**
@@ -91,6 +91,6 @@
      */
     public static void adjustPrefs() {
-        if (!Main.pref.getBoolean("print.saved-prefs", false)) {
-            Main.pref.putBoolean("print.saved-prefs", true);
+        if (!Config.getPref().getBoolean("print.saved-prefs", false)) {
+            Config.getPref().putBoolean("print.saved-prefs", true);
             adjustPref("draw.data.downloaded_area", false);
             adjustPref("mappaint.node.connection-size", 0);
@@ -111,8 +111,8 @@
      */
     protected static void adjustPref(String key, int value) {
-        if (!Main.pref.get(key).isEmpty()) {
-            Main.pref.put("print.saved-prefs."+key, Main.pref.get(key));
+        if (!Config.getPref().get(key).isEmpty()) {
+            Config.getPref().put("print.saved-prefs."+key, Config.getPref().get(key));
         }
-        Main.pref.putInt(key, value);
+        Config.getPref().putInt(key, value);
     }
 
@@ -126,8 +126,8 @@
      */
     protected static void adjustPref(String key, boolean value) {
-        if (!Main.pref.get(key).isEmpty()) {
-            Main.pref.put("print.saved-prefs."+key, Main.pref.get(key));
+        if (!Config.getPref().get(key).isEmpty()) {
+            Config.getPref().put("print.saved-prefs."+key, Config.getPref().get(key));
         }
-        Main.pref.putBoolean(key, value);
+        Config.getPref().putBoolean(key, value);
     }
 
@@ -141,8 +141,8 @@
      */
     protected static void adjustPref(String key, String value) {
-        if (!Main.pref.get(key).isEmpty()) {
-            Main.pref.put("print.saved-prefs."+key, Main.pref.get(key));
+        if (!Config.getPref().get(key).isEmpty()) {
+            Config.getPref().put("print.saved-prefs."+key, Config.getPref().get(key));
         }
-        Main.pref.put(key, value);
+        Config.getPref().put(key, value);
     }
 
@@ -151,5 +151,5 @@
      */
     public static void restorePrefs() {
-        if (Main.pref.getBoolean("print.saved-prefs", false)) {
+        if (Config.getPref().getBoolean("print.saved-prefs", false)) {
             restorePref("draw.data.downloaded_area");
             restorePref("mappaint.node.connection-size");
@@ -158,5 +158,5 @@
             restorePref("mappaint.node.unselected-size");
             restorePref("mappaint.node.virtual-size");
-            Main.pref.putBoolean("print.saved-prefs", false);
+            Config.getPref().putBoolean("print.saved-prefs", false);
             //Main.main.map.mapView.repaint();
         }
@@ -170,6 +170,6 @@
     protected static void restorePref(String key) {
         String savedKey = "print.saved-prefs."+key;
-        Main.pref.put(key, Main.pref.get(savedKey));
-        Main.pref.put(savedKey, null);
+        Config.getPref().put(key, Config.getPref().get(savedKey));
+        Config.getPref().put(savedKey, null);
     }
 }
Index: /applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintableMapView.java
===================================================================
--- /applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintableMapView.java	(revision 34546)
+++ /applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintableMapView.java	(revision 34547)
@@ -22,5 +22,4 @@
 
 import org.openstreetmap.gui.jmapviewer.tilesources.AbstractOsmTileSource;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.SystemOfMeasurement;
@@ -31,4 +30,5 @@
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
+import org.openstreetmap.josm.spi.preferences.Config;
 
 /**
@@ -110,5 +110,5 @@
      */
     public void initialize(PageFormat pageFormat) {
-        int resolution = Main.pref.getInt("print.resolution.dpi", PrintPlugin.DEF_RESOLUTION_DPI);
+        int resolution = Config.getPref().getInt("print.resolution.dpi", PrintPlugin.DEF_RESOLUTION_DPI);
         g2dFactor = 72.0/resolution;
         setSize((int) (pageFormat.getImageableWidth()/g2dFactor), (int) (pageFormat.getImageableHeight()/g2dFactor));
@@ -222,5 +222,5 @@
         double dist100px = getDist100Pixel() / g2dFactor;
         double dist = dist100px / som.aValue;
-        if (!Main.pref.getBoolean("system_of_measurement.use_only_lower_unit", false) && dist > som.bValue / som.aValue) {
+        if (!Config.getPref().getBoolean("system_of_measurement.use_only_lower_unit", false) && dist > som.bValue / som.aValue) {
             dist = dist100px / som.bValue;
         }
@@ -292,5 +292,5 @@
      */
     public void paintMapAttribution(Graphics2D g2d, PageFormat pageFormat) {
-        String text = Main.pref.get("print.attribution", AbstractOsmTileSource.DEFAULT_OSM_ATTRIBUTION);
+        String text = Config.getPref().get("print.attribution", AbstractOsmTileSource.DEFAULT_OSM_ATTRIBUTION);
 
         if (text == null) {
