public class LayerManager extends java.lang.Object
This manager handles a list of layers with the first layer being the front layer.
Modifier and Type | Class and Description |
---|---|
static class |
LayerManager.LayerAddEvent
The event that is fired whenever a layer was added.
|
static interface |
LayerManager.LayerChangeListener
Interface to notify listeners of a layer change.
|
protected static class |
LayerManager.LayerManagerEvent
Base class of layer manager events.
|
static class |
LayerManager.LayerOrderChangeEvent
An event that is fired whenever the order of layers changed.
|
static class |
LayerManager.LayerRemoveEvent
The event that is fired before removing a layer.
|
Modifier and Type | Field and Description |
---|---|
private java.util.List<LayerManager.LayerChangeListener> |
layerChangeListeners |
private java.util.List<Layer> |
layers
This is the list of layers we manage.
|
Constructor and Description |
---|
LayerManager() |
Modifier and Type | Method and Description |
---|---|
void |
addAndFireLayerChangeListener(LayerManager.LayerChangeListener listener)
Adds a layer change listener and fire an add event for every layer in this manager.
|
void |
addLayer(Layer layer)
Add a layer.
|
void |
addLayer(Layer layer,
boolean initialZoom)
Add a layer.
|
void |
addLayerChangeListener(LayerManager.LayerChangeListener listener)
Adds a layer change listener
|
protected void |
checkContainsLayer(Layer layer)
Checks if the specified layer is handled by this layer manager.
|
private void |
checkPosition(int position)
Check if the (new) position is valid
|
boolean |
containsLayer(Layer layer)
replies true if the list of layers managed by this map view contain layer
|
private void |
fireLayerAdded(Layer layer,
boolean initialZoom) |
private void |
fireLayerOrderChanged() |
private java.util.Collection<Layer> |
fireLayerRemoving(Layer layer)
Fire the layer remove event
|
java.util.List<Layer> |
getLayers()
Gets an unmodifiable list of all layers that are currently in this manager.
|
<T extends Layer> |
getLayersOfType(java.lang.Class<T> ofType)
Replies an unmodifiable list of layers of a certain type.
|
private void |
insertLayerAt(Layer layer,
int position)
Insert a layer at a given position.
|
private static void |
insertLayerAt(java.util.List<Layer> layers,
Layer layer,
int position) |
void |
moveLayer(Layer layer,
int position)
Move a layer to a new position.
|
protected void |
realAddLayer(Layer layer,
boolean initialZoom)
Add a layer (implementation).
|
protected void |
realMoveLayer(Layer layer,
int position)
Move a layer to a new position (implementation).
|
protected void |
realRemoveLayer(Layer layer)
Remove the layer from the mapview (implementation).
|
protected java.util.Collection<Layer> |
realRemoveSingleLayer(Layer layerToRemove)
Remove a single layer from the mapview (implementation).
|
protected void |
realResetState()
Reset all layer manager state (implementation).
|
void |
removeAndFireLayerChangeListener(LayerManager.LayerChangeListener listener)
Removes a layer change listener and fire a remove event for every layer in this manager.
|
void |
removeLayer(Layer layer)
Remove the layer from the mapview.
|
void |
removeLayerChangeListener(LayerManager.LayerChangeListener listener)
Removes a layer change listener
|
void |
resetState()
Reset all layer manager state.
|
private void |
updateLayers(java.util.function.Consumer<java.util.List<Layer>> mutator)
Update the
layers field. |
private volatile java.util.List<Layer> layers
updateLayers(Consumer)
private final java.util.List<LayerManager.LayerChangeListener> layerChangeListeners
public LayerManager()
public void addLayer(Layer layer)
layer
- The layer to addpublic void addLayer(Layer layer, boolean initialZoom)
layer
- The layer to addinitialZoom
- whether if the mapview must be zoomed at layer projection boundsprotected void realAddLayer(Layer layer, boolean initialZoom)
layer
- The layer to addinitialZoom
- whether if the mapview must be zoomed at layer projection boundspublic void removeLayer(Layer layer)
layer
- The layer to removeprotected void realRemoveLayer(Layer layer)
layer
- The layer to removeprotected java.util.Collection<Layer> realRemoveSingleLayer(Layer layerToRemove)
layerToRemove
- The layer to removepublic void moveLayer(Layer layer, int position)
layer
- The layer to move.position
- The position.java.lang.IndexOutOfBoundsException
- if the position is out of bounds.protected void realMoveLayer(Layer layer, int position)
layer
- The layer to move.position
- The position.java.lang.IndexOutOfBoundsException
- if the position is out of bounds.private void insertLayerAt(Layer layer, int position)
layer
- The layer to add.position
- The position on which we should add it.private static void insertLayerAt(java.util.List<Layer> layers, Layer layer, int position)
private void checkPosition(int position)
position
- The position indexjava.lang.IndexOutOfBoundsException
- if it is not.private void updateLayers(java.util.function.Consumer<java.util.List<Layer>> mutator)
layers
field. This method should be used instead of a direct field access.mutator
- A method that gets the writable list of layers and should modify it.public java.util.List<Layer> getLayers()
public <T extends Layer> java.util.List<T> getLayersOfType(java.lang.Class<T> ofType)
List<WMSLayer> wmsLayers = getLayersOfType(WMSLayer.class);
T
- The layer typeofType
- The layer type.public boolean containsLayer(Layer layer)
layer
- the layerprotected void checkContainsLayer(Layer layer)
layer
- layer to checkjava.lang.IllegalArgumentException
- if layer is not handled by this layer managerpublic void addLayerChangeListener(LayerManager.LayerChangeListener listener)
listener
- the listener.java.lang.IllegalArgumentException
- If the listener was added twice.addAndFireLayerChangeListener(org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener)
public void addAndFireLayerChangeListener(LayerManager.LayerChangeListener listener)
listener
- the listener.java.lang.IllegalArgumentException
- If the listener was added twice.addLayerChangeListener(org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener)
public void removeLayerChangeListener(LayerManager.LayerChangeListener listener)
listener
- the listener. Ignored if null or already registered.removeAndFireLayerChangeListener(org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener)
public void removeAndFireLayerChangeListener(LayerManager.LayerChangeListener listener)
LayerManager.LayerRemoveEvent.scheduleRemoval(Collection)
is ignored.listener
- the listener.removeLayerChangeListener(org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener)
private void fireLayerAdded(Layer layer, boolean initialZoom)
private java.util.Collection<Layer> fireLayerRemoving(Layer layer)
layer
- The layer that was removedprivate void fireLayerOrderChanged()
public void resetState()
protected void realResetState()