org.eclipse.ui.internal.StartupThreading Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of workbench Show documentation
Show all versions of workbench Show documentation
This plug-in contains the bulk of the Workbench implementation, and depends on JFace, SWT, and Core Runtime. It cannot be used independently from org.eclipse.ui. Workbench client plug-ins should not depend directly on this plug-in.
The newest version!
/*******************************************************************************
* Copyright (c) 2007 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
******************************************************************************/
package org.eclipse.ui.internal;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.WorkbenchException;
import org.eclipse.ui.internal.misc.StatusUtil;
/**
* @since 3.3
*
*/
public final class StartupThreading {
static Workbench workbench;
public static abstract class StartupRunnable implements Runnable {
private Throwable throwable;
public final void run() {
try {
runWithException();
} catch (Throwable t) {
this.throwable = t;
}
}
public abstract void runWithException() throws Throwable;
public Throwable getThrowable() {
return throwable;
}
}
static void setWorkbench(Workbench wb) {
workbench = wb;
}
public static void runWithWorkbenchExceptions(StartupRunnable r)
throws WorkbenchException {
workbench.getDisplay().syncExec(r);
Throwable throwable = r.getThrowable();
if (throwable != null) {
if (throwable instanceof Error) {
throw (Error) throwable;
} else if (throwable instanceof RuntimeException) {
throw (RuntimeException) throwable;
} else if (throwable instanceof WorkbenchException) {
throw (WorkbenchException) throwable;
} else {
throw new WorkbenchException(StatusUtil.newStatus(
WorkbenchPlugin.PI_WORKBENCH, throwable));
}
}
}
public static void runWithPartInitExceptions(StartupRunnable r)
throws PartInitException {
workbench.getDisplay().syncExec(r);
Throwable throwable = r.getThrowable();
if (throwable != null) {
if (throwable instanceof Error) {
throw (Error) throwable;
} else if (throwable instanceof RuntimeException) {
throw (RuntimeException) throwable;
} else if (throwable instanceof WorkbenchException) {
throw (PartInitException) throwable;
} else {
throw new PartInitException(StatusUtil.newStatus(
WorkbenchPlugin.PI_WORKBENCH, throwable));
}
}
}
public static void runWithThrowable(StartupRunnable r) throws Throwable {
workbench.getDisplay().syncExec(r);
Throwable throwable = r.getThrowable();
if (throwable != null) {
throw throwable;
}
}
public static void runWithoutExceptions(StartupRunnable r)
throws RuntimeException {
workbench.getDisplay().syncExec(r);
Throwable throwable = r.getThrowable();
if (throwable != null) {
if (throwable instanceof Error) {
throw (Error) throwable;
} else if (throwable instanceof RuntimeException) {
throw (RuntimeException) throwable;
} else {
throw new RuntimeException(throwable);
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy