Index: /trunk/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java	(revision 3871)
+++ /trunk/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java	(revision 3872)
@@ -14,4 +14,5 @@
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.projection.Projection;
+import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.data.projection.ProjectionInfo;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
@@ -51,5 +52,5 @@
         proj = ProjectionInfo.getProjectionByCode(projectionStr);
         if (proj == null) {
-            for (Projection proj : Projection.allProjections) {
+            for (Projection proj : Projections.getProjections()) {
                 if (proj.getCacheDirectoryName().equals(projectionStr)) {
                     this.proj = proj;
Index: /trunk/src/org/openstreetmap/josm/data/projection/Projection.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/projection/Projection.java	(revision 3871)
+++ /trunk/src/org/openstreetmap/josm/data/projection/Projection.java	(revision 3872)
@@ -13,23 +13,4 @@
  */
 public interface Projection {
-    /**
-     * List of all available projections.
-     */
-    public static Projection[] allProjections = new Projection[]{
-        // global projections
-        new Epsg4326(),
-        new Mercator(),
-        new UTM(),
-        // regional - alphabetical order by country name
-        new LambertEST(), // Still needs proper default zoom
-        new Lambert(),    // Still needs proper default zoom
-        new LambertCC9Zones(),    // Still needs proper default zoom
-        new UTM_France_DOM(),
-        new TransverseMercatorLV(),
-        new Puwg(),
-        new Epsg3008(), // SWEREF99 13 30
-        new SwissGrid(),
-    };
-
     /**
      * Returns the default zoom scale in pixel per degree ({@see #NavigatableComponent#scale}))
Index: /trunk/src/org/openstreetmap/josm/data/projection/ProjectionInfo.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/projection/ProjectionInfo.java	(revision 3871)
+++ /trunk/src/org/openstreetmap/josm/data/projection/ProjectionInfo.java	(revision 3872)
@@ -21,5 +21,5 @@
     static {
         allCodes = new HashMap<String, Projection>();
-        for (Projection proj : Projection.allProjections) {
+        for (Projection proj : Projections.getProjections()) {
             if (proj instanceof ProjectionSubPrefs) {
                 ProjectionSubPrefs projSub = recreateProj((ProjectionSubPrefs)proj);
Index: /trunk/src/org/openstreetmap/josm/data/projection/Projections.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/projection/Projections.java	(revision 3872)
+++ /trunk/src/org/openstreetmap/josm/data/projection/Projections.java	(revision 3872)
@@ -0,0 +1,39 @@
+// License: GPL. Copyright 2007 by Immanuel Scholz and others
+package org.openstreetmap.josm.data.projection;
+
+import java.util.Arrays;
+import java.util.ArrayList;
+
+/**
+ * Class to handle projections
+ *
+ */
+public class Projections {
+    /**
+     * List of all available projections.
+     */
+    private static ArrayList<Projection> allProjections =
+    new ArrayList<Projection>(Arrays.asList(new Projection[] {
+        // global projections
+        new Epsg4326(),
+        new Mercator(),
+        new UTM(),
+        // regional - alphabetical order by country name
+        new LambertEST(), // Still needs proper default zoom
+        new Lambert(),    // Still needs proper default zoom
+        new LambertCC9Zones(),    // Still needs proper default zoom
+        new UTM_France_DOM(),
+        new TransverseMercatorLV(),
+        new Puwg(),
+        new Epsg3008(), // SWEREF99 13 30
+        new SwissGrid(),
+    }));
+
+    public static ArrayList<Projection> getProjections() {
+        return allProjections;
+    }
+
+    public static void addProjection(Projection proj) {
+        allProjections.add(proj);
+    }
+}
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/AddWMSLayerPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/AddWMSLayerPanel.java	(revision 3871)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/AddWMSLayerPanel.java	(revision 3872)
@@ -47,4 +47,5 @@
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.projection.Projection;
+import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.data.projection.ProjectionSubPrefs;
 import org.openstreetmap.josm.gui.bbox.SlippyMapBBoxChooser;
@@ -400,5 +401,5 @@
 
     private boolean isProjSupported(String crs) {
-        for (Projection proj : Projection.allProjections) {
+        for (Projection proj : Projections.getProjections()) {
             if (proj instanceof ProjectionSubPrefs) {
                 if (((ProjectionSubPrefs) proj).getPreferencesFromCode(crs) == null) {
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/ProjectionPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/ProjectionPreference.java	(revision 3871)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/ProjectionPreference.java	(revision 3872)
@@ -27,4 +27,5 @@
 import org.openstreetmap.josm.data.projection.Mercator;
 import org.openstreetmap.josm.data.projection.Projection;
+import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.data.projection.ProjectionSubPrefs;
 import org.openstreetmap.josm.gui.NavigatableComponent;
@@ -84,5 +85,5 @@
      * Combobox with all projections available
      */
-    private JComboBox projectionCombo = new JComboBox(Projection.allProjections);
+    private JComboBox projectionCombo = new JComboBox(Projections.getProjections().toArray());
 
     /**
