Changeset 11905 in josm
- Timestamp:
- 2017-04-14T21:23:29+02:00 (7 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/AutosaveTask.java
r11746 r11905 133 133 134 134 new Timer(true).schedule(this, TimeUnit.SECONDS.toMillis(1), TimeUnit.SECONDS.toMillis(PROP_INTERVAL.get())); 135 Main.getLayerManager().add LayerChangeListener(this, true);135 Main.getLayerManager().addAndFireLayerChangeListener(this); 136 136 } 137 137 } -
trunk/src/org/openstreetmap/josm/gui/MainFrame.java
r11713 r11905 94 94 // This listener is never removed, since the main frame exists forever. 95 95 Main.getLayerManager().addActiveLayerChangeListener(e -> refreshTitle()); 96 Main.getLayerManager().add LayerChangeListener(new ManageLayerListeners(), true);96 Main.getLayerManager().addAndFireLayerChangeListener(new ManageLayerListeners()); 97 97 98 98 refreshTitle(); -
trunk/src/org/openstreetmap/josm/gui/MapView.java
r11807 r11905 255 255 this.layerManager = layerManager; 256 256 initialViewport = viewportData; 257 layerManager.add LayerChangeListener(this, true);257 layerManager.addAndFireLayerChangeListener(this); 258 258 layerManager.addActiveLayerChangeListener(this); 259 259 Main.pref.addPreferenceChangeListener(this); … … 746 746 */ 747 747 public void destroy() { 748 layerManager.remove LayerChangeListener(this, true);748 layerManager.removeAndFireLayerChangeListener(this); 749 749 layerManager.removeActiveLayerChangeListener(this); 750 750 Main.pref.removePreferenceChangeListener(this); -
trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
r11893 r11905 323 323 public void showNotify() { 324 324 layerManager.addActiveLayerChangeListener(activateLayerAction); 325 layerManager.add LayerChangeListener(model, true);325 layerManager.addAndFireLayerChangeListener(model); 326 326 layerManager.addAndFireActiveLayerChangeListener(model); 327 327 model.populate(); … … 330 330 @Override 331 331 public void hideNotify() { 332 layerManager.remove LayerChangeListener(model, true);332 layerManager.removeAndFireLayerChangeListener(model); 333 333 layerManager.removeActiveLayerChangeListener(model); 334 334 layerManager.removeActiveLayerChangeListener(activateLayerAction); -
trunk/src/org/openstreetmap/josm/gui/layer/LayerManager.java
r11774 r11905 64 64 } 65 65 66 /** 67 * Base class of layer manager events. 68 */ 66 69 protected static class LayerManagerEvent { 67 70 private final LayerManager source; … … 215 218 } 216 219 220 /** 221 * Add a layer (implementation). 222 * @param layer The layer to add 223 * @param initialZoom whether if the mapview must be zoomed at layer projection bounds 224 */ 217 225 protected synchronized void realAddLayer(Layer layer, boolean initialZoom) { 218 226 if (containsLayer(layer)) { … … 240 248 } 241 249 250 /** 251 * Remove the layer from the mapview (implementation). 252 * @param layer The layer to remove 253 */ 242 254 protected synchronized void realRemoveLayer(Layer layer) { 243 255 GuiHelper.assertCallFromEdt(); … … 256 268 } 257 269 270 /** 271 * Remove a single layer from the mapview (implementation). 272 * @param layerToRemove The layer to remove 273 * @return A list of layers that should be removed afterwards. 274 */ 258 275 protected Collection<Layer> realRemoveSingleLayer(Layer layerToRemove) { 259 276 updateLayers(mutableLayers -> mutableLayers.remove(layerToRemove)); … … 273 290 } 274 291 292 /** 293 * Move a layer to a new position (implementation). 294 * @param layer The layer to move. 295 * @param position The position. 296 * @throws IndexOutOfBoundsException if the position is out of bounds. 297 */ 275 298 protected synchronized void realMoveLayer(Layer layer, int position) { 276 299 checkContainsLayer(layer); … … 360 383 } 361 384 385 /** 386 * Checks if the specified layer is handled by this layer manager. 387 * @param layer layer to check 388 * @throws IllegalArgumentException if layer is not handled by this layer manager 389 */ 362 390 protected void checkContainsLayer(Layer layer) { 363 391 if (!containsLayer(layer)) { … … 371 399 * @param listener the listener. 372 400 * @throws IllegalArgumentException If the listener was added twice. 401 * @see #addAndFireLayerChangeListener 373 402 */ 374 403 public synchronized void addLayerChangeListener(LayerChangeListener listener) { 375 addLayerChangeListener(listener, false);376 }377 378 /**379 * Adds a layer change listener380 *381 * @param listener the listener.382 * @param fireAdd if we should fire an add event for every layer in this manager.383 * @throws IllegalArgumentException If the listener was added twice.384 */385 public synchronized void addLayerChangeListener(LayerChangeListener listener, boolean fireAdd) {386 404 if (layerChangeListeners.contains(listener)) { 387 405 throw new IllegalArgumentException("Listener already registered."); 388 406 } 389 407 layerChangeListeners.add(listener); 390 if (fireAdd) { 391 for (Layer l : getLayers()) { 392 listener.layerAdded(new LayerAddEvent(this, l, true)); 393 } 408 } 409 410 /** 411 * Adds a layer change listener and fire an add event for every layer in this manager. 412 * 413 * @param listener the listener. 414 * @throws IllegalArgumentException If the listener was added twice. 415 * @see #addLayerChangeListener 416 * @since 11905 417 */ 418 public synchronized void addAndFireLayerChangeListener(LayerChangeListener listener) { 419 addLayerChangeListener(listener); 420 for (Layer l : getLayers()) { 421 listener.layerAdded(new LayerAddEvent(this, l, true)); 394 422 } 395 423 } … … 399 427 * 400 428 * @param listener the listener. Ignored if null or already registered. 429 * @see #removeAndFireLayerChangeListener 401 430 */ 402 431 public synchronized void removeLayerChangeListener(LayerChangeListener listener) { 403 removeLayerChangeListener(listener, false);404 }405 406 /**407 * Removes a layer change listener408 *409 * @param listener the listener.410 * @param fireRemove if we should fire a remove event for every layer in this manager. The event is fired as if the layer was deleted but411 * {@link LayerRemoveEvent#scheduleRemoval(Collection)} is ignored.412 */413 public synchronized void removeLayerChangeListener(LayerChangeListener listener, boolean fireRemove) {414 432 if (!layerChangeListeners.remove(listener)) { 415 433 throw new IllegalArgumentException("Listener was not registered before: " + listener); 416 } else { 417 if (fireRemove) { 418 for (Layer l : getLayers()) { 419 listener.layerRemoving(new LayerRemoveEvent(this, l)); 420 } 421 } 434 } 435 } 436 437 /** 438 * Removes a layer change listener and fire a remove event for every layer in this manager. 439 * The event is fired as if the layer was deleted but 440 * {@link LayerRemoveEvent#scheduleRemoval(Collection)} is ignored. 441 * 442 * @param listener the listener. 443 * @see #removeLayerChangeListener 444 * @since 11905 445 */ 446 public synchronized void removeAndFireLayerChangeListener(LayerChangeListener listener) { 447 removeLayerChangeListener(listener); 448 for (Layer l : getLayers()) { 449 listener.layerRemoving(new LayerRemoveEvent(this, l)); 422 450 } 423 451 } … … 475 503 } 476 504 505 /** 506 * Reset all layer manager state (implementation). 507 */ 477 508 protected synchronized void realResetState() { 478 509 // The listeners trigger the removal of other layers -
trunk/test/unit/org/openstreetmap/josm/gui/layer/LayerManagerTest.java
r11000 r11905 159 159 } 160 160 161 /** the tested layer manager */ 161 162 protected LayerManager layerManager; 162 163 … … 397 398 398 399 /** 399 * {@link LayerManager#add LayerChangeListener(LayerChangeListener, boolean)} fires fake add events400 * {@link LayerManager#addAndFireLayerChangeListener(LayerChangeListener)} fires fake add events 400 401 */ 401 402 @Test … … 406 407 layerManager.addLayer(layer1); 407 408 layerManager.addLayer(layer2); 408 layerManager.add LayerChangeListener(new LayerChangeListener() {409 layerManager.addAndFireLayerChangeListener(new LayerChangeListener() { 409 410 @Override 410 411 public void layerRemoving(LayerRemoveEvent e) { … … 421 422 fired.add(e.getAddedLayer()); 422 423 } 423 } , true);424 }); 424 425 425 426 assertEquals(Arrays.asList(layer1, layer2), fired); … … 452 453 453 454 /** 454 * {@link LayerManager#remove LayerChangeListener(LayerChangeListener, boolean)} fires fake remove events455 * {@link LayerManager#removeAndFireLayerChangeListener(LayerChangeListener)} fires fake remove events 455 456 */ 456 457 @Test … … 477 478 } 478 479 }; 479 layerManager.addLayerChangeListener(listener , false);480 layerManager.remove LayerChangeListener(listener, true);480 layerManager.addLayerChangeListener(listener); 481 layerManager.removeAndFireLayerChangeListener(listener); 481 482 482 483 assertEquals(Arrays.asList(layer1, layer2), fired);
Note:
See TracChangeset
for help on using the changeset viewer.