Index: trunk/src/org/openstreetmap/josm/data/CustomConfigurator.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/CustomConfigurator.java	(revision 5200)
+++ trunk/src/org/openstreetmap/josm/data/CustomConfigurator.java	(revision 5201)
@@ -416,12 +416,18 @@
         
         ScriptEngine engine ;
-        
+
         public void openAndReadXML(File file) {
             log("-- Reading custom preferences from " + file.getAbsolutePath() + " --");
-            InputStream is = null;
             try {
-                is = new BufferedInputStream(new FileInputStream(file));
                 String fileDir = file.getParentFile().getAbsolutePath();
                 if (fileDir!=null) engine.eval("scriptDir='"+normalizeDirName(fileDir) +"';");
+                openAndReadXML(new BufferedInputStream(new FileInputStream(file)));
+            } catch (Exception ex) {
+                log("Error reading custom preferences: " + ex.getMessage());
+            }
+        }
+
+        public void openAndReadXML(InputStream is) {
+            try {
                 DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
                 builderFactory.setValidating(false);
Index: trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 5200)
+++ trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 5201)
@@ -13,4 +13,5 @@
 import java.net.Authenticator;
 import java.net.ProxySelector;
+import java.net.URL;
 import java.security.AllPermission;
 import java.security.CodeSource;
@@ -31,4 +32,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.AutosaveTask;
+import org.openstreetmap.josm.data.CustomConfigurator;
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.Version;
@@ -103,4 +105,5 @@
                 "\t--[no-]maximize                           "+tr("Launch in maximized mode")+"\n"+
                 "\t--reset-preferences                       "+tr("Reset the preferences to default")+"\n\n"+
+                "\t--load-preferences=<url-to-xml>           "+tr("Changes preferences according to the XML file")+"\n\n"+
                 "\t--set=<key>=<value>                       "+tr("Set preference key to value")+"\n\n"+
                 "\t--language=<language>                     "+tr("Set the language")+"\n\n"+
@@ -202,4 +205,20 @@
         Main.pref.updateSystemProperties();
 
+        JFrame mainFrame = new JFrame(tr("Java OpenStreetMap Editor"));
+        Main.parent = mainFrame;
+
+        if (args.containsKey("load-preferences")) {
+            CustomConfigurator.XMLCommandProcessor config = new CustomConfigurator.XMLCommandProcessor(Main.pref);
+            for (String i : args.get("load-preferences")) {
+                System.out.println("Reading preferences from " + i);
+                try {
+                    URL url = new URL(i);
+                    config.openAndReadXML(url.openStream());
+                } catch (Exception ex) {
+                    throw new RuntimeException(ex);
+                }
+            }
+        }
+
         if (args.containsKey("set")) {
             for (String i : args.get("set")) {
@@ -248,6 +267,4 @@
 
         monitor.indeterminateSubTask(tr("Creating main GUI"));
-        JFrame mainFrame = new JFrame(tr("Java OpenStreetMap Editor"));
-        Main.parent = mainFrame;
         Main.addListener();
         final Main main = new MainApplication(mainFrame);
