public final class MultipolygonCache extends java.lang.Object implements DataSetListener, LayerManager.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 |
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(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 is about to be 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,
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 static 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 layerAdded(LayerManager.LayerAddEvent e)
LayerManager.LayerChangeListener
Listeners are called in the EDT thread and you can manipulate the layer manager in the current thread.
layerAdded
in interface LayerManager.LayerChangeListener
e
- The new added layer eventpublic void layerOrderChanged(LayerManager.LayerOrderChangeEvent e)
LayerManager.LayerChangeListener
Listeners are called in the EDT thread and you can manipulate the layer manager in the current thread.
layerOrderChanged
in interface LayerManager.LayerChangeListener
e
- The order change event.public void layerRemoving(LayerManager.LayerRemoveEvent e)
LayerManager.LayerChangeListener
Listeners are called in the EDT thread and you can manipulate the layer manager in the current thread.
layerRemoving
in interface LayerManager.LayerChangeListener
e
- The layer to be removed (as event)public 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.