public final class MultipolygonCache extends Object implements DataSetListener, MapView.LayerChangeListener, ProjectionChangeListener, SelectionChangedListener
Modifier and Type | Field and Description |
---|---|
private Map<NavigatableComponent,Map<DataSet,Map<Relation,Multipolygon>>> |
cache |
private static MultipolygonCache |
instance |
private 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() |
void |
clear(DataSet ds) |
void |
clear(NavigatableComponent nc) |
void |
dataChanged(DataChangedEvent event)
Called after big changes in dataset.
|
private void |
dispatchEvent(AbstractDatasetChangedEvent event,
Relation r,
Collection<Map<Relation,Multipolygon>> maps) |
Multipolygon |
get(NavigatableComponent nc,
Relation r) |
Multipolygon |
get(NavigatableComponent nc,
Relation r,
boolean forceRefresh) |
static MultipolygonCache |
getInstance() |
private Collection<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,
Collection<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,
Collection<Map<Relation,Multipolygon>> maps) |
void |
selectionChanged(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,
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.
|
private static final MultipolygonCache instance
private final Map<NavigatableComponent,Map<DataSet,Map<Relation,Multipolygon>>> cache
private final Collection<Multipolygon.PolyData> selectedPolyData
private MultipolygonCache()
public static final MultipolygonCache getInstance()
public final Multipolygon get(NavigatableComponent nc, Relation r)
public final Multipolygon get(NavigatableComponent nc, Relation r, boolean forceRefresh)
public final void clear(NavigatableComponent nc)
public final void clear()
private final Collection<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, Collection<? extends OsmPrimitive> primitives, DataSet ds)
private final Collection<Map<Relation,Multipolygon>> updateMultipolygonsReferringTo(AbstractDatasetChangedEvent event, Collection<? extends OsmPrimitive> primitives, DataSet ds, Collection<Map<Relation,Multipolygon>> initialMaps)
private final void processEvent(AbstractDatasetChangedEvent event, Relation r, Collection<Map<Relation,Multipolygon>> maps)
private final void dispatchEvent(AbstractDatasetChangedEvent event, Relation r, Collection<Map<Relation,Multipolygon>> maps)
private final void removeMultipolygonFrom(Relation r, Collection<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
public 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(Collection<? extends OsmPrimitive> newSelection)
SelectionChangedListener
selectionChanged
in interface SelectionChangedListener
newSelection
- The new selection.