Index: trunk/src/org/openstreetmap/josm/data/Bounds.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Bounds.java	(revision 2455)
+++ trunk/src/org/openstreetmap/josm/data/Bounds.java	(revision 2456)
@@ -2,9 +2,9 @@
 package org.openstreetmap.josm.data;
 
+import static org.openstreetmap.josm.tools.I18n.tr;
+
 import java.awt.geom.Rectangle2D;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
-import static org.openstreetmap.josm.tools.I18n.tr;
 
 /**
@@ -19,5 +19,5 @@
      */
     private LatLon min, max;
-    
+
     public LatLon getMin() {
         return min;
@@ -40,10 +40,10 @@
         this.max = b;
     }
-    
+
     public Bounds(double minlat, double minlon, double maxlat, double maxlon) {
         this.min = new LatLon(minlat, minlon);
         this.max = new LatLon(maxlat, maxlon);
     }
-    
+
     public Bounds(double [] coords) {
         if (coords == null)
@@ -54,12 +54,11 @@
         this.max = new LatLon(coords[2], coords[3]);
     }
-    
+
     public Bounds(String asString, String separator) throws IllegalArgumentException {
         if (asString == null)
             throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null", "asString"));
         String[] components = asString.split(separator);
-        if (components.length != 4) {
+        if (components.length != 4)
             throw new IllegalArgumentException(tr("Exactly four doubles excpected in string, got {0}", components.length));
-        }
         double[] values = new double[4];
         for (int i=0; i<4; i++) {
@@ -73,5 +72,5 @@
         this.max = new LatLon(values[2], values[3]);
     }
-    
+
     public Bounds(Bounds other) {
         this.min = new LatLon(other.min);
@@ -83,5 +82,35 @@
         this.max = new LatLon(rect.getMaxY(), rect.getMaxX());
     }
-    
+
+    /**
+     * Creates new bounds around a coordinate pair <code>center</code>. The
+     * new bounds shall have an extension in latitude direction of <code>latExtent</code>,
+     * and in longitude direction of <code>lonExtent</code>.
+     * 
+     * @param center  the center coordinate pair. Must not be null.
+     * @param latExtent the latitude extent. > 0 required.
+     * @param lonExtent the longitude extent. > 0 required.
+     * @throws IllegalArgumentException thrown if center is null
+     * @throws IllegalArgumentException thrown if latExtent <= 0
+     * @throws IllegalArgumentException thrown if lonExtent <= 0
+     */
+    public Bounds(LatLon center, double latExtent, double lonExtent) {
+        if (center == null)
+            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null", "center"));
+        if (latExtent <= 0.0)
+            throw new IllegalArgumentException(tr("Parameter ''{0}'' > 0.0 exptected, got {1}", "latExtent", latExtent));
+        if (lonExtent <= 0.0)
+            throw new IllegalArgumentException(tr("Parameter ''{0}'' > 0.0 exptected, got {1}", "lonExtent", lonExtent));
+
+        this.min = new LatLon(
+                center.lat() - latExtent / 2,
+                center.lon() - lonExtent / 2
+        );
+        this.max = new LatLon(
+                center.lat() + latExtent / 2,
+                center.lon() + lonExtent / 2
+        );
+    }
+
     @Override public String toString() {
         return "Bounds["+min.lat()+","+min.lon()+","+max.lat()+","+max.lon()+"]";
@@ -100,8 +129,10 @@
      */
     public void extend(LatLon ll) {
-        if (ll.lat() < min.lat() || ll.lon() < min.lon())
+        if (ll.lat() < min.lat() || ll.lon() < min.lon()) {
             min = new LatLon(Math.min(ll.lat(), min.lat()), Math.min(ll.lon(), min.lon()));
-        if (ll.lat() > max.lat() || ll.lon() > max.lon())
+        }
+        if (ll.lat() > max.lat() || ll.lon() > max.lon()) {
             max = new LatLon(Math.max(ll.lat(), max.lat()), Math.max(ll.lon(), max.lon()));
+        }
     }
     /**
@@ -123,5 +154,5 @@
         return new Rectangle2D.Double(min.lon(), min.lat(), max.lon()-min.lon(), max.lat()-min.lat());
     }
-    
+
     public double getArea() {
         return (max.lon() - min.lon()) * (max.lat() - min.lat());
@@ -135,5 +166,5 @@
         return sb.toString();
     }
-    
+
     @Override
     public int hashCode() {
