org.openstreetmap.josm.data.osm.event
Class DatasetEventManager

java.lang.Object
  extended by org.openstreetmap.josm.data.osm.event.DatasetEventManager
All Implemented Interfaces:
DataSetListenerAdapter.Listener, MapView.EditLayerChangeListener

public class DatasetEventManager
extends java.lang.Object
implements MapView.EditLayerChangeListener, DataSetListenerAdapter.Listener

This class allows to add DatasetListener to currently active dataset. If active layer is changed, listeners are automatically registered at new active dataset (it's no longer necessary to register for layer events and reregister every time new layer is selected) Events in EDT are supported, see #addDatasetListener(DataSetListener, FireMode


Nested Class Summary
static class DatasetEventManager.FireMode
           
private static class DatasetEventManager.ListenerInfo
           
 
Field Summary
private  java.lang.Runnable edtRunnable
           
private  java.util.Queue<AbstractDatasetChangedEvent> eventsInEDT
           
private  java.util.concurrent.CopyOnWriteArrayList<DatasetEventManager.ListenerInfo> inEDTListeners
           
private static DatasetEventManager instance
           
private  DataSetListener myListener
           
private  java.util.concurrent.CopyOnWriteArrayList<DatasetEventManager.ListenerInfo> normalListeners
           
 
Constructor Summary
DatasetEventManager()
           
 
Method Summary
 void addDatasetListener(DataSetListener listener, DatasetEventManager.FireMode fireMode)
          Register listener, that will receive events from currently active dataset
 void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer)
           
private  void fireConsolidatedEvents(java.util.List<DatasetEventManager.ListenerInfo> listeners, AbstractDatasetChangedEvent event)
           
private  void fireEvents(java.util.List<DatasetEventManager.ListenerInfo> listeners, AbstractDatasetChangedEvent event)
           
static DatasetEventManager getInstance()
           
 void processDatasetEvent(AbstractDatasetChangedEvent event)
           
 void removeDatasetListener(DataSetListener listener)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

instance

private static final DatasetEventManager instance

eventsInEDT

private final java.util.Queue<AbstractDatasetChangedEvent> eventsInEDT

inEDTListeners

private final java.util.concurrent.CopyOnWriteArrayList<DatasetEventManager.ListenerInfo> inEDTListeners

normalListeners

private final java.util.concurrent.CopyOnWriteArrayList<DatasetEventManager.ListenerInfo> normalListeners

myListener

private final DataSetListener myListener

edtRunnable

private final java.lang.Runnable edtRunnable
Constructor Detail

DatasetEventManager

public DatasetEventManager()
Method Detail

getInstance

public static DatasetEventManager getInstance()

addDatasetListener

public void addDatasetListener(DataSetListener listener,
                               DatasetEventManager.FireMode fireMode)
Register listener, that will receive events from currently active dataset

Parameters:
listener -
fireInEDT - If true, listener will be notified in event dispatch thread instead of thread that caused the dataset change

removeDatasetListener

public void removeDatasetListener(DataSetListener listener)

editLayerChanged

public void editLayerChanged(OsmDataLayer oldLayer,
                             OsmDataLayer newLayer)
Specified by:
editLayerChanged in interface MapView.EditLayerChangeListener

fireEvents

private void fireEvents(java.util.List<DatasetEventManager.ListenerInfo> listeners,
                        AbstractDatasetChangedEvent event)

fireConsolidatedEvents

private void fireConsolidatedEvents(java.util.List<DatasetEventManager.ListenerInfo> listeners,
                                    AbstractDatasetChangedEvent event)

processDatasetEvent

public void processDatasetEvent(AbstractDatasetChangedEvent event)
Specified by:
processDatasetEvent in interface DataSetListenerAdapter.Listener


JOSM