Bug 29163 SafeRunnable needs to be accessible in JFace
We need to be able to access the SafeRunnable in JFace in order that some error protection can be added to preferences and properties dialogs.
bundles/org.eclipse.ui.workbench/extensions/org/eclipse/jface/operation/ModalContext.java
* @exception InterruptedException if the operation detects a request to cancel, 
 *  using <code>IProgressMonitor.isCanceled()</code>, it should exit by throwing 
 *  <code>InterruptedException</code>; this method propagates the exception
 */
public static void run(IRunnableWithProgress operation, boolean fork, IProgressMonitor monitor, Display display) throws InvocationTargetException, InterruptedException {
	Assert.isTrue(operation != null && monitor != null);
		
	modalLevel++;
	try {
		if (monitor != null)
			monitor.setCanceled(false);
		
		if (!fork || !runInSeparateThread) {
			runInCurrentThread(operation, monitor);
		} else {
			ModalContextThread t = getCurrentModalContextThread();
			if (t != null) {
				Assert.isTrue(canProgressMonitorBeUsed(monitor, t.progressMonitor));
				runInCurrentThread(operation, monitor);
			} else {
				t = new ModalContextThread(operation, monitor, display);
				t.start();
				t.block();
				Throwable throwable= t.throwable;
				if (throwable != null) {
					if (debug
						&& !(throwable instanceof InterruptedException)
						&& !(throwable instanceof OperationCanceledException)) {
						System.err.println("Exception in modal context operation:"); 
						throwable.printStackTrace();