protected void unregister(CoreEventRegistration reg) { ICoreEventSource source = reg.getSource(); if (source == null) { unregisterGlobalRegistration(reg); return; } if (managers == null || managers.isEmpty()) return; CoreEventManager manager = managers.get(source); if (manager == null) return; manager.remove(reg); if (manager.isEmpty()) { managers.remove(source); } if (managers.isEmpty()) { managers = null; } if (reg.isOnce()) { String eventType = reg.getEventType(); ICoreEventListener listener = reg.getListener(); dispatch(source, eventType, new CoreEvent(source, eventType, listener, null), false); } }
private void unregisterGlobalRegistration(CoreEventRegistration reg) { if (globalManager != null) { globalManager.remove(reg); } if (globalManager.isEmpty()) { globalManager = null; } }
private void dispatchGlobal(String eventType, CoreEvent event, boolean notifyOnceListeners) { if (globalManager != null) { if (notifyOnceListeners) { globalManager.dispatchCoreEvent(eventType, event); } else { globalManager.dispatchCoreEvent(eventType, event, CoreEventRegistrationList.ONLY_NORMAL); } } if (getParent() != null && getParent() instanceof CoreEventSupport) { ((CoreEventSupport) getParent()).dispatchGlobal(eventType, event, notifyOnceListeners); } }
private ICoreEventRegistration registerListener( ICoreEventSource source, String eventType, ICoreEventListener listener, boolean once) { CoreEventRegistration reg = new CoreEventRegistration(this, source, eventType, listener, once); if (managers == null) managers = new HashMap<ICoreEventSource, CoreEventManager>(); CoreEventManager manager = managers.get(source); if (manager == null) { manager = new CoreEventManager(); managers.put(source, manager); } manager.add(reg); return reg; }
private void dispatchBySource( ICoreEventSource source, String eventType, CoreEvent event, boolean notifyOnceListeners) { if (managers == null || managers.isEmpty()) return; CoreEventManager manager = managers.get(source); if (manager == null || manager.isEmpty()) return; if (notifyOnceListeners) { manager.dispatchCoreEvent(eventType, event); } else { manager.dispatchCoreEvent(eventType, event, CoreEventRegistrationList.ONLY_NORMAL); } }
private ICoreEventRegistration registerGlobalListener( String eventType, ICoreEventListener listener, boolean once) { CoreEventRegistration reg = new CoreEventRegistration(this, null, eventType, listener, once); if (globalManager == null) globalManager = new CoreEventManager(); globalManager.add(reg); return reg; }
public boolean hasOnceListeners(ICoreEventSource source, String eventType) { if (managers == null) return false; CoreEventManager manager = managers.get(source); return manager != null && manager.hasOnceListeners(eventType); }