Index: /trunk/test/unit/org/openstreetmap/josm/JOSMFixture.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/JOSMFixture.java	(revision 12848)
+++ /trunk/test/unit/org/openstreetmap/josm/JOSMFixture.java	(revision 12849)
@@ -108,9 +108,9 @@
         Logging.setLogLevel(Logging.LEVEL_INFO);
         Main.pref.init(false);
-        String url = Main.pref.get("osm-server.url");
+        String url = Config.getPref().get("osm-server.url");
         if (url == null || url.isEmpty() || isProductionApiUrl(url)) {
-            Main.pref.put("osm-server.url", "http://api06.dev.openstreetmap.org/api");
-        }
-        I18n.set(Main.pref.get("language", "en"));
+            Config.getPref().put("osm-server.url", "http://api06.dev.openstreetmap.org/api");
+        }
+        I18n.set(Config.getPref().get("language", "en"));
 
         try {
Index: /trunk/test/unit/org/openstreetmap/josm/actions/MergeNodesActionTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/actions/MergeNodesActionTest.java	(revision 12848)
+++ /trunk/test/unit/org/openstreetmap/josm/actions/MergeNodesActionTest.java	(revision 12849)
@@ -10,8 +10,8 @@
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -43,5 +43,5 @@
     @Test(expected = IllegalStateException.class)
     public void testSelectTargetLocationNodeInvalidMode() {
-        Main.pref.putInt("merge-nodes.mode", -1);
+        Config.getPref().putInt("merge-nodes.mode", -1);
         MergeNodesAction.selectTargetLocationNode(Arrays.asList(new Node(0), new Node(1)));
     }
@@ -52,12 +52,12 @@
     @Test
     public void testSelectTargetLocationNode() {
-        Main.pref.putInt("merge-nodes.mode", 0);
+        Config.getPref().putInt("merge-nodes.mode", 0);
         assertEquals(1, MergeNodesAction.selectTargetLocationNode(Arrays.asList(new Node(0), new Node(1))).getId());
 
-        Main.pref.putInt("merge-nodes.mode", 1);
+        Config.getPref().putInt("merge-nodes.mode", 1);
         assertEquals(LatLon.ZERO, MergeNodesAction.selectTargetLocationNode(
                 Arrays.asList(new Node(LatLon.NORTH_POLE), new Node(LatLon.SOUTH_POLE))).getCoor());
 
-        Main.pref.putInt("merge-nodes.mode", 2);
+        Config.getPref().putInt("merge-nodes.mode", 2);
         assertEquals(LatLon.NORTH_POLE, MergeNodesAction.selectTargetLocationNode(
                 Arrays.asList(new Node(LatLon.NORTH_POLE))).getCoor());
Index: /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java	(revision 12848)
+++ /trunk/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java	(revision 12849)
@@ -14,5 +14,4 @@
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.actions.mapmode.SelectAction.Mode;
@@ -26,4 +25,5 @@
 import org.openstreetmap.josm.gui.layer.MainLayerManager;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.openstreetmap.josm.tools.Utils;
@@ -88,5 +88,5 @@
         dataSet.addSelected(w);
 
-        Main.pref.put("edit.initial-move-delay", "0");
+        Config.getPref().put("edit.initial-move-delay", "0");
         MainApplication.getLayerManager().addLayer(layer);
         try {
Index: /trunk/test/unit/org/openstreetmap/josm/data/UserIdentityManagerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/UserIdentityManagerTest.java	(revision 12848)
+++ /trunk/test/unit/org/openstreetmap/josm/data/UserIdentityManagerTest.java	(revision 12849)
@@ -11,7 +11,7 @@
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.data.osm.UserInfo;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -188,9 +188,9 @@
 
         // for this test we disable the listener
-        Main.pref.removePreferenceChangeListener(im);
-
-        try {
-            Main.pref.put("osm-server.url", null);
-            Main.pref.put("osm-server.username", null);
+        Config.getPref().removePreferenceChangeListener(im);
+
+        try {
+            Config.getPref().put("osm-server.url", null);
+            Config.getPref().put("osm-server.username", null);
 
             im.initFromPreferences();
@@ -198,5 +198,5 @@
             assertTrue(im.isAnonymous());
         } finally {
-            Main.pref.addPreferenceChangeListener(im);
+            Config.getPref().addPreferenceChangeListener(im);
         }
     }
@@ -213,9 +213,9 @@
 
         // for this test we disable the listener
-        Main.pref.removePreferenceChangeListener(im);
-
-        try {
-            Main.pref.put("osm-server.url", "http://api.openstreetmap.org");
-            Main.pref.put("osm-server.username", null);
+        Config.getPref().removePreferenceChangeListener(im);
+
+        try {
+            Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
+            Config.getPref().put("osm-server.username", null);
 
             im.initFromPreferences();
@@ -223,5 +223,5 @@
             assertTrue(im.isAnonymous());
         } finally {
-            Main.pref.addPreferenceChangeListener(im);
+            Config.getPref().addPreferenceChangeListener(im);
         }
     }
@@ -235,5 +235,5 @@
 
         // for this test we disable the listener
-        Main.pref.removePreferenceChangeListener(im);
+        Config.getPref().removePreferenceChangeListener(im);
 
         try {
@@ -241,6 +241,6 @@
             im.setAnonymous();
 
-            Main.pref.put("osm-server.url", "http://api.openstreetmap.org");
-            Main.pref.put("osm-server.username", "test");
+            Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
+            Config.getPref().put("osm-server.username", "test");
 
             im.initFromPreferences();
@@ -248,5 +248,5 @@
             assertTrue(im.isPartiallyIdentified());
         } finally {
-            Main.pref.addPreferenceChangeListener(im);
+            Config.getPref().addPreferenceChangeListener(im);
         }
     }
@@ -262,11 +262,11 @@
 
         // for this test we disable the listener
-        Main.pref.removePreferenceChangeListener(im);
+        Config.getPref().removePreferenceChangeListener(im);
 
         try {
             im.setFullyIdentified("test1", newUserInfo());
 
-            Main.pref.put("osm-server.url", "http://api.openstreetmap.org");
-            Main.pref.put("osm-server.username", "test2");
+            Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
+            Config.getPref().put("osm-server.username", "test2");
 
             im.initFromPreferences();
@@ -274,5 +274,5 @@
             assertTrue(im.isPartiallyIdentified());
         } finally {
-            Main.pref.addPreferenceChangeListener(im);
+            Config.getPref().addPreferenceChangeListener(im);
         }
     }
@@ -288,11 +288,11 @@
 
         // for this test we disable the listener
-        Main.pref.removePreferenceChangeListener(im);
+        Config.getPref().removePreferenceChangeListener(im);
 
         try {
             im.setFullyIdentified("test1", new UserInfo());
 
-            Main.pref.put("osm-server.url", "http://api.openstreetmap.org");
-            Main.pref.put("osm-server.username", "test1");
+            Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
+            Config.getPref().put("osm-server.username", "test1");
 
             im.initFromPreferences();
@@ -300,5 +300,5 @@
             assertTrue(im.isFullyIdentified());
         } finally {
-            Main.pref.addPreferenceChangeListener(im);
+            Config.getPref().addPreferenceChangeListener(im);
         }
     }
@@ -311,8 +311,8 @@
         im.setAnonymous();
 
-        Main.pref.put("osm-server.url", "http://api.openstreetmap.org");
-        assertTrue(im.isAnonymous());
-
-        Main.pref.put("osm-server.url", null);
+        Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
+        assertTrue(im.isAnonymous());
+
+        Config.getPref().put("osm-server.url", null);
         assertTrue(im.isAnonymous());
 
@@ -320,9 +320,9 @@
         im.setPartiallyIdentified("test");
 
-        Main.pref.put("osm-server.url", "http://api.openstreetmap.org");
-        assertTrue(im.isPartiallyIdentified());
-        assertEquals("test", im.getUserName());
-
-        Main.pref.put("osm-server.url", null);
+        Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
+        assertTrue(im.isPartiallyIdentified());
+        assertEquals("test", im.getUserName());
+
+        Config.getPref().put("osm-server.url", null);
         assertTrue(im.isAnonymous());
 
@@ -330,5 +330,5 @@
         im.setFullyIdentified("test", newUserInfo());
 
-        Main.pref.put("osm-server.url", "http://api.openstreetmap.org");
+        Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
         assertTrue(im.isPartiallyIdentified());
         assertEquals("test", im.getUserName());
@@ -337,5 +337,5 @@
         im.setFullyIdentified("test", newUserInfo());
 
-        Main.pref.put("osm-server.url", null);
+        Config.getPref().put("osm-server.url", null);
         assertTrue(im.isAnonymous());
     }
@@ -348,9 +348,9 @@
         im.setAnonymous();
 
-        Main.pref.put("osm-server.username", "test");
-        assertTrue(im.isPartiallyIdentified());
-        assertEquals("test", im.getUserName());
-
-        Main.pref.put("osm-server.username", null);
+        Config.getPref().put("osm-server.username", "test");
+        assertTrue(im.isPartiallyIdentified());
+        assertEquals("test", im.getUserName());
+
+        Config.getPref().put("osm-server.username", null);
         assertTrue(im.isAnonymous());
         assertEquals(User.getAnonymous(), im.asUser());
@@ -359,5 +359,5 @@
         im.setPartiallyIdentified("test1");
 
-        Main.pref.put("osm-server.username", "test2");
+        Config.getPref().put("osm-server.username", "test2");
         assertTrue(im.isPartiallyIdentified());
         assertEquals("test2", im.getUserName());
@@ -366,5 +366,5 @@
         assertEquals("test2", usr.getName());
 
-        Main.pref.put("osm-server.username", null);
+        Config.getPref().put("osm-server.username", null);
         assertTrue(im.isAnonymous());
 
@@ -372,5 +372,5 @@
         im.setFullyIdentified("test1", newUserInfo());
 
-        Main.pref.put("osm-server.username", "test2");
+        Config.getPref().put("osm-server.username", "test2");
         assertTrue(im.isPartiallyIdentified());
         assertEquals("test2", im.getUserName());
@@ -382,5 +382,5 @@
         im.setFullyIdentified("test1", newUserInfo());
 
-        Main.pref.put("osm-server.username", null);
+        Config.getPref().put("osm-server.username", null);
         assertTrue(im.isAnonymous());
     }
Index: /trunk/test/unit/org/openstreetmap/josm/data/preferences/ColorPropertyTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/preferences/ColorPropertyTest.java	(revision 12848)
+++ /trunk/test/unit/org/openstreetmap/josm/data/preferences/ColorPropertyTest.java	(revision 12849)
@@ -9,5 +9,5 @@
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -42,5 +42,5 @@
         assertEquals(Color.RED, base.get());
 
-        Main.pref.put("color.test", "#00ff00");
+        Config.getPref().put("color.test", "#00ff00");
         assertEquals(new Color(0xff00ff00), base.get());
     }
@@ -55,5 +55,5 @@
         base.put(new Color(0xff00ff00));
         assertEquals(new Color(0xff00ff00), base.get());
-        assertEquals("#00ff00", Main.pref.get("color.test").toLowerCase());
+        assertEquals("#00ff00", Config.getPref().get("color.test").toLowerCase());
 
         base.put(null);
Index: /trunk/test/unit/org/openstreetmap/josm/data/preferences/StrokePropertyTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/preferences/StrokePropertyTest.java	(revision 12848)
+++ /trunk/test/unit/org/openstreetmap/josm/data/preferences/StrokePropertyTest.java	(revision 12849)
@@ -9,5 +9,5 @@
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -33,5 +33,5 @@
         StrokeProperty property = new StrokeProperty("x", "1");
 
-        Main.pref.put("x", "11");
+        Config.getPref().put("x", "11");
         BasicStroke bs = property.get();
         assertWide(bs);
@@ -39,5 +39,5 @@
         assertEquals(null, bs.getDashArray());
 
-        Main.pref.put("x", ".5");
+        Config.getPref().put("x", ".5");
         bs = property.get();
         assertThin(bs);
@@ -45,5 +45,5 @@
         assertEquals(null, bs.getDashArray());
 
-        Main.pref.put("x", "2 1");
+        Config.getPref().put("x", "2 1");
         bs = property.get();
         assertWide(bs);
@@ -51,5 +51,5 @@
         assertArrayEquals(new float[] {1}, bs.getDashArray(), 1e-10f);
 
-        Main.pref.put("x", "2 0.1 1 10");
+        Config.getPref().put("x", "2 0.1 1 10");
         bs = property.get();
         assertWide(bs);
@@ -57,5 +57,5 @@
         assertArrayEquals(new float[] {0.1f, 1, 10}, bs.getDashArray(), 1e-10f);
 
-        Main.pref.put("x", "x");
+        Config.getPref().put("x", "x");
         bs = property.get();
         assertThin(bs);
@@ -64,5 +64,5 @@
 
         // ignore dashes
-        Main.pref.put("x", "11 0 0 0.0001");
+        Config.getPref().put("x", "11 0 0 0.0001");
         bs = property.get();
         assertWide(bs);
Index: /trunk/test/unit/org/openstreetmap/josm/gui/MainApplicationTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/MainApplicationTest.java	(revision 12848)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/MainApplicationTest.java	(revision 12849)
@@ -41,4 +41,5 @@
 import org.openstreetmap.josm.plugins.PluginListParseException;
 import org.openstreetmap.josm.plugins.PluginListParser;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.openstreetmap.josm.tools.Logging;
@@ -205,5 +206,5 @@
     public void testSetupUIManager() {
         MainApplication.setupUIManager();
-        assertEquals(Main.pref.get("laf", Main.platform.getDefaultStyle()), UIManager.getLookAndFeel().getClass().getCanonicalName());
+        assertEquals(Config.getPref().get("laf", Main.platform.getDefaultStyle()), UIManager.getLookAndFeel().getClass().getCanonicalName());
     }
 
Index: /trunk/test/unit/org/openstreetmap/josm/gui/io/CustomConfiguratorTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/io/CustomConfiguratorTest.java	(revision 12848)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/io/CustomConfiguratorTest.java	(revision 12849)
@@ -15,8 +15,8 @@
 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.data.PreferencesUtils;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.openstreetmap.josm.tools.Utils;
@@ -44,5 +44,5 @@
         File tmp = File.createTempFile("josm.testExportPreferencesKeysToFile.lorem_ipsum", ".xml");
 
-        Main.pref.putList("lorem_ipsum", Arrays.asList(
+        Config.getPref().putList("lorem_ipsum", Arrays.asList(
                 "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
                 "Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor.",
@@ -57,13 +57,13 @@
         String xml = Utils.join("\n", Files.readAllLines(tmp.toPath(), StandardCharsets.UTF_8));
         assertTrue(xml.contains("<preferences operation=\"replace\">"));
-        for (String entry : Main.pref.getList("lorem_ipsum")) {
+        for (String entry : Config.getPref().getList("lorem_ipsum")) {
             assertTrue(entry + "\nnot found in:\n" + xml, xml.contains(entry));
         }
 
-        Main.pref.putList("test", Arrays.asList("11111111", "2222222", "333333333"));
+        Config.getPref().putList("test", Arrays.asList("11111111", "2222222", "333333333"));
         CustomConfigurator.exportPreferencesKeysByPatternToFile(tmp.getAbsolutePath(), true, "test");
         xml = Utils.join("\n", Files.readAllLines(tmp.toPath(), StandardCharsets.UTF_8));
         assertTrue(xml.contains("<preferences operation=\"append\">"));
-        for (String entry : Main.pref.getList("test")) {
+        for (String entry : Config.getPref().getList("test")) {
             assertTrue(entry + "\nnot found in:\n" + xml, xml.contains(entry));
         }
@@ -79,10 +79,10 @@
     public void testReadXML() throws IOException {
         // Test 1 - read(dir, file) + append
-        Main.pref.putList("test", Collections.<String>emptyList());
-        assertTrue(Main.pref.getList("test").isEmpty());
+        Config.getPref().putList("test", Collections.<String>emptyList());
+        assertTrue(Config.getPref().getList("test").isEmpty());
         CustomConfigurator.readXML(TestUtils.getTestDataRoot() + "customconfigurator", "append.xml");
         String log = PreferencesUtils.getLog();
         assertFalse(log, log.contains("Error"));
-        assertFalse(Main.pref.getList("test").isEmpty());
+        assertFalse(Config.getPref().getList("test").isEmpty());
 
         // Test 2 - read(file, pref) + replace
Index: /trunk/test/unit/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelperTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelperTest.java	(revision 12848)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelperTest.java	(revision 12849)
@@ -11,9 +11,9 @@
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.io.GpxReaderTest;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.openstreetmap.josm.tools.ColorHelper;
@@ -42,6 +42,6 @@
     @Test
     public void testTicket12312() throws FileNotFoundException, IOException, SAXException {
-        Main.pref.putBoolean("draw.rawgps.colors.dynamic.layer 12312", true);
-        Main.pref.putInt("draw.rawgps.colors.layer 12312", GpxDrawHelper.ColorMode.VELOCITY.toIndex());
+        Config.getPref().putBoolean("draw.rawgps.colors.dynamic.layer 12312", true);
+        Config.getPref().putInt("draw.rawgps.colors.layer 12312", GpxDrawHelper.ColorMode.VELOCITY.toIndex());
         final List<String> colors = calculateColors(TestUtils.getRegressionDataFile(12312, "single_trackpoint.gpx"), "12312", 1);
         assertEquals("[#FF00FF]", colors.toString());
@@ -68,5 +68,5 @@
     @Test
     public void testVelocity() throws IOException, SAXException {
-        Main.pref.putInt("draw.rawgps.colors.layer 001", GpxDrawHelper.ColorMode.VELOCITY.toIndex());
+        Config.getPref().putInt("draw.rawgps.colors.layer 001", GpxDrawHelper.ColorMode.VELOCITY.toIndex());
         final List<String> colors = calculateColors("data_nodist/2094047.gpx", "001", 10);
         assertEquals("[#FF00FF, #FFAD00, #FFA800, #FFA800, #FF9E00, #FF9400, #FF7000, #FF7000, #FF8000, #FF9400]", colors.toString());
@@ -81,6 +81,6 @@
     @Test
     public void testVelocityDynamic() throws IOException, SAXException {
-        Main.pref.putInt("draw.rawgps.colors.layer 002", GpxDrawHelper.ColorMode.VELOCITY.toIndex());
-        Main.pref.putBoolean("draw.rawgps.colors.dynamic.layer 002", true);
+        Config.getPref().putInt("draw.rawgps.colors.layer 002", GpxDrawHelper.ColorMode.VELOCITY.toIndex());
+        Config.getPref().putBoolean("draw.rawgps.colors.dynamic.layer 002", true);
         final List<String> colors = calculateColors("data_nodist/2094047.gpx", "002", 10);
         assertEquals("[#FF00FF, #00FFE0, #00FFC2, #00FFC2, #00FF75, #00FF3D, #99FF00, #94FF00, #38FF00, #00FF38]", colors.toString());
@@ -95,5 +95,5 @@
     @Test
     public void testDirection() throws IOException, SAXException {
-        Main.pref.putInt("draw.rawgps.colors.layer 003", GpxDrawHelper.ColorMode.DIRECTION.toIndex());
+        Config.getPref().putInt("draw.rawgps.colors.layer 003", GpxDrawHelper.ColorMode.DIRECTION.toIndex());
         final List<String> colors = calculateColors("data_nodist/2094047.gpx", "003", 10);
         assertEquals("[#FF00FF, #EAEC25, #EDEA26, #EDE525, #ECD322, #EBB81D, #E85A0D, #E73708, #E84D0B, #EA8A15]", colors.toString());
@@ -108,5 +108,5 @@
     @Test
     public void testTime() throws IOException, SAXException {
-        Main.pref.putInt("draw.rawgps.colors.layer 003", GpxDrawHelper.ColorMode.TIME.toIndex());
+        Config.getPref().putInt("draw.rawgps.colors.layer 003", GpxDrawHelper.ColorMode.TIME.toIndex());
         final List<String> colors = calculateColors("data_nodist/2094047.gpx", "003", 10);
         assertEquals("[#FF00FF, #FF0000, #FF0000, #FF0500, #FF0500, #FF0A00, #FF0A00, #FF1F00, #FF2E00, #FF3300]", colors.toString());
Index: /trunk/test/unit/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayerTest.java	(revision 12848)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayerTest.java	(revision 12849)
@@ -12,5 +12,4 @@
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.gpx.GpxConstants;
@@ -19,4 +18,5 @@
 import org.openstreetmap.josm.data.gpx.WayPoint;
 import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -40,5 +40,5 @@
     @Before
     public void setUp() {
-        Main.pref.putBoolean("marker.traceaudio", true);
+        Config.getPref().putBoolean("marker.traceaudio", true);
     }
 
Index: /trunk/test/unit/org/openstreetmap/josm/gui/preferences/audio/AudioPreferenceTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/preferences/audio/AudioPreferenceTest.java	(revision 12848)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/preferences/audio/AudioPreferenceTest.java	(revision 12849)
@@ -7,6 +7,6 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
+import org.openstreetmap.josm.spi.preferences.Config;
 
 /**
@@ -36,7 +36,7 @@
     @Test
     public void testAddGui() {
-        Main.pref.putBoolean("audio.menuinvisible", true);
+        Config.getPref().putBoolean("audio.menuinvisible", true);
         PreferencesTestUtils.doTestPreferenceSettingAddGui(new AudioPreference.Factory(), null);
-        Main.pref.putBoolean("audio.menuinvisible", false);
+        Config.getPref().putBoolean("audio.menuinvisible", false);
         PreferencesTestUtils.doTestPreferenceSettingAddGui(new AudioPreference.Factory(), null);
     }
Index: /trunk/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTest.java	(revision 12848)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTest.java	(revision 12849)
@@ -9,7 +9,7 @@
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -42,5 +42,5 @@
     public void testAddGui() {
         String fileUrl = new File(TestUtils.getTestDataRoot()+"__files/imagery/maps.xml").toURI().toString();
-        Main.pref.putList("imagery.layers.sites", Arrays.asList(fileUrl));
+        Config.getPref().putList("imagery.layers.sites", Arrays.asList(fileUrl));
         PreferencesTestUtils.doTestPreferenceSettingAddGui(new ImageryPreference.Factory(), null);
     }
Index: /trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java	(revision 12848)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java	(revision 12849)
@@ -17,8 +17,8 @@
 import org.junit.rules.Timeout;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.preferences.sources.ExtendedSourceEntry;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetReader;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Logging;
@@ -58,6 +58,6 @@
         assertFalse(sources.isEmpty());
         // Double traditional timeouts to avoid random problems
-        Main.pref.putInt("socket.timeout.connect", 30);
-        Main.pref.putInt("socket.timeout.read", 60);
+        Config.getPref().putInt("socket.timeout.connect", 30);
+        Config.getPref().putInt("socket.timeout.read", 60);
         Map<Object, Throwable> allErrors = new HashMap<>();
         Set<String> allMessages = new HashSet<>();
Index: /trunk/test/unit/org/openstreetmap/josm/gui/util/WindowGeometryTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/util/WindowGeometryTest.java	(revision 12848)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/util/WindowGeometryTest.java	(revision 12849)
@@ -16,6 +16,6 @@
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.util.WindowGeometry.WindowGeometryException;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -53,5 +53,5 @@
         assertEquals(new WindowGeometry(new Point(300, 250), dim), WindowGeometry.centerOnScreen(dim, null));
 
-        Main.pref.put("gui.geometry", "x=0,y=0,width=800,height=600");
+        Config.getPref().put("gui.geometry", "x=0,y=0,width=800,height=600");
         assertEquals(new WindowGeometry(new Point(300, 250), dim), WindowGeometry.centerOnScreen(dim));
     }
@@ -63,5 +63,5 @@
     @Test(expected = WindowGeometryException.class)
     public void testWindowGeometryException1() throws WindowGeometryException {
-        Main.pref.put("test", null);
+        Config.getPref().put("test", null);
         new WindowGeometry("test");
     }
@@ -73,5 +73,5 @@
     @Test(expected = WindowGeometryException.class)
     public void testWindowGeometryException2() throws WindowGeometryException {
-        Main.pref.put("test", "");
+        Config.getPref().put("test", "");
         new WindowGeometry("test");
     }
@@ -83,5 +83,5 @@
     @Test(expected = WindowGeometryException.class)
     public void testWindowGeometryException3() throws WindowGeometryException {
-        Main.pref.put("test", "x=not_a_number");
+        Config.getPref().put("test", "x=not_a_number");
         new WindowGeometry("test");
     }
@@ -93,5 +93,5 @@
     @Test(expected = WindowGeometryException.class)
     public void testWindowGeometryException4() throws WindowGeometryException {
-        Main.pref.put("test", "wrong_pattern");
+        Config.getPref().put("test", "wrong_pattern");
         new WindowGeometry("test");
     }
@@ -103,5 +103,5 @@
     @Test
     public void testWindowGeometryException5() throws WindowGeometryException {
-        Main.pref.put("test", "x=15,y=55,width=200,height=100");
+        Config.getPref().put("test", "x=15,y=55,width=200,height=100");
         assertNotNull(new WindowGeometry("test"));
     }
Index: /trunk/test/unit/org/openstreetmap/josm/io/remotecontrol/RemoteControlTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/io/remotecontrol/RemoteControlTest.java	(revision 12848)
+++ /trunk/test/unit/org/openstreetmap/josm/io/remotecontrol/RemoteControlTest.java	(revision 12849)
@@ -27,5 +27,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.Logging;
 
@@ -52,6 +52,6 @@
         RemoteControl.start();
         disableCertificateValidation();
-        httpBase = "http://127.0.0.1:"+Main.pref.getInt("remote.control.port", 8111);
-        httpsBase = "https://127.0.0.1:"+Main.pref.getInt("remote.control.https.port", 8112);
+        httpBase = "http://127.0.0.1:"+Config.getPref().getInt("remote.control.port", 8111);
+        httpsBase = "https://127.0.0.1:"+Config.getPref().getInt("remote.control.https.port", 8112);
     }
 
Index: /trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java	(revision 12848)
+++ /trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java	(revision 12849)
@@ -28,4 +28,5 @@
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -148,9 +149,9 @@
         PluginDownloadTask pluginDownloadTask = new PluginDownloadTask(NullProgressMonitor.INSTANCE, plugins, null);
         // Increase default timeout to avoid random network errors on big jar files
-        int defTimeout = Main.pref.getInt("socket.timeout.read", 30);
-        Main.pref.putInt("socket.timeout.read", 2 * defTimeout);
+        int defTimeout = Config.getPref().getInt("socket.timeout.read", 30);
+        Config.getPref().putInt("socket.timeout.read", 2 * defTimeout);
         pluginDownloadTask.run();
         // Restore default timeout
-        Main.pref.putInt("socket.timeout.read", defTimeout);
+        Config.getPref().putInt("socket.timeout.read", defTimeout);
         assertTrue(pluginDownloadTask.getFailedPlugins().toString(), pluginDownloadTask.getFailedPlugins().isEmpty());
         assertEquals(plugins.size(), pluginDownloadTask.getDownloadedPlugins().size());
Index: /trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java	(revision 12848)
+++ /trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java	(revision 12849)
@@ -310,5 +310,5 @@
             // No pref init -> that would only create the preferences file.
             // We force the use of a wrong API server, just in case anyone attempts an upload
-            Main.pref.put("osm-server.url", "http://invalid");
+            Config.getPref().put("osm-server.url", "http://invalid");
         }
 
@@ -336,8 +336,8 @@
         // Set API
         if (useAPI == APIType.DEV) {
-            Main.pref.put("osm-server.url", "http://api06.dev.openstreetmap.org/api");
+            Config.getPref().put("osm-server.url", "http://api06.dev.openstreetmap.org/api");
         } else if (useAPI == APIType.FAKE) {
             FakeOsmApi api = FakeOsmApi.getInstance();
-            Main.pref.put("osm-server.url", api.getServerUrl());
+            Config.getPref().put("osm-server.url", api.getServerUrl());
         }
 
