package bndtools.launch.ui.internal;
import java.util.concurrent.atomic.AtomicBoolean;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.debug.core.IStatusHandler;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.PlatformUI;
public class LaunchStatusHandler implements IStatusHandler {
public Boolean handleStatus(final IStatus status, Object source) throws CoreException {
if (status.isOK())
return true;
final AtomicBoolean result = new AtomicBoolean();
Runnable uitask = new Runnable() {
public void run() {
LaunchStatusDialog dialog = new LaunchStatusDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), status);
int response = dialog.open();
result.set(response == Window.OK);
}
};
Display display = PlatformUI.getWorkbench().getDisplay();
if (display.getThread() == Thread.currentThread())
uitask.run();
else
display.syncExec(uitask);
return result.get();
}
}