Class MultipolygonCache
- java.lang.Object
-
- org.openstreetmap.josm.data.osm.visitor.paint.relations.MultipolygonCache
-
- All Implemented Interfaces:
DataSelectionListener
,DataSetListener
,ProjectionChangeListener
,LayerManager.LayerChangeListener
public final class MultipolygonCache extends Object implements DataSetListener, LayerManager.LayerChangeListener, ProjectionChangeListener, DataSelectionListener
A memory cache forMultipolygon
objects.- Since:
- 4623
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.openstreetmap.josm.data.osm.DataSelectionListener
DataSelectionListener.AbstractSelectionEvent, DataSelectionListener.SelectionAddEvent, DataSelectionListener.SelectionChangeEvent, DataSelectionListener.SelectionRemoveEvent, DataSelectionListener.SelectionReplaceEvent, DataSelectionListener.SelectionToggleEvent
-
-
Field Summary
Fields Modifier and Type Field Description private Map<DataSet,Map<Relation,Multipolygon>>
cache
private static MultipolygonCache
INSTANCE
private Collection<Multipolygon.PolyData>
selectedPolyData
-
Constructor Summary
Constructors Modifier Constructor Description private
MultipolygonCache()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clear()
Clears the whole cache.void
clear(DataSet ds)
Clears the cache for the given dataset.void
dataChanged(DataChangedEvent event)
Called after big changes in dataset.private static void
dispatchEvent(AbstractDatasetChangedEvent event, Relation r, Collection<Map<Relation,Multipolygon>> maps)
Multipolygon
get(Relation r)
Gets a multipolygon from cache.Multipolygon
get(Relation r, boolean forceRefresh)
Gets a multipolygon from cache.static MultipolygonCache
getInstance()
Replies the unique instance.private Collection<Map<Relation,Multipolygon>>
getMapsFor(DataSet ds)
void
layerAdded(LayerManager.LayerAddEvent e)
Notifies this listener that a layer has been added.void
layerOrderChanged(LayerManager.LayerOrderChangeEvent e)
Notifies this listener that the order of layers was changed.void
layerRemoving(LayerManager.LayerRemoveEvent e)
Notifies this listener that a layer was just removed.void
nodeMoved(NodeMovedEvent event)
A node's coordinates were modified.void
otherDatasetChange(AbstractDatasetChangedEvent event)
Minor dataset change, currently only changeset id changed is supported, but can be extended in future.void
primitivesAdded(PrimitivesAddedEvent event)
A bunch of primitives were added into the DataSet, or existing deleted/invisible primitives were resurrected.void
primitivesRemoved(PrimitivesRemovedEvent event)
A bunch of primitives were removed from the DataSet, or preexisting primitives were marked as deleted.private static void
processEvent(AbstractDatasetChangedEvent event, Relation r, Collection<Map<Relation,Multipolygon>> maps)
void
projectionChanged(Projection oldValue, Projection newValue)
void
relationMembersChanged(RelationMembersChangedEvent event)
A relation's members have changed.private static void
removeMultipolygonFrom(Relation r, Collection<Map<Relation,Multipolygon>> maps)
void
selectionChanged(DataSelectionListener.SelectionChangeEvent event)
Called whenever the selection is changed.void
tagsChanged(TagsChangedEvent event)
There was some change in the tag set of a primitive.private void
updateMultipolygonsReferringTo(AbstractDatasetChangedEvent event)
private void
updateMultipolygonsReferringTo(AbstractDatasetChangedEvent event, Collection<? extends OsmPrimitive> primitives, DataSet ds)
private Collection<Map<Relation,Multipolygon>>
updateMultipolygonsReferringTo(AbstractDatasetChangedEvent event, Collection<? extends OsmPrimitive> primitives, DataSet ds, Collection<Map<Relation,Multipolygon>> initialMaps)
void
wayNodesChanged(WayNodesChangedEvent event)
A way's node list was changed.
-
-
-
Field Detail
-
INSTANCE
private static final MultipolygonCache INSTANCE
-
selectedPolyData
private final Collection<Multipolygon.PolyData> selectedPolyData
-
-
Constructor Detail
-
MultipolygonCache
private MultipolygonCache()
-
-
Method Detail
-
getInstance
public static MultipolygonCache getInstance()
Replies the unique instance.- Returns:
- the unique instance
-
get
public Multipolygon get(Relation r)
Gets a multipolygon from cache.- Parameters:
r
- The multipolygon relation- Returns:
- A multipolygon object for the given relation, or
null
- Since:
- 11779
-
get
public Multipolygon get(Relation r, boolean forceRefresh)
Gets a multipolygon from cache.- Parameters:
r
- The multipolygon relationforceRefresh
- iftrue
, a new object will be created even of present in cache- Returns:
- A multipolygon object for the given relation, or
null
- Since:
- 11779
-
clear
public void clear(DataSet ds)
Clears the cache for the given dataset.- Parameters:
ds
- the data set
-
clear
public void clear()
Clears the whole cache.
-
getMapsFor
private Collection<Map<Relation,Multipolygon>> getMapsFor(DataSet ds)
-
updateMultipolygonsReferringTo
private void updateMultipolygonsReferringTo(AbstractDatasetChangedEvent event)
-
updateMultipolygonsReferringTo
private void updateMultipolygonsReferringTo(AbstractDatasetChangedEvent event, Collection<? extends OsmPrimitive> primitives, DataSet ds)
-
updateMultipolygonsReferringTo
private Collection<Map<Relation,Multipolygon>> updateMultipolygonsReferringTo(AbstractDatasetChangedEvent event, Collection<? extends OsmPrimitive> primitives, DataSet ds, Collection<Map<Relation,Multipolygon>> initialMaps)
-
processEvent
private static void processEvent(AbstractDatasetChangedEvent event, Relation r, Collection<Map<Relation,Multipolygon>> maps)
-
dispatchEvent
private static void dispatchEvent(AbstractDatasetChangedEvent event, Relation r, Collection<Map<Relation,Multipolygon>> maps)
-
removeMultipolygonFrom
private static void removeMultipolygonFrom(Relation r, Collection<Map<Relation,Multipolygon>> maps)
-
primitivesAdded
public void primitivesAdded(PrimitivesAddedEvent event)
Description copied from interface:DataSetListener
A bunch of primitives were added into the DataSet, or existing deleted/invisible primitives were resurrected.- Specified by:
primitivesAdded
in interfaceDataSetListener
- Parameters:
event
- An event for an collection of newly-visible primitives
-
primitivesRemoved
public void primitivesRemoved(PrimitivesRemovedEvent event)
Description copied from interface:DataSetListener
A bunch of primitives were removed from the DataSet, or preexisting primitives were marked as deleted.- Specified by:
primitivesRemoved
in interfaceDataSetListener
- Parameters:
event
- An event for an collection of newly-invisible primitives
-
tagsChanged
public void tagsChanged(TagsChangedEvent event)
Description copied from interface:DataSetListener
There was some change in the tag set of a primitive. It can have been a tag addition, tag removal or change in tag value.- Specified by:
tagsChanged
in interfaceDataSetListener
- Parameters:
event
- the event for the primitive, whose tags were affected.
-
nodeMoved
public void nodeMoved(NodeMovedEvent event)
Description copied from interface:DataSetListener
A node's coordinates were modified.- Specified by:
nodeMoved
in interfaceDataSetListener
- Parameters:
event
- The event for the node that was moved.
-
wayNodesChanged
public void wayNodesChanged(WayNodesChangedEvent event)
Description copied from interface:DataSetListener
A way's node list was changed.- Specified by:
wayNodesChanged
in interfaceDataSetListener
- Parameters:
event
- The event for the way that was modified.
-
relationMembersChanged
public void relationMembersChanged(RelationMembersChangedEvent event)
Description copied from interface:DataSetListener
A relation's members have changed.- Specified by:
relationMembersChanged
in interfaceDataSetListener
- Parameters:
event
- The event for the relation that was modified.
-
otherDatasetChange
public void otherDatasetChange(AbstractDatasetChangedEvent event)
Description copied from interface:DataSetListener
Minor dataset change, currently only changeset id changed is supported, but can be extended in future.- Specified by:
otherDatasetChange
in interfaceDataSetListener
- Parameters:
event
- the event for data modification
-
dataChanged
public void dataChanged(DataChangedEvent event)
Description copied from interface:DataSetListener
Called after big changes in dataset. Usually other events are stopped using Dataset.beginUpdate() and after operation is completed (Dataset.endUpdate()),DataSetListener.dataChanged(DataChangedEvent event)
is called.- Specified by:
dataChanged
in interfaceDataSetListener
- Parameters:
event
- data change event
-
layerAdded
public void layerAdded(LayerManager.LayerAddEvent e)
Description copied from interface:LayerManager.LayerChangeListener
Notifies this listener that a layer has been added.Listeners are called in the EDT thread. You should not do blocking or long-running tasks in this method.
- Specified by:
layerAdded
in interfaceLayerManager.LayerChangeListener
- Parameters:
e
- The new added layer event
-
layerOrderChanged
public void layerOrderChanged(LayerManager.LayerOrderChangeEvent e)
Description copied from interface:LayerManager.LayerChangeListener
Notifies this listener that the order of layers was changed.Listeners are called in the EDT thread. You should not do blocking or long-running tasks in this method.
- Specified by:
layerOrderChanged
in interfaceLayerManager.LayerChangeListener
- Parameters:
e
- The order change event.
-
layerRemoving
public void layerRemoving(LayerManager.LayerRemoveEvent e)
Description copied from interface:LayerManager.LayerChangeListener
Notifies this listener that a layer was just removed.Listeners are called in the EDT thread after the layer was removed. Use
LayerManager.LayerRemoveEvent.scheduleRemoval(Collection)
to remove more layers. You should not do blocking or long-running tasks in this method.- Specified by:
layerRemoving
in interfaceLayerManager.LayerChangeListener
- Parameters:
e
- The layer to be removed (as event)
-
projectionChanged
public void projectionChanged(Projection oldValue, Projection newValue)
- Specified by:
projectionChanged
in interfaceProjectionChangeListener
-
selectionChanged
public void selectionChanged(DataSelectionListener.SelectionChangeEvent event)
Description copied from interface:DataSelectionListener
Called whenever the selection is changed. You get notified about the new selection, the elements that were added and removed and the layer that triggered the event.- Specified by:
selectionChanged
in interfaceDataSelectionListener
- Parameters:
event
- The selection change event.- See Also:
DataSelectionListener.SelectionChangeEvent
-
-