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 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 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 final MultipolygonCache getInstance()
public final Multipolygon get(NavigatableComponent nc, Relation r)
nc - The navigatable componentr - The multipolygon relationnullpublic final 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 cachenullpublic final void clear(NavigatableComponent nc)
nc - the navigatable componentpublic final void clear(DataSet ds)
ds - the data setpublic final void clear()
private final java.util.Collection<java.util.Map<Relation,Multipolygon>> getMapsFor(DataSet ds)
private static final boolean isMultipolygon(OsmPrimitive p)
private final void updateMultipolygonsReferringTo(AbstractDatasetChangedEvent event)
private final void updateMultipolygonsReferringTo(AbstractDatasetChangedEvent event, java.util.Collection<? extends OsmPrimitive> primitives, DataSet ds)
private final 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 final void processEvent(AbstractDatasetChangedEvent event, Relation r, java.util.Collection<java.util.Map<Relation,Multipolygon>> maps)
private final void dispatchEvent(AbstractDatasetChangedEvent event, Relation r, java.util.Collection<java.util.Map<Relation,Multipolygon>> maps)
private final void removeMultipolygonFrom(Relation r, java.util.Collection<java.util.Map<Relation,Multipolygon>> maps)
public void primitivesAdded(PrimitivesAddedEvent event)
DataSetListenerprimitivesAdded in interface DataSetListenerevent - An event for an collection of newly-visible primitivespublic void primitivesRemoved(PrimitivesRemovedEvent event)
DataSetListenerprimitivesRemoved in interface DataSetListenerevent - An event for an collection of newly-invisible primitivespublic void tagsChanged(TagsChangedEvent event)
DataSetListenertagsChanged in interface DataSetListenerevent - the event for the primitive, whose tags were affected.public void nodeMoved(NodeMovedEvent event)
DataSetListenernodeMoved in interface DataSetListenerevent - The event for the node that was moved.public void wayNodesChanged(WayNodesChangedEvent event)
DataSetListenerwayNodesChanged in interface DataSetListenerevent - The event for the way that was modified.public void relationMembersChanged(RelationMembersChangedEvent event)
DataSetListenerrelationMembersChanged in interface DataSetListenerevent - The event for the relation that was modified.public void otherDatasetChange(AbstractDatasetChangedEvent event)
DataSetListenerotherDatasetChange in interface DataSetListenerevent - the event for data modificationpublic void dataChanged(DataChangedEvent event)
DataSetListenerDataSetListener.dataChanged(DataChangedEvent event) is called.dataChanged in interface DataSetListenerpublic void activeLayerChange(Layer oldLayer, Layer newLayer)
MapView.LayerChangeListeneractiveLayerChange in interface MapView.LayerChangeListeneroldLayer - The previous active layernewLayer - The new activer layerpublic void layerAdded(Layer newLayer)
MapView.LayerChangeListenerlayerAdded in interface MapView.LayerChangeListenernewLayer - The new added layerpublic void layerRemoved(Layer oldLayer)
MapView.LayerChangeListenerlayerRemoved in interface MapView.LayerChangeListeneroldLayer - The old removed layerpublic void projectionChanged(Projection oldValue, Projection newValue)
projectionChanged in interface ProjectionChangeListenerpublic void selectionChanged(java.util.Collection<? extends OsmPrimitive> newSelection)
SelectionChangedListenerselectionChanged in interface SelectionChangedListenernewSelection - The new selection.