Package org.openstreetmap.josm.gui.layer
Class MainLayerManager
- java.lang.Object
-
- org.openstreetmap.josm.gui.layer.LayerManager
-
- org.openstreetmap.josm.gui.layer.MainLayerManager
-
public class MainLayerManager extends LayerManager
This class extends the layer manager by adding an active and an edit layer.The active layer is the layer the user is currently working on.
The edit layer is a data layer that we currently work with.
- Since:
- 10279
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classMainLayerManager.ActiveLayerChangeEventThis event is fired whenever the active or the data layer changes.static interfaceMainLayerManager.ActiveLayerChangeListenerThis listener listens to changes of the active or the edit layer.static classMainLayerManager.LayerAvailabilityEventThis event is fired forMainLayerManager.LayerAvailabilityListenerstatic interfaceMainLayerManager.LayerAvailabilityListenerA listener that gets informed before any layer is displayed and after all layers are removed.-
Nested classes/interfaces inherited from class org.openstreetmap.josm.gui.layer.LayerManager
LayerManager.LayerAddEvent, LayerManager.LayerChangeListener, LayerManager.LayerManagerEvent, LayerManager.LayerOrderChangeEvent, LayerManager.LayerRemoveEvent
-
-
Field Summary
Fields Modifier and Type Field Description private LayeractiveLayerThe layer from the layers list that is currently active.private java.util.List<MainLayerManager.ActiveLayerChangeListener>activeLayerChangeListenersprivate AbstractOsmDataLayerdataLayerThe current active data layer.private java.util.List<MainLayerManager.LayerAvailabilityListener>layerAvailabilityListenersprivate OsmDataLayerosmDataLayerThe current active OSM data layer.
-
Constructor Summary
Constructors Constructor Description MainLayerManager()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddActiveLayerChangeListener(MainLayerManager.ActiveLayerChangeListener listener)Adds an active/edit layer change listenerbooleanaddActiveLayerChangeListeners(java.util.Collection<? extends MainLayerManager.ActiveLayerChangeListener> listeners)Adds multiple active/edit layer change listeners.voidaddAndFireActiveLayerChangeListener(MainLayerManager.ActiveLayerChangeListener listener)Adds an active/edit layer change listener.voidaddLayerAvailabilityListener(MainLayerManager.LayerAvailabilityListener listener)Add a newMainLayerManager.LayerAvailabilityListener.private voidfireActiveLayerChange(MainLayerManager.ActiveLayerChangeEvent event)OsmData<?,?,?,?>getActiveData()Gets the data set of the active data layer.OsmDataLayergetActiveDataLayer()Replies the active data layer.DataSetgetActiveDataSet()Gets the data set of the activeOsmDataLayer.LayergetActiveLayer()Replies the currently active layerjava.util.List<GpxData>getAllGpxData()Returns allGpxDatawe can get from current layers.DataSetgetEditDataSet()Gets the data set of the active edit layer, if not readOnly.OsmDataLayergetEditLayer()Replies the current edit layer, if present and not readOnlyNoteLayergetNoteLayer()Returns the unique note layer, if present.java.util.List<Layer>getVisibleLayersInZOrder()Creates a list of the visible layers in Z-Order, the layer with the lowest Z-Order first, layer with the highest Z-Order last.voidinvalidateEditLayer()Invalidates current edit layer, if any.voidprepareLayerForUpload(OsmDataLayer layer)Prepares an OsmDataLayer for upload.voidprocessLayerAfterUpload(OsmDataLayer layer)Post upload processing of the OsmDataLayer.protected voidrealAddLayer(Layer layer, boolean initialZoom)Add a layer (implementation).protected java.util.Collection<Layer>realRemoveSingleLayer(Layer layer)Remove a single layer from the mapview (implementation).protected voidrealResetState()Reset all layer manager state (implementation).protected voidrealSetActiveLayer(Layer layer)voidremoveActiveLayerChangeListener(MainLayerManager.ActiveLayerChangeListener listener)Removes an active/edit layer change listener.voidremoveLayerAvailabilityListener(MainLayerManager.LayerAvailabilityListener listener)Remove anMainLayerManager.LayerAvailabilityListener.voidsetActiveLayer(Layer layer)Set the active layer, unless the layer is being uploaded.private voidsetActiveLayer(Layer layer, boolean forceEditLayerUpdate)private static voidshowStackTrace(java.lang.StackTraceElement[] stackTrace)private LayersuggestNextActiveLayer(Layer except)Determines the next active data layer.-
Methods inherited from class org.openstreetmap.josm.gui.layer.LayerManager
addAndFireLayerChangeListener, addLayer, addLayer, addLayerChangeListener, checkContainsLayer, containsLayer, getLayers, getLayersOfType, moveLayer, realMoveLayer, realRemoveLayer, removeAndFireLayerChangeListener, removeLayer, removeLayerChangeListener, resetState
-
-
-
-
Field Detail
-
activeLayer
private Layer activeLayer
The layer from the layers list that is currently active.
-
dataLayer
private AbstractOsmDataLayer dataLayer
The current active data layer. It might be editable or not, based on its read-only status.
-
osmDataLayer
private OsmDataLayer osmDataLayer
The current active OSM data layer. It might be editable or not, based on its read-only status.
-
activeLayerChangeListeners
private final java.util.List<MainLayerManager.ActiveLayerChangeListener> activeLayerChangeListeners
-
layerAvailabilityListeners
private final java.util.List<MainLayerManager.LayerAvailabilityListener> layerAvailabilityListeners
-
-
Constructor Detail
-
MainLayerManager
public MainLayerManager()
-
-
Method Detail
-
addActiveLayerChangeListener
public void addActiveLayerChangeListener(MainLayerManager.ActiveLayerChangeListener listener)
Adds an active/edit layer change listener- Parameters:
listener- the listener.
-
addActiveLayerChangeListeners
public boolean addActiveLayerChangeListeners(java.util.Collection<? extends MainLayerManager.ActiveLayerChangeListener> listeners)
Adds multiple active/edit layer change listeners. Either all listeners are added or none are added.- Parameters:
listeners- the listeners.- Returns:
falseif the listener list did not change- Since:
- 18691
-
showStackTrace
private static void showStackTrace(java.lang.StackTraceElement[] stackTrace)
-
addAndFireActiveLayerChangeListener
public void addAndFireActiveLayerChangeListener(MainLayerManager.ActiveLayerChangeListener listener)
Adds an active/edit layer change listener. Fire a fake active-layer-changed-event right after adding the listener. The previous layers will be null. The listener is notified in the current thread.- Parameters:
listener- the listener.
-
removeActiveLayerChangeListener
public void removeActiveLayerChangeListener(MainLayerManager.ActiveLayerChangeListener listener)
Removes an active/edit layer change listener.- Parameters:
listener- the listener.
-
addLayerAvailabilityListener
public void addLayerAvailabilityListener(MainLayerManager.LayerAvailabilityListener listener)
Add a newMainLayerManager.LayerAvailabilityListener.- Parameters:
listener- The listener- Since:
- 10508
-
removeLayerAvailabilityListener
public void removeLayerAvailabilityListener(MainLayerManager.LayerAvailabilityListener listener)
Remove anMainLayerManager.LayerAvailabilityListener.- Parameters:
listener- The listener- Since:
- 10508
-
setActiveLayer
public void setActiveLayer(Layer layer)
Set the active layer, unless the layer is being uploaded. If the layer is an OsmDataLayer, the edit layer is also changed.- Parameters:
layer- The active layer.
-
realSetActiveLayer
protected void realSetActiveLayer(Layer layer)
-
setActiveLayer
private void setActiveLayer(Layer layer, boolean forceEditLayerUpdate)
-
fireActiveLayerChange
private void fireActiveLayerChange(MainLayerManager.ActiveLayerChangeEvent event)
-
realAddLayer
protected void realAddLayer(Layer layer, boolean initialZoom)
Description copied from class:LayerManagerAdd a layer (implementation).- Overrides:
realAddLayerin classLayerManager- Parameters:
layer- The layer to addinitialZoom- whether if the mapview must be zoomed at layer projection bounds
-
realRemoveSingleLayer
protected java.util.Collection<Layer> realRemoveSingleLayer(Layer layer)
Description copied from class:LayerManagerRemove a single layer from the mapview (implementation).- Overrides:
realRemoveSingleLayerin classLayerManager- Parameters:
layer- The layer to remove- Returns:
- A list of layers that should be removed afterwards.
-
suggestNextActiveLayer
private Layer suggestNextActiveLayer(Layer except)
Determines the next active data layer.The layer becomes active, which has the next highest index (closer to bottom) relative to
exceptparameter in the following order:OsmDataLayerand visible, or if there is noneOsmDataLayerand hidden, or if there is none- any type
- Parameters:
except- A layer to ignore.- Returns:
- the next active data layer
-
getActiveLayer
public Layer getActiveLayer()
Replies the currently active layer- Returns:
- the currently active layer (may be null)
-
getEditLayer
public OsmDataLayer getEditLayer()
Replies the current edit layer, if present and not readOnly- Returns:
- the current edit layer. May be null.
- See Also:
getActiveDataLayer()
-
getActiveDataLayer
public OsmDataLayer getActiveDataLayer()
Replies the active data layer. The layer can be read-only.- Returns:
- the current data layer. May be null or read-only.
- Since:
- 13434
- See Also:
getEditLayer()
-
getEditDataSet
public DataSet getEditDataSet()
Gets the data set of the active edit layer, if not readOnly.- Returns:
- That data set,
nullif there is no edit layer. - See Also:
getActiveDataSet()
-
getActiveData
public OsmData<?,?,?,?> getActiveData()
Gets the data set of the active data layer. The dataset can be read-only.- Returns:
- That data set,
nullif there is no active data layer. - Since:
- 13926
-
getActiveDataSet
public DataSet getActiveDataSet()
Gets the data set of the activeOsmDataLayer. The dataset can be read-only.- Returns:
- That data set,
nullif there is no active data layer. - Since:
- 13434
- See Also:
getEditDataSet()
-
getNoteLayer
public NoteLayer getNoteLayer()
Returns the unique note layer, if present.- Returns:
- the unique note layer, or null
- Since:
- 13437
-
getVisibleLayersInZOrder
public java.util.List<Layer> getVisibleLayersInZOrder()
Creates a list of the visible layers in Z-Order, the layer with the lowest Z-Order first, layer with the highest Z-Order last.The active data layer is pulled above all adjacent data layers.
- Returns:
- a list of the visible in Z-Order, the layer with the lowest Z-Order first, layer with the highest Z-Order last.
-
invalidateEditLayer
public void invalidateEditLayer()
Invalidates current edit layer, if any. Does nothing if there is no edit layer.- Since:
- 13150
-
realResetState
protected void realResetState()
Description copied from class:LayerManagerReset all layer manager state (implementation).- Overrides:
realResetStatein classLayerManager
-
prepareLayerForUpload
public void prepareLayerForUpload(OsmDataLayer layer)
Prepares an OsmDataLayer for upload. The layer to be uploaded is locked and if the layer to be uploaded is the current editLayer then editLayer is reset to null for disallowing any changes to the layer. An ActiveLayerChangeEvent is fired to notify the listeners- Parameters:
layer- The OsmDataLayer to be uploaded
-
processLayerAfterUpload
public void processLayerAfterUpload(OsmDataLayer layer)
Post upload processing of the OsmDataLayer. If the current edit layer is empty this function sets the layer uploaded as the current editLayer. An ActiveLayerChangeEvent is fired to notify the listeners- Parameters:
layer- The OsmDataLayer uploaded
-
getAllGpxData
public java.util.List<GpxData> getAllGpxData()
Returns allGpxDatawe can get from current layers.- Returns:
- all
GpxDatawe can get from current layers - Since:
- 14802
-
-