}
public void run( boolean fork, boolean cancelable, final IRunnableWithProgress request )
throws InvocationTargetException, InterruptedException {
ProgressMonitorPart progressMonitor = getProgressMonitor(getShell().getChildren());
if (progressMonitor instanceof ProgressMonitorPart) {
ProgressMonitorPart part = (ProgressMonitorPart) progressMonitor;
if (Display.getCurrent() != null)
part.setVisible(true);
try {
setEnablement(container.buttonBar, false);
if (fork) {
PlatformGIS.run(request, part);
} else {
PlatformGIS.runBlockingOperation(request, part);
}
} finally {
setEnablement(container.buttonBar, true);
if (Display.getCurrent() != null && !part.isDisposed())
part.setVisible(false);
}
} else {
if (fork) {
PlatformGIS.run(request);
} else {