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");
}
}
}
}
Aggregations