@@ -0,0 +1,756 @@
+/*%0A * To change this template, choose Tools %7C Templates%0A * and open the template in the editor.%0A */%0Apackage org.micromanager.utils;%0A%0Aimport java.util.concurrent.atomic.AtomicReference;%0Aimport javax.swing.SwingUtilities;%0A%0A/**%0A *%0A * @author arthur and henry%0A */%0Apublic class GUIUpdater %7B%0A%0A   final AtomicReference%3CRunnable%3E latestTask = new AtomicReference%3CRunnable%3E();%0A%0A   /*%0A    * Post a task for running on the EDT thread. If multiple%0A    * tasks pile up, only the most recent will run.%0A    */%0A   public void post(Runnable task) %7B%0A      if (latestTask.getAndSet(task) == null) %7B%0A         SwingUtilities.invokeLater(new Runnable() %7B%0A            public void run() %7B%0A               latestTask.getAndSet(null).run();%0A            %7D%0A         %7D);%0A      %7D%0A   %7D%0A%7D%0A

Add GUIUpdater back in since some plugins depend on it