JAL-3210 Barebones gradle/buildship/eclipse. See README
[jalview.git] / unused / javajs / util / JSThread.java
diff --git a/unused/javajs/util/JSThread.java b/unused/javajs/util/JSThread.java
deleted file mode 100644 (file)
index 56a500e..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-package javajs.util;
-
-import java.awt.Toolkit;
-import java.awt.event.InvocationEvent;
-
-//import javajs.J2SRequireImport;
-import javajs.api.JSFunction;
-
-
-/**
- * An abstract class that takes care of simple threading in Java or JavaScript.
- * 
- * To use it, subclass it and complete the necessary methods.
- * 
- * 
- * There are three states: INIT, LOOP, and DONE.
- * 
- * These states are passed into run1
- * 
- * 
- * @author Bob Hanson
- * 
- */
-//@J2SRequireImport(swingjs.JSToolkit.class)
-public abstract class JSThread extends Thread {
-
-       public static final int INIT = 0;
-       public static final int LOOP = 1;
-       public static final int DONE = 2;
-       
-       public static int threadCount = 0;
-
-       protected boolean isJS = /** @j2sNative true || */false;
-       
-       public JSThread() {
-               this(null, "JSThread-" + (++threadCount));
-       }
-       
-       public JSThread(String name) {
-               this(null, name);
-       }
-       
-       public JSThread(ThreadGroup group, String name) {
-               super(group, name);
-               }
-
-       @Override
-       public void run() {
-               run1(INIT);
-       }
-
-       @Override
-       public synchronized void start() {
-
-               
-               /**
-                * @j2sNative
-                * 
-                *                        Clazz.load("swingjs.JSToolkit").dispatch$O$I$I(this, 1, 0);
-                * 
-                */
-               {
-                       super.start();
-               }
-
-       }
-
-       /**
-        * thread initialization
-        * 
-        * @return false to exit thread before any looping
-        */
-       protected abstract boolean myInit();
-       
-       /**
-        * check for continuing to loop
-        * 
-        * @return true if we are to continue looping
-        */
-       protected abstract boolean isLooping();
-       
-       /**
-        * 
-        * @return false to handle sleepAndReturn yourself
-        */
-       protected abstract boolean myLoop();
-       /**
-        * what to do when the DONE state is reached
-        * 
-        */
-       protected abstract void whenDone();
-       
-       /**
-        * 
-        * @return the sleep time in milliseconds
-        */
-       protected abstract int getDelayMillis();
-       
-       /**
-        * handle an exception -- state will be set to DONE no matter what you do here
-        * 
-        * @param e
-        */
-       protected abstract void onException(Exception e);
-       
-       /**
-        * anything you want done in  try{}catch(}finally().
-        * Note that this method is not fired if we are in JavaScript
-        * mode and the normal return from sleepAndReturn() is taken. 
-        *  
-        */
-       protected abstract void doFinally();
-       
-       /**
-        * a generic method that loops until done, either in Java or JavaScript.
-        * 
-        * In JavaScript it will reenter and continue at the appropriate spot.
-        * 
-        * This method may be overridden if desired.
-        * 
-        * @see org.uwi.SimThread
-        * 
-        * @param state
-        */
-       protected void run1(int state) {
-               boolean executeFinally = true;
-               // called by thisThread.run();
-               try {
-                       while (!interrupted()) {
-                               switch (state) {
-                               case INIT:
-                                       if (!myInit())
-                                               return;
-                                       // initial code here
-                                       state = LOOP;
-                                       continue;
-                               case LOOP:
-                                       // to stop looping, return false from isLooping()
-                                       if (!isLooping()) {
-                                               state = DONE;
-                                               continue;
-                                       }
-                                       // To handle sleepAndReturn yourself, or to skip the
-                                       // sleep when desired, return false from myLoop();
-                                       // Note that doFinally must not be executed in this case.
-                                       // This is because JavaScript will do a return here
-                                       // for every loop, and Java will not.
-                                       if (myLoop() && sleepAndReturn(getDelayMillis(), state)) {
-                                               executeFinally = false;
-                                               return;                                         
-                                       }
-                                       continue;
-                               case DONE:
-                                       whenDone();
-                                       // whatever
-                                       return;
-                               }
-                       }
-               } catch (Exception e) {
-                       onException(e);
-                       state = DONE;
-               } finally {
-                       if (executeFinally)
-                               doFinally();
-               }
-               // normal exit
-       }
-
-       /**
-        * 
-        * @param r2
-        * @param state
-        * @return true if we should interrupt (i.e. JavaScript)
-        * @throws InterruptedException
-        */
-       protected boolean sleepAndReturn(final int delay, final int state)
-                       throws InterruptedException {
-               if (!isJS) {
-                       sleep(delay);
-                       return false;
-               }
-
-               // in JavaScript, we need to do this through the system event queue,
-               // which in JSToolkit takes care of all the "thread" handling.
-
-               final JSThread me = this;
-               Runnable r = new Runnable() {
-                       @Override
-                       public void run() {
-                               me.run1(state);
-                       }
-               };
-               /**
-                * @j2sNative
-                * 
-                *            setTimeout(
-                *              function() {
-                *              java.awt.Toolkit.getDefaultToolkit$().getSystemEventQueue$().postEvent$java_awt_AWTEvent(
-                *              Clazz.new_(java.awt.event.InvocationEvent.c$$O$Runnable,[me, r]))}, 
-                *              delay);
-                * 
-                */
-               {
-                       Toolkit.getDefaultToolkit().getSystemEventQueue()
-                                       .postEvent(new InvocationEvent(me, r));
-               }
-               return true;
-       }
-       
-}