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 class
MainLayerManager.ActiveLayerChangeEvent
This event is fired whenever the active or the data layer changes.static interface
MainLayerManager.ActiveLayerChangeListener
This listener listens to changes of the active or the edit layer.static class
MainLayerManager.LayerAvailabilityEvent
This event is fired forMainLayerManager.LayerAvailabilityListener
static interface
MainLayerManager.LayerAvailabilityListener
A 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 Layer
activeLayer
The layer from the layers list that is currently active.private java.util.List<MainLayerManager.ActiveLayerChangeListener>
activeLayerChangeListeners
private AbstractOsmDataLayer
dataLayer
The current active data layer.private java.util.List<MainLayerManager.LayerAvailabilityListener>
layerAvailabilityListeners
private OsmDataLayer
osmDataLayer
The 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 void
addActiveLayerChangeListener(MainLayerManager.ActiveLayerChangeListener listener)
Adds an active/edit layer change listenerboolean
addActiveLayerChangeListeners(java.util.Collection<? extends MainLayerManager.ActiveLayerChangeListener> listeners)
Adds multiple active/edit layer change listeners.void
addAndFireActiveLayerChangeListener(MainLayerManager.ActiveLayerChangeListener listener)
Adds an active/edit layer change listener.void
addLayerAvailabilityListener(MainLayerManager.LayerAvailabilityListener listener)
Add a newMainLayerManager.LayerAvailabilityListener
.private void
fireActiveLayerChange(MainLayerManager.ActiveLayerChangeEvent event)
OsmData<?,?,?,?>
getActiveData()
Gets the data set of the active data layer.OsmDataLayer
getActiveDataLayer()
Replies the active data layer.DataSet
getActiveDataSet()
Gets the data set of the activeOsmDataLayer
.Layer
getActiveLayer()
Replies the currently active layerjava.util.List<GpxData>
getAllGpxData()
Returns allGpxData
we can get from current layers.DataSet
getEditDataSet()
Gets the data set of the active edit layer, if not readOnly.OsmDataLayer
getEditLayer()
Replies the current edit layer, if present and not readOnlyNoteLayer
getNoteLayer()
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.void
invalidateEditLayer()
Invalidates current edit layer, if any.void
prepareLayerForUpload(OsmDataLayer layer)
Prepares an OsmDataLayer for upload.void
processLayerAfterUpload(OsmDataLayer layer)
Post upload processing of the OsmDataLayer.protected void
realAddLayer(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 void
realResetState()
Reset all layer manager state (implementation).protected void
realSetActiveLayer(Layer layer)
void
removeActiveLayerChangeListener(MainLayerManager.ActiveLayerChangeListener listener)
Removes an active/edit layer change listener.void
removeLayerAvailabilityListener(MainLayerManager.LayerAvailabilityListener listener)
Remove anMainLayerManager.LayerAvailabilityListener
.void
setActiveLayer(Layer layer)
Set the active layer, unless the layer is being uploaded.private void
setActiveLayer(Layer layer, boolean forceEditLayerUpdate)
private static void
showStackTrace(java.lang.StackTraceElement[] stackTrace)
private Layer
suggestNextActiveLayer(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:
false
if 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:LayerManager
Add a layer (implementation).- Overrides:
realAddLayer
in 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:LayerManager
Remove a single layer from the mapview (implementation).- Overrides:
realRemoveSingleLayer
in 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
except
parameter in the following order:OsmDataLayer
and visible, or if there is noneOsmDataLayer
and 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,
null
if 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,
null
if 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,
null
if 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:LayerManager
Reset all layer manager state (implementation).- Overrides:
realResetState
in 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 allGpxData
we can get from current layers.- Returns:
- all
GpxData
we can get from current layers - Since:
- 14802
-
-