Changeset 11774 in josm for trunk/src/org/openstreetmap/josm/gui/layer/LayerManager.java
- Timestamp:
- 2017-03-25T17:33:06+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/layer/LayerManager.java
r11746 r11774 71 71 } 72 72 73 /** 74 * Returns the {@code LayerManager} at the origin of this event. 75 * @return the {@code LayerManager} at the origin of this event 76 */ 73 77 public LayerManager getSource() { 74 78 return source; … … 82 86 public static class LayerAddEvent extends LayerManagerEvent { 83 87 private final Layer addedLayer; 84 85 LayerAddEvent(LayerManager source, Layer addedLayer) { 88 private final boolean requiresZoom; 89 90 LayerAddEvent(LayerManager source, Layer addedLayer, boolean requiresZoom) { 86 91 super(source); 87 92 this.addedLayer = addedLayer; 93 this.requiresZoom = requiresZoom; 88 94 } 89 95 … … 94 100 public Layer getAddedLayer() { 95 101 return addedLayer; 102 } 103 104 /** 105 * Determines if an initial zoom is required. 106 * @return {@code true} if a zoom is required when this layer is added 107 * @since 11774 108 */ 109 public final boolean isZoomRequired() { 110 return requiresZoom; 96 111 } 97 112 … … 182 197 183 198 /** 199 * Add a layer. The layer will be added at a given position and the mapview zoomed at its projection bounds. 200 * @param layer The layer to add 201 */ 202 public void addLayer(final Layer layer) { 203 addLayer(layer, true); 204 } 205 206 /** 184 207 * Add a layer. The layer will be added at a given position. 185 208 * @param layer The layer to add 186 */ 187 public void addLayer(final Layer layer) { 209 * @param initialZoom whether if the mapview must be zoomed at layer projection bounds 210 */ 211 public void addLayer(final Layer layer, final boolean initialZoom) { 188 212 // we force this on to the EDT Thread to make events fire from there. 189 213 // The synchronization lock needs to be held by the EDT. 190 GuiHelper.runInEDTAndWaitWithException(() -> realAddLayer(layer ));191 } 192 193 protected synchronized void realAddLayer(Layer layer ) {214 GuiHelper.runInEDTAndWaitWithException(() -> realAddLayer(layer, initialZoom)); 215 } 216 217 protected synchronized void realAddLayer(Layer layer, boolean initialZoom) { 194 218 if (containsLayer(layer)) { 195 219 throw new IllegalArgumentException("Cannot add a layer twice: " + layer); … … 199 223 checkPosition(position); 200 224 insertLayerAt(layer, position); 201 fireLayerAdded(layer );225 fireLayerAdded(layer, initialZoom); 202 226 if (Main.map != null) { 203 227 layer.hookUpMapView(); // needs to be after fireLayerAdded … … 366 390 if (fireAdd) { 367 391 for (Layer l : getLayers()) { 368 listener.layerAdded(new LayerAddEvent(this, l ));392 listener.layerAdded(new LayerAddEvent(this, l, true)); 369 393 } 370 394 } … … 399 423 } 400 424 401 private void fireLayerAdded(Layer layer ) {425 private void fireLayerAdded(Layer layer, boolean initialZoom) { 402 426 GuiHelper.assertCallFromEdt(); 403 LayerAddEvent e = new LayerAddEvent(this, layer );427 LayerAddEvent e = new LayerAddEvent(this, layer, initialZoom); 404 428 for (LayerChangeListener l : layerChangeListeners) { 405 429 try {
Note:
See TracChangeset
for help on using the changeset viewer.