public final class MultipolygonCache extends java.lang.Object implements DataSetListener, MapView.LayerChangeListener, ProjectionChangeListener, SelectionChangedListener
Multipolygon
objects.Modifier and Type | Field and Description |
---|---|
private java.util.Map<NavigatableComponent,java.util.Map<DataSet,java.util.Map<Relation,Multipolygon>>> |
cache |
private static MultipolygonCache |
INSTANCE |
private java.util.Collection<Multipolygon.PolyData> |
selectedPolyData |
Modifier | Constructor and Description |
---|---|
private |
MultipolygonCache() |
Modifier and Type | Method and Description |
---|---|
void |
activeLayerChange(Layer oldLayer,
Layer newLayer)
Notifies this listener that the active layer has changed.
|
void |
clear()
Clears the whole cache.
|
void |
clear(DataSet ds)
Clears the cache for the given dataset.
|
void |
clear(NavigatableComponent nc)
Clears the cache for the given navigatable component.
|
void |
dataChanged(DataChangedEvent event)
Called after big changes in dataset.
|
private static void |
dispatchEvent(AbstractDatasetChangedEvent event,
Relation r,
java.util.Collection<java.util.Map<Relation,Multipolygon>> maps) |
Multipolygon |
get(NavigatableComponent nc,
Relation r)
Gets a multipolygon from cache.
|
Multipolygon |
get(NavigatableComponent nc,
Relation r,
boolean forceRefresh)
Gets a multipolygon from cache.
|
static MultipolygonCache |
getInstance()
Replies the unique instance.
|
private java.util.Collection<java.util.Map<Relation,Multipolygon>> |
getMapsFor(DataSet ds) |
private static boolean |
isMultipolygon(OsmPrimitive p) |
void |
layerAdded(Layer newLayer)
Notifies this listener that a layer has been added.
|
void |
layerRemoved(Layer oldLayer)
Notifies this listener that a layer has been 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 void |
processEvent(AbstractDatasetChangedEvent event,
Relation r,
java.util.Collection<java.util.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,
java.util.Collection<java.util.Map<Relation,Multipolygon>> maps) |
void |
selectionChanged(java.util.Collection<? extends OsmPrimitive> newSelection)
Informs the listener that the selection in the dataset has 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,
java.util.Collection<? extends OsmPrimitive> primitives,
DataSet ds) |
private java.util.Collection<java.util.Map<Relation,Multipolygon>> |
updateMultipolygonsReferringTo(AbstractDatasetChangedEvent event,
java.util.Collection<? extends OsmPrimitive> primitives,
DataSet ds,
java.util.Collection<java.util.Map<Relation,Multipolygon>> initialMaps) |
void |
wayNodesChanged(WayNodesChangedEvent event)
A way's node list was changed.
|
private static final MultipolygonCache INSTANCE
private final java.util.Map<NavigatableComponent,java.util.Map<DataSet,java.util.Map<Relation,Multipolygon>>> cache
private final java.util.Collection<Multipolygon.PolyData> selectedPolyData
private MultipolygonCache()
public static MultipolygonCache getInstance()
public Multipolygon get(NavigatableComponent nc, Relation r)
nc
- The navigatable componentr
- The multipolygon relationnull
public Multipolygon get(NavigatableComponent nc, Relation r, boolean forceRefresh)
nc
- The navigatable componentr
- The multipolygon relationforceRefresh
- if true
, a new object will be created even of present in cachenull
public void clear(NavigatableComponent nc)
nc
- the navigatable componentpublic void clear(DataSet ds)
ds
- the data setpublic void clear()
private java.util.Collection<java.util.Map<Relation,Multipolygon>> getMapsFor(DataSet ds)
private static boolean isMultipolygon(OsmPrimitive p)
private void updateMultipolygonsReferringTo(AbstractDatasetChangedEvent event)
private void updateMultipolygonsReferringTo(AbstractDatasetChangedEvent event, java.util.Collection<? extends OsmPrimitive> primitives, DataSet ds)
private java.util.Collection<java.util.Map<Relation,Multipolygon>> updateMultipolygonsReferringTo(AbstractDatasetChangedEvent event, java.util.Collection<? extends OsmPrimitive> primitives, DataSet ds, java.util.Collection<java.util.Map<Relation,Multipolygon>> initialMaps)
private void processEvent(AbstractDatasetChangedEvent event, Relation r, java.util.Collection<java.util.Map<Relation,Multipolygon>> maps)
private static void dispatchEvent(AbstractDatasetChangedEvent event, Relation r, java.util.Collection<java.util.Map<Relation,Multipolygon>> maps)
private static void removeMultipolygonFrom(Relation r, java.util.Collection<java.util.Map<Relation,Multipolygon>> maps)
public void primitivesAdded(PrimitivesAddedEvent event)
DataSetListener
primitivesAdded
in interface DataSetListener
event
- An event for an collection of newly-visible primitivespublic void primitivesRemoved(PrimitivesRemovedEvent event)
DataSetListener
primitivesRemoved
in interface DataSetListener
event
- An event for an collection of newly-invisible primitivespublic void tagsChanged(TagsChangedEvent event)
DataSetListener
tagsChanged
in interface DataSetListener
event
- the event for the primitive, whose tags were affected.public void nodeMoved(NodeMovedEvent event)
DataSetListener
nodeMoved
in interface DataSetListener
event
- The event for the node that was moved.public void wayNodesChanged(WayNodesChangedEvent event)
DataSetListener
wayNodesChanged
in interface DataSetListener
event
- The event for the way that was modified.public void relationMembersChanged(RelationMembersChangedEvent event)
DataSetListener
relationMembersChanged
in interface DataSetListener
event
- The event for the relation that was modified.public void otherDatasetChange(AbstractDatasetChangedEvent event)
DataSetListener
otherDatasetChange
in interface DataSetListener
event
- the event for data modificationpublic void dataChanged(DataChangedEvent event)
DataSetListener
DataSetListener.dataChanged(DataChangedEvent event)
is called.dataChanged
in interface DataSetListener
event
- data change eventpublic void activeLayerChange(Layer oldLayer, Layer newLayer)
MapView.LayerChangeListener
activeLayerChange
in interface MapView.LayerChangeListener
oldLayer
- The previous active layernewLayer
- The new activer layerpublic void layerAdded(Layer newLayer)
MapView.LayerChangeListener
layerAdded
in interface MapView.LayerChangeListener
newLayer
- The new added layerpublic void layerRemoved(Layer oldLayer)
MapView.LayerChangeListener
layerRemoved
in interface MapView.LayerChangeListener
oldLayer
- The old removed layerpublic void projectionChanged(Projection oldValue, Projection newValue)
projectionChanged
in interface ProjectionChangeListener
public void selectionChanged(java.util.Collection<? extends OsmPrimitive> newSelection)
SelectionChangedListener
selectionChanged
in interface SelectionChangedListener
newSelection
- The new selection.