Package org.gudy.azureus2.ui.swt.shells

Source Code of org.gudy.azureus2.ui.swt.shells.CoreWaiterSWT

package org.gudy.azureus2.ui.swt.shells;

import org.eclipse.swt.widgets.Shell;

import org.gudy.azureus2.core3.util.AERunnable;
import org.gudy.azureus2.core3.util.AEThread2;
import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.ui.swt.Utils;

import com.aelitis.azureus.core.AzureusCore;
import com.aelitis.azureus.core.AzureusCoreFactory;
import com.aelitis.azureus.core.AzureusCoreRunningListener;
import com.aelitis.azureus.ui.swt.UIFunctionsManagerSWT;

public class CoreWaiterSWT
{
  private static boolean DEBUG = false;

  public enum TriggerInThread {
    SWT_THREAD, ANY_THREAD, NEW_THREAD
  }

  private static Shell shell;

  public static void waitForCoreRunning(final AzureusCoreRunningListener l) {
    waitForCore(TriggerInThread.SWT_THREAD, l);
  }

  public static void waitForCore(final TriggerInThread triggerInThread,
      final AzureusCoreRunningListener l) {
    AzureusCoreFactory.addCoreRunningListener(new AzureusCoreRunningListener() {
      public void azureusCoreRunning(final AzureusCore core) {
        if (triggerInThread == TriggerInThread.ANY_THREAD) {
          l.azureusCoreRunning(core);
        } else if (triggerInThread == TriggerInThread.NEW_THREAD) {
          new AEThread2("CoreWaiterInvoke", true) {
            public void run() {
              l.azureusCoreRunning(core);
            }
          }.start();
        }
        Utils.execSWTThread(new AERunnable() {
          public void runSupport() {
            // TODO: Need to detect cancel (can't rely on shell status since it may never open)
            if (shell != null && !shell.isDisposed()) {
              shell.dispose();
              shell = null;
            }

            if (triggerInThread == TriggerInThread.SWT_THREAD) {
              l.azureusCoreRunning(core);
            }
          }
        });
      }
    });

    if (!AzureusCoreFactory.isCoreRunning()) {
      if (DEBUG) {
        System.out.println("NOT AVAIL FOR " + Debug.getCompressedStackTrace());
      }
      Utils.execSWTThread(new AERunnable() {
        public void runSupport() {
          showWaitWindow();
        }
      });
    } else if (DEBUG) {
      System.out.println("NO NEED TO WAIT.. CORE AVAIL! "
          + Debug.getCompressedStackTrace());
    }

  }

  protected static void showWaitWindow() {
    if (shell != null && !shell.isDisposed()) {
      shell.forceActive();
      return;
    }
   
    shell = UIFunctionsManagerSWT.getUIFunctionsSWT().showCoreWaitDlg();
  }
}
TOP

Related Classes of org.gudy.azureus2.ui.swt.shells.CoreWaiterSWT

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.