/**
* Copyright (c) 2005-2013 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package org.python.pydev.shared_ui.utils;
import org.eclipse.swt.widgets.Display;
import org.python.pydev.shared_core.SharedCorePlugin;
public class RunInUiThread {
public static void sync(Runnable r) {
if (SharedCorePlugin.inTestMode()) {
//Executing in tests: run it now!
r.run();
return;
}
if (Display.getCurrent() == null) {
Display.getDefault().syncExec(r);
} else {
//We already have a hold to it
r.run();
}
}
public static void async(Runnable r) {
async(r, false);
}
public static void async(Runnable r, boolean runNowIfInUiThread) {
if (SharedCorePlugin.inTestMode()) {
//Executing in tests: run it now!
r.run();
return;
}
Display current = Display.getCurrent();
if (current == null) {
Display.getDefault().asyncExec(r);
} else {
if (runNowIfInUiThread) {
r.run();
} else {
current.asyncExec(r);
}
}
}
}