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) {
ErlLogger.debug("Listener #" + (i + 1) + "=" + listener.toString());//$NON-NLS-1$//$NON-NLS-2$
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) {
ErlLogger.debug(" -> " + (System.currentTimeMillis() - start) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$
}