Search in sources :

Example 1 with ElementChangedEvent

use of org.erlide.engine.model.root.ElementChangedEvent in project erlide_eclipse by erlang.

the class ErlModel method notifyListeners.

public void notifyListeners(final IErlElementDelta deltaToNotify, final int eventType, final IElementChangedListener[] listeners, final int[] listenerMask, final int listenerCount) {
    final ElementChangedEvent extraEvent = new ElementChangedEvent(deltaToNotify, eventType);
    for (int i = 0; i < listenerCount; i++) {
        if (listenerMask == null || (listenerMask[i] & eventType) != 0) {
            final IElementChangedListener listener = listeners[i];
            long start = -1;
            if (ModelConfig.verbose) {
                // $NON-NLS-1$//$NON-NLS-2$
                ErlLogger.debug("Listener #" + (i + 1) + "=" + listener.toString());
                start = System.currentTimeMillis();
            }
            // wrap callbacks with Safe runnable for subsequent listeners to
            // be called
            // when some are causing grief
            SafeRunner.run(new ISafeRunnable() {

                @Override
                public void handleException(final Throwable exception) {
                    // CCorePlugin.log(exception, "Exception occurred in
                    // listener of C
                    // element change notification"); //$NON-NLS-1$
                    ErlLogger.error(exception);
                }

                @Override
                public void run() throws Exception {
                    listener.elementChanged(extraEvent);
                }
            });
            if (ModelConfig.verbose) {
                // $NON-NLS-1$ //$NON-NLS-2$
                ErlLogger.debug(" -> " + (System.currentTimeMillis() - start) + "ms");
            }
        }
    }
}
Also used : IElementChangedListener(org.erlide.engine.model.root.IElementChangedListener) ISafeRunnable(org.eclipse.core.runtime.ISafeRunnable) CoreException(org.eclipse.core.runtime.CoreException) ErlModelException(org.erlide.engine.model.ErlModelException) ElementChangedEvent(org.erlide.engine.model.root.ElementChangedEvent)

Aggregations

CoreException (org.eclipse.core.runtime.CoreException)1 ISafeRunnable (org.eclipse.core.runtime.ISafeRunnable)1 ErlModelException (org.erlide.engine.model.ErlModelException)1 ElementChangedEvent (org.erlide.engine.model.root.ElementChangedEvent)1 IElementChangedListener (org.erlide.engine.model.root.IElementChangedListener)1