Class DatasetEventManager
- java.lang.Object
-
- org.openstreetmap.josm.data.osm.event.DatasetEventManager
-
- All Implemented Interfaces:
DataSetListenerAdapter.Listener,MainLayerManager.ActiveLayerChangeListener
public class DatasetEventManager extends java.lang.Object implements MainLayerManager.ActiveLayerChangeListener, 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 re-register every time new layer is selected) Events in EDT are supported, seeaddDatasetListener(DataSetListener, FireMode)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private classDatasetEventManager.EdtRunnablestatic classDatasetEventManager.FireModeEvent firing mode regarding Event Dispatch Thread.private static classDatasetEventManager.ListenerInfo
-
Field Summary
Fields Modifier and Type Field Description private java.lang.RunnableedtRunnableprivate java.util.Queue<AbstractDatasetChangedEvent>eventsInEDTprivate java.util.concurrent.CopyOnWriteArrayList<DatasetEventManager.ListenerInfo>inEDTListenersprivate static DatasetEventManagerINSTANCEprivate DataSetListenermyListenerprivate java.util.concurrent.CopyOnWriteArrayList<DatasetEventManager.ListenerInfo>normalListeners
-
Constructor Summary
Constructors Constructor Description DatasetEventManager()Constructs a newDatasetEventManager.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidactiveOrEditLayerChanged(MainLayerManager.ActiveLayerChangeEvent e)Called whenever the active or edit layer changed.voidaddDatasetListener(DataSetListener listener, DatasetEventManager.FireMode fireMode)Register listener, that will receive events from currently active datasetprivate static voidfireConsolidatedEvents(java.util.List<DatasetEventManager.ListenerInfo> listeners, AbstractDatasetChangedEvent event)private static voidfireEvents(java.util.List<DatasetEventManager.ListenerInfo> listeners, AbstractDatasetChangedEvent event)static DatasetEventManagergetInstance()Replies the unique instance.voidprocessDatasetEvent(AbstractDatasetChangedEvent event)Called when notified about any type of dataset change event.voidremoveDatasetListener(DataSetListener listener)Unregister listener.
-
-
-
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()
Constructs a newDatasetEventManager.
-
-
Method Detail
-
getInstance
public static DatasetEventManager getInstance()
Replies the unique instance.- Returns:
- the unique instance
-
addDatasetListener
public void addDatasetListener(DataSetListener listener, DatasetEventManager.FireMode fireMode)
Register listener, that will receive events from currently active dataset- Parameters:
listener- the listener to be registeredfireMode- IfDatasetEventManager.FireMode.IN_EDTorDatasetEventManager.FireMode.IN_EDT_CONSOLIDATED, listener will be notified in event dispatch thread instead of thread that caused the dataset change
-
removeDatasetListener
public void removeDatasetListener(DataSetListener listener)
Unregister listener.- Parameters:
listener- listener to remove
-
activeOrEditLayerChanged
public void activeOrEditLayerChanged(MainLayerManager.ActiveLayerChangeEvent e)
Description copied from interface:MainLayerManager.ActiveLayerChangeListenerCalled whenever the active or edit layer changed.You can be sure that this layer is still contained in this set.
Listeners are called in the EDT thread and you can manipulate the layer manager in the current thread.
- Specified by:
activeOrEditLayerChangedin interfaceMainLayerManager.ActiveLayerChangeListener- Parameters:
e- The change event.
-
fireEvents
private static void fireEvents(java.util.List<DatasetEventManager.ListenerInfo> listeners, AbstractDatasetChangedEvent event)
-
fireConsolidatedEvents
private static void fireConsolidatedEvents(java.util.List<DatasetEventManager.ListenerInfo> listeners, AbstractDatasetChangedEvent event)
-
processDatasetEvent
public void processDatasetEvent(AbstractDatasetChangedEvent event)
Description copied from interface:DataSetListenerAdapter.ListenerCalled when notified about any type of dataset change event.- Specified by:
processDatasetEventin interfaceDataSetListenerAdapter.Listener- Parameters:
event- dataset change event
-
-