Index: trunk/src/org/openstreetmap/josm/data/projection/Projections.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/Projections.java	(revision 9369)
+++ trunk/src/org/openstreetmap/josm/data/projection/Projections.java	(revision 9370)
@@ -44,6 +44,8 @@
 
 /**
- * Class to handle projections
+ * Class to manage projections.
  *
+ * Use this class to query available projection or register new projections
+ * from a plugin.
  */
 public final class Projections {
@@ -157,4 +159,10 @@
     }
 
+    /**
+     * Convert from lat/lon to easting/northing using the current projection.
+     *
+     * @param ll the geographical point to convert (in WGS84 lat/lon)
+     * @return the corresponding east/north coordinates
+     */
     public static EastNorth project(LatLon ll) {
         if (ll == null) return null;
@@ -162,4 +170,10 @@
     }
 
+    /**
+     * Convert from easting/norting to lat/lon using the current projection.
+     *
+     * @param en the geographical point to convert (in projected coordinates)
+     * @return the corresponding lat/lon (WGS84)
+     */
     public static LatLon inverseProject(EastNorth en) {
         if (en == null) return null;
@@ -184,4 +198,10 @@
     }
 
+    /**
+     * Get a base projection by id.
+     *
+     * @param id the id, for example "lonlat" or "tmerc"
+     * @return the corresponding base projection if the id is known, null otherwise
+     */
     public static Proj getBaseProjection(String id) {
         ProjFactory fac = projs.get(id);
@@ -190,12 +210,29 @@
     }
 
+    /**
+     * Get an ellipsoid by id.
+     *
+     * @param id the id, for example "bessel" or "WGS84"
+     * @return the corresponding ellipsoid if the id is known, null otherwise
+     */
     public static Ellipsoid getEllipsoid(String id) {
         return ellipsoids.get(id);
     }
 
+    /**
+     * Get a geodetic datum by id.
+     *
+     * @param id the id, for example "potsdam" or "WGS84"
+     * @return the corresponding datum if the id is known, null otherwise
+     */
     public static Datum getDatum(String id) {
         return datums.get(id);
     }
 
+    /**
+     * Get a NTV2 grid database by id.
+     * @param id the id
+     * @return the corresponding NTV2 grid if the id is known, null otherwise
+     */
     public static NTV2GridShiftFileWrapper getNTV2Grid(String id) {
         return nadgrids.get(id);
@@ -203,11 +240,11 @@
 
     /**
-     * Get the projection definition string for the given id.
-     * @param id the id
+     * Get the projection definition string for the given code.
+     * @param code the code
      * @return the string that can be processed by #{link CustomProjection}.
-     * Null, if the id isn't supported.
-     */
-    public static String getInit(String id) {
-        ProjectionDefinition pd = inits.get(id.toUpperCase(Locale.ENGLISH));
+     * Null, if the code isn't supported.
+     */
+    public static String getInit(String code) {
+        ProjectionDefinition pd = inits.get(code.toUpperCase(Locale.ENGLISH));
         if (pd == null) return null;
         return pd.definition;
@@ -260,4 +297,9 @@
     }
 
+    /**
+     * Get a projection by code.
+     * @param code the code, e.g. "EPSG:2026"
+     * @return the corresponding projection, if the code is known, null otherwise
+     */
     public static Projection getProjectionByCode(String code) {
         Projection proj = projectionsByCode_cache.get(code);
@@ -293,4 +335,14 @@
     }
 
+    /**
+     * Get a list of ids of all registered base projections.
+     *
+     * @return all registered base projection ids
+     * @see #getBaseProjection(java.lang.String)
+     */
+    public static Collection<String> getAllBaseProjectionIds() {
+        return projs.keySet();
+    }
+
     private static String listKeys(Map<String, ?> map) {
         List<String> keys = new ArrayList<>(map.keySet());
