Ticket #12944: patch-layer-manager-no-bounds.patch

File patch-layer-manager-no-bounds.patch, 5.8 KB (added by michael2402, 9 years ago)
  • src/org/openstreetmap/josm/Main.java

    diff --git a/src/org/openstreetmap/josm/Main.java b/src/org/openstreetmap/josm/Main.java
    index b57ec52..22c867e 100644
    a b import org.openstreetmap.josm.data.coor.LatLon;  
    7474import org.openstreetmap.josm.data.osm.DataSet;
    7575import org.openstreetmap.josm.data.osm.OsmPrimitive;
    7676import org.openstreetmap.josm.data.osm.PrimitiveDeepCopy;
    77 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
    7877import org.openstreetmap.josm.data.projection.Projection;
    7978import org.openstreetmap.josm.data.projection.ProjectionChangeListener;
    8079import org.openstreetmap.josm.data.validation.OsmValidator;
    public abstract class Main {  
    768767     * @see #addLayer(Layer, ViewportData)
    769768     */
    770769    public final void addLayer(final Layer layer) {
    771         BoundingXYVisitor v = new BoundingXYVisitor();
    772         layer.visitBoundingBox(v);
    773         addLayer(layer, v.getBounds());
     770        addLayer(layer, layer.getViewProjectionBounds());
    774771    }
    775772
    776773    /**
  • src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java

    diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
    index 2fbbd13..324ca12 100644
    a b public class DownloadOsmTask extends AbstractDownloadTask<DataSet> {  
    258258                //
    259259                final OsmDataLayer layer = createNewLayer(newLayerName);
    260260                if (Main.main != null)
    261                     Main.main.addLayer(layer, computeBbox(bounds));
     261                    Main.main.addLayer(layer);
    262262                return layer;
    263263            }
    264264            return null;
  • src/org/openstreetmap/josm/gui/layer/Layer.java

    diff --git a/src/org/openstreetmap/josm/gui/layer/Layer.java b/src/org/openstreetmap/josm/gui/layer/Layer.java
    index 45f505c..4f4253f 100644
    a b import org.openstreetmap.josm.actions.GpxExportAction;  
    2222import org.openstreetmap.josm.actions.SaveAction;
    2323import org.openstreetmap.josm.actions.SaveActionBase;
    2424import org.openstreetmap.josm.actions.SaveAsAction;
     25import org.openstreetmap.josm.data.ProjectionBounds;
    2526import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
    2627import org.openstreetmap.josm.data.projection.Projection;
    2728import org.openstreetmap.josm.data.projection.ProjectionChangeListener;
    public abstract class Layer extends AbstractMapViewPaintable implements Destroya  
    592593            return LayerPositionStrategy.AFTER_LAST_VALIDATION_LAYER;
    593594        }
    594595    }
     596
     597    /**
     598     * Gets the {@link ProjectionBounds} for this layer to be visible to the user. This can be the exact bounds, the UI handles padding. Return
     599     * <code>null</code> if you cannot provide this information. The default implementation uses the bounds from
     600     * {@link #visitBoundingBox(BoundingXYVisitor)}.
     601     * @return  The bounds for this layer.
     602     * @since xxx
     603     */
     604    public ProjectionBounds getViewProjectionBounds() {
     605        BoundingXYVisitor v = new BoundingXYVisitor();
     606        visitBoundingBox(v);
     607        return v.getBounds();
     608    }
    595609}
  • src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java

    diff --git a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
    index 0f60228..142e410 100644
    a b import org.openstreetmap.josm.actions.ToggleUploadDiscouragedLayerAction;  
    4848import org.openstreetmap.josm.data.APIDataSet;
    4949import org.openstreetmap.josm.data.Bounds;
    5050import org.openstreetmap.josm.data.DataSource;
     51import org.openstreetmap.josm.data.ProjectionBounds;
    5152import org.openstreetmap.josm.data.SelectionChangedListener;
    5253import org.openstreetmap.josm.data.conflict.Conflict;
    5354import org.openstreetmap.josm.data.conflict.ConflictCollection;
    public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S  
    10781079        dialog.setUploadedPrimitives(new APIDataSet(data));
    10791080        return dialog;
    10801081    }
     1082
     1083    @Override
     1084    public ProjectionBounds getViewProjectionBounds() {
     1085        BoundingXYVisitor v = new BoundingXYVisitor();
     1086        v.visit(data.getDataSourceBoundingBox());
     1087        if (!v.hasExtend()) {
     1088            v.computeBoundingBox(data.getNodes());
     1089        }
     1090        return v.getBounds();
     1091    }
    10811092}
  • src/org/openstreetmap/josm/io/OsmImporter.java

    diff --git a/src/org/openstreetmap/josm/io/OsmImporter.java b/src/org/openstreetmap/josm/io/OsmImporter.java
    index 92857ba..68c9e8b 100644
    a b import javax.swing.JOptionPane;  
    1414import org.openstreetmap.josm.Main;
    1515import org.openstreetmap.josm.actions.ExtensionFileFilter;
    1616import org.openstreetmap.josm.data.osm.DataSet;
    17 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
    1817import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    1918import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    2019import org.openstreetmap.josm.gui.util.GuiHelper;
    public class OsmImporter extends FileImporter {  
    9695            @Override
    9796            public void run() {
    9897                OsmDataLayer layer = data.getLayer();
    99                 BoundingXYVisitor v = new BoundingXYVisitor();
    100                 v.visit(layer.data.getDataSourceBoundingBox());
    101                 if (!v.hasExtend()) {
    102                     v.computeBoundingBox(layer.data.getNodes());
    103                 }
    104                 Main.main.addLayer(layer, v.getBounds());
     98                Main.main.addLayer(layer);
    10599                data.getPostLayerTask().run();
    106100                data.getLayer().onPostLoadFromFile();
    107101            }