org.openstreetmap.josm.data.osm.visitor.paint.relations
Class MultipolygonCache

java.lang.Object
  extended by org.openstreetmap.josm.data.osm.visitor.paint.relations.MultipolygonCache
All Implemented Interfaces:
DataSetListener, ProjectionChangeListener, SelectionChangedListener, MapView.LayerChangeListener

public class MultipolygonCache
extends java.lang.Object
implements DataSetListener, MapView.LayerChangeListener, ProjectionChangeListener, SelectionChangedListener


Field Summary
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
           
 
Constructor Summary
private MultipolygonCache()
           
 
Method Summary
 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, java.util.Collection<java.util.Map<Relation,Multipolygon>> maps)
           
 Multipolygon get(NavigatableComponent nc, Relation r)
           
 Multipolygon get(NavigatableComponent nc, Relation r, boolean forceRefresh)
           
static MultipolygonCache getInstance()
           
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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

instance

private static final MultipolygonCache instance

cache

private final java.util.Map<NavigatableComponent,java.util.Map<DataSet,java.util.Map<Relation,Multipolygon>>> cache

selectedPolyData

private final java.util.Collection<Multipolygon.PolyData> selectedPolyData
Constructor Detail

MultipolygonCache

private MultipolygonCache()
Method Detail

getInstance

public static final MultipolygonCache getInstance()

get

public final Multipolygon get(NavigatableComponent nc,
                              Relation r)

get

public final Multipolygon get(NavigatableComponent nc,
                              Relation r,
                              boolean forceRefresh)

clear

public final void clear(NavigatableComponent nc)

clear

public final void clear(DataSet ds)

clear

public final void clear()

getMapsFor

private final java.util.Collection<java.util.Map<Relation,Multipolygon>> getMapsFor(DataSet ds)

isMultipolygon

private static final boolean isMultipolygon(OsmPrimitive p)

updateMultipolygonsReferringTo

private final void updateMultipolygonsReferringTo(AbstractDatasetChangedEvent event)

updateMultipolygonsReferringTo

private final void updateMultipolygonsReferringTo(AbstractDatasetChangedEvent event,
                                                  java.util.Collection<? extends OsmPrimitive> primitives,
                                                  DataSet ds)

updateMultipolygonsReferringTo

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)

processEvent

private final void processEvent(AbstractDatasetChangedEvent event,
                                Relation r,
                                java.util.Collection<java.util.Map<Relation,Multipolygon>> maps)

dispatchEvent

private final void dispatchEvent(AbstractDatasetChangedEvent event,
                                 Relation r,
                                 java.util.Collection<java.util.Map<Relation,Multipolygon>> maps)

removeMultipolygonFrom

private final void removeMultipolygonFrom(Relation r,
                                          java.util.Collection<java.util.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 interface DataSetListener

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 interface DataSetListener

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 interface DataSetListener

nodeMoved

public void nodeMoved(NodeMovedEvent event)
Description copied from interface: DataSetListener
A node's coordinates were modified.

Specified by:
nodeMoved in interface DataSetListener

wayNodesChanged

public void wayNodesChanged(WayNodesChangedEvent event)
Description copied from interface: DataSetListener
A way's node list was changed.

Specified by:
wayNodesChanged in interface DataSetListener

relationMembersChanged

public void relationMembersChanged(RelationMembersChangedEvent event)
Description copied from interface: DataSetListener
A relation's members have changed.

Specified by:
relationMembersChanged in interface DataSetListener

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 interface DataSetListener

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()), #dataChanged() is called.

Specified by:
dataChanged in interface DataSetListener

activeLayerChange

public void activeLayerChange(Layer oldLayer,
                              Layer newLayer)
Description copied from interface: MapView.LayerChangeListener
Notifies this listener that the active layer has changed.

Specified by:
activeLayerChange in interface MapView.LayerChangeListener
Parameters:
oldLayer - The previous active layer
newLayer - The new activer layer

layerAdded

public void layerAdded(Layer newLayer)
Description copied from interface: MapView.LayerChangeListener
Notifies this listener that a layer has been added.

Specified by:
layerAdded in interface MapView.LayerChangeListener
Parameters:
newLayer - The new added layer

layerRemoved

public void layerRemoved(Layer oldLayer)
Description copied from interface: MapView.LayerChangeListener
Notifies this listener that a layer has been removed.

Specified by:
layerRemoved in interface MapView.LayerChangeListener
Parameters:
oldLayer - The old removed layer

projectionChanged

public void projectionChanged(Projection oldValue,
                              Projection newValue)
Specified by:
projectionChanged in interface ProjectionChangeListener

selectionChanged

public void selectionChanged(java.util.Collection<? extends OsmPrimitive> newSelection)
Description copied from interface: SelectionChangedListener
Informs the listener that the selection in the dataset has changed.

Specified by:
selectionChanged in interface SelectionChangedListener
Parameters:
newSelection - The new selection.


JOSM