X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.utils.thread.swt%2Fsrc%2Forg%2Fsimantics%2Futils%2Fthreads%2FSWTThread.java;h=07102a102cd8b861210a31d9ec26de60478b8c6c;hb=f570dda5c23cb7a4e466c607c21fe8eed3b67ca2;hp=b5bb6722c43e8531dc42c80f32ac5043846752da;hpb=aaa119360108a77eb4fcf6f2ade0591cbfaf0415;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.utils.thread.swt/src/org/simantics/utils/threads/SWTThread.java b/bundles/org.simantics.utils.thread.swt/src/org/simantics/utils/threads/SWTThread.java index b5bb6722c..07102a102 100644 --- a/bundles/org.simantics.utils.thread.swt/src/org/simantics/utils/threads/SWTThread.java +++ b/bundles/org.simantics.utils.thread.swt/src/org/simantics/utils/threads/SWTThread.java @@ -22,25 +22,32 @@ import org.eclipse.swt.widgets.Widget; public class SWTThread implements IThreadWorkQueue, Executor { - final Display display; + private final Display display; + private final boolean executeAsync; + + public static IThreadWorkQueue getThreadAccess(Display display, boolean executeAsync) + { + return new SWTThread(display, executeAsync); + } public static IThreadWorkQueue getThreadAccess(Display display) { - return new SWTThread(display); + return getThreadAccess(display, false); } public static IThreadWorkQueue getThreadAccess(Widget widget) { - return new SWTThread(widget.getDisplay()); + return new SWTThread(widget.getDisplay(), false); } public static IThreadWorkQueue getThreadAccess() { - return new SWTThread(Display.getDefault()); + return new SWTThread(Display.getDefault(), false); } - SWTThread(Display display) + SWTThread(Display display, boolean executeAsync) { this.display = display; + this.executeAsync = executeAsync; } @Override @@ -87,6 +94,7 @@ public class SWTThread implements IThreadWorkQueue, Executor { @Override public void execute(Runnable command) { - syncExec(command); + if (executeAsync) asyncExec(command); + else syncExec(command); } }