package org.ovirt.engine.ui.common.editor; import java.util.HashMap; import java.util.Map; import org.ovirt.engine.ui.uicompat.Event; import org.ovirt.engine.ui.uicompat.EventArgs; import org.ovirt.engine.ui.uicompat.IEventListener; /** * A Map of {@link Event}s - used by the Editor Driver to be updated when a change in the Model occurs */ public class UiCommonEventMap { private final Map<String, Event<?>> eventMap; public UiCommonEventMap() { eventMap = new HashMap<>(); } /** * Add an Event to the Map * * @param path * The property path (i.e. "userName.entity") * @param type * The event type (i.e. "SelectedItemsChanged") * @param event * The Event */ public void addEvent(String path, String type, Event event) { eventMap.put(getKey(path, type), event); } /** * Register a Listener to an Event from the Map * * @param path * The property path (i.e. "userName.entity") * @param type * The event type (i.e. "SelectedItemsChanged") * @param listener * The Listener to add */ public void registerListener(String path, String type, IEventListener<? extends EventArgs> listener) { String key = getKey(path, type); if (eventMap.containsKey(key)) { eventMap.get(key).addListener((IEventListener) listener); } } private String getKey(String path, String type) { return path + "_" + type; //$NON-NLS-1$ } }