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 class
DatasetEventManager.EdtRunnable
static class
DatasetEventManager.FireMode
Event firing mode regarding Event Dispatch Thread.private static class
DatasetEventManager.ListenerInfo
-
Field Summary
Fields Modifier and Type Field Description 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
Constructors Constructor Description DatasetEventManager()
Constructs a newDatasetEventManager
.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
activeOrEditLayerChanged(MainLayerManager.ActiveLayerChangeEvent e)
Called whenever the active or edit layer changed.void
addDatasetListener(DataSetListener listener, DatasetEventManager.FireMode fireMode)
Register listener, that will receive events from currently active datasetprivate static void
fireConsolidatedEvents(java.util.List<DatasetEventManager.ListenerInfo> listeners, AbstractDatasetChangedEvent event)
private static void
fireEvents(java.util.List<DatasetEventManager.ListenerInfo> listeners, AbstractDatasetChangedEvent event)
static DatasetEventManager
getInstance()
Replies the unique instance.void
processDatasetEvent(AbstractDatasetChangedEvent event)
Called when notified about any type of dataset change event.void
removeDatasetListener(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_EDT
orDatasetEventManager.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.ActiveLayerChangeListener
Called 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:
activeOrEditLayerChanged
in 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.Listener
Called when notified about any type of dataset change event.- Specified by:
processDatasetEvent
in interfaceDataSetListenerAdapter.Listener
- Parameters:
event
- dataset change event
-
-