Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java (revision 3009)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java (revision 3010)
@@ -155,4 +155,7 @@
OsmDataLayer layer = new OsmDataLayer(dataSet, OsmDataLayer.createNewName(), null);
Main.main.addLayer(layer);
+ BoundingXYVisitor v = new BoundingXYVisitor();
+ v.visit(currentBounds);
+ Main.map.mapView.recalculateCenterScale(v);
} else {
OsmDataLayer target;
Index: trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapView.java (revision 3009)
+++ trunk/src/org/openstreetmap/josm/gui/MapView.java (revision 3010)
@@ -179,6 +179,12 @@
scaler.setLocation(10,30);
- if (!zoomToEditLayerBoundingBox()) {
- new AutoScaleAction("data").actionPerformed(null);
+ OsmDataLayer layer = getEditLayer();
+ if (layer != null) {
+ if (!zoomToDataSetBoundingBox(layer.data)) {
+ // no bounding box defined
+ new AutoScaleAction("data").actionPerformed(null);
+ }
+ } else {
+ new AutoScaleAction("layer").actionPerformed(null);
}
@@ -682,24 +688,22 @@
* (aka {@link OsmDataLayer}). If the edit layer has multiple download bounding
* boxes it zooms to a large virtual bounding box containing all smaller ones.
- * This implementation can be used for resolving ticket #1461.
*
* @return true
if a zoom operation has been performed
*/
- public boolean zoomToEditLayerBoundingBox() {
- // workaround for #1461 (zoom to download bounding box instead of all data)
+ public boolean zoomToDataSetBoundingBox(DataSet ds) {
// In case we already have an existing data layer ...
OsmDataLayer layer= getEditLayer();
if (layer == null)
return false;
- Collection dataSources = layer.data.dataSources;
+ Collection dataSources = ds.dataSources;
// ... with bounding box[es] of data loaded from OSM or a file...
BoundingXYVisitor bbox = new BoundingXYVisitor();
- for (DataSource ds : dataSources) {
- bbox.visit(ds.bounds);
- if (bbox.hasExtend()) {
- // ... we zoom to it's bounding box
- recalculateCenterScale(bbox);
- return true;
- }
+ for (DataSource source : dataSources) {
+ bbox.visit(source.bounds);
+ }
+ if (bbox.hasExtend()) {
+ // ... we zoom to it's bounding box
+ recalculateCenterScale(bbox);
+ return true;
}
return false;