X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Futil%2FSingleSWTRequest.java;h=9ffa77282fd79653c29e3b462156f7b87762e1a2;hb=5995c2c9f891ae852a40b4c4736b090d514e7c0a;hp=fa4d55832f18c9bd331f69e6d08637c6e40a6210;hpb=0eb525202d3c871a2a20f789af1728248f3cff11;p=Mograsim.git diff --git a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/util/SingleSWTRequest.java b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/util/SingleSWTRequest.java index fa4d5583..9ffa7728 100644 --- a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/util/SingleSWTRequest.java +++ b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/util/SingleSWTRequest.java @@ -2,25 +2,31 @@ package net.mograsim.plugin.util; import java.util.concurrent.atomic.AtomicBoolean; -import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.PlatformUI; +/** + * A utility class that requests the asynchronous execution of a Runnable in the SWT Thread. Making a new request before the old one is + * processed will override the old request. + */ public class SingleSWTRequest { private AtomicBoolean waiting = new AtomicBoolean(); + private Runnable request; public void request(Runnable request) { synchronized (waiting) { + this.request = request; if (!waiting.get()) { waiting.set(true); - Display.getDefault().asyncExec(() -> + PlatformUI.getWorkbench().getDisplay().asyncExec(() -> { synchronized (waiting) { waiting.set(false); - request.run(); + this.request.run(); } }); }