Index: trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java	(revision 4634)
+++ trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java	(revision 4635)
@@ -8,7 +8,8 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
 
 import javax.swing.JScrollPane;
@@ -16,4 +17,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.Preferences.Setting;
 import org.openstreetmap.josm.data.Version;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -23,4 +25,5 @@
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
+
 
 /**
@@ -83,24 +86,17 @@
         text.append(getReportHeader());
         try {
-            BufferedReader input = new BufferedReader(new FileReader(Main.pref
-                    .getPreferencesDirFile()
-                    + File.separator + "preferences"));
-            try {
-                String line = null;
-
-                while ((line = input.readLine()) != null) {
-                    String toCheck = line.trim().toLowerCase();
-                    if (toCheck.startsWith("osm-server.username")
-                            || toCheck.startsWith("osm-server.password")
-                            || toCheck.startsWith("marker.show")
-                            || toCheck.startsWith("oauth.access-token.key")
-                            || toCheck.startsWith("oauth.access-token.secret")) {
-                        continue;
-                    }
-                    text.append(line);
-                    text.append("\n");
+            Map<String, Setting> settings = Main.pref.getAllSettings();
+            settings.remove("osm-server.username");
+            settings.remove("osm-server.password");
+            settings.remove("oauth.access-token.key");
+            settings.remove("oauth.access-token.secret");
+            Set<String> keys = new HashSet<String>(settings.keySet());
+            for (String key : keys) {
+                if (key.startsWith("marker.show")) {
+                    settings.remove(key);
                 }
-            } finally {
-                input.close();
+            }
+            for (Entry<String, Setting> entry : settings.entrySet()) {
+                text.append(entry.getKey()).append("=").append(entry.getValue().getValue().toString()).append("\n");
             }
         } catch (Exception x) {
Index: trunk/src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 4634)
+++ trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 4635)
@@ -61,5 +61,7 @@
  * saved upon set-access.
  *
- * Each property is a simple key=value pair of Strings.
+ * Each property is a key=setting pair, where key is a String and setting can be one of
+ * 4 types:
+ *     string, list, list of lists and list of maps.
  * In addition, each key has a unique default value that is set when the value is first
  * accessed using one of the get...() methods. You can use the same preference
@@ -69,6 +71,6 @@
  * off all possible settings.
  *
- * At the moment, there is no such thing as an empty value.
- * If you put "" or null as value, the property is removed.
+ * At the moment, you cannot put the empty string for string properties.
+ * put(key, "") means, the property is removed.
  *
  * @author imi
@@ -83,11 +85,14 @@
 
     /**
-     * Map the property name to the property object. Does not contain null or "" values.
+     * Map the property name to strings. Does not contain null or "" values.
      */
     protected final SortedMap<String, String> properties = new TreeMap<String, String>();
+    /** Map of defaults, can contain null values */
     protected final SortedMap<String, String> defaults = new TreeMap<String, String>();
     protected final SortedMap<String, String> colornames = new TreeMap<String, String>();
 
+    /** Mapping for list settings. Must not conatin null values */
     protected final SortedMap<String, List<String>> collectionProperties = new TreeMap<String, List<String>>();
+    /** Defaults, can contain null values */
     protected final SortedMap<String, List<String>> collectionDefaults = new TreeMap<String, List<String>>();
 
