/******************************************************************************* * Copyright (c) 2006, 2016 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.debug.ui.contexts; import org.eclipse.core.runtime.ISafeRunnable; import org.eclipse.core.runtime.ListenerList; import org.eclipse.core.runtime.SafeRunner; import org.eclipse.debug.internal.ui.DebugUIPlugin; import org.eclipse.ui.IWorkbenchPart; /** * Abstract implementation of a debug context provider. *
* Clients implementing context providers should subclass this class. *
* @since 3.3 */ public abstract class AbstractDebugContextProvider implements IDebugContextProvider { /** * Event listeners */ private ListenerListnull
*/
private IWorkbenchPart fPart;
/**
* Constructs a context provider for the specified part, possibly null
.
*
* @param part workbench part or null
*/
public AbstractDebugContextProvider(IWorkbenchPart part) {
fPart = part;
}
@Override
public void addDebugContextListener(IDebugContextListener listener) {
fListeners.add(listener);
}
@Override
public IWorkbenchPart getPart() {
return fPart;
}
@Override
public void removeDebugContextListener(IDebugContextListener listener) {
fListeners.remove(listener);
}
/**
* Fires the given context event to all registered listeners.
*
* @param event debug context event
*/
protected void fire(final DebugContextEvent event) {
for (IDebugContextListener iDebugContextListener : fListeners) {
final IDebugContextListener listener = iDebugContextListener;
SafeRunner.run(new ISafeRunnable() {
@Override
public void run() throws Exception {
listener.debugContextChanged(event);
}
@Override
public void handleException(Throwable exception) {
DebugUIPlugin.log(exception);
}
});
}
}
}