AI 146600: am: CL 146597 am: CL 146595 ADT #1794560: prevent from loading more than one SDK at once.
  Original author: raphael
  Merged from: //branches/cupcake/...
  Original author: android-build

Automated import of CL 146600
diff --git a/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AdtPlugin.java b/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AdtPlugin.java
index 4a7a002..b5cee81 100644
--- a/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AdtPlugin.java
+++ b/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AdtPlugin.java
@@ -177,6 +177,8 @@
     private ArrayList<ITargetChangeListener> mTargetChangeListeners =
             new ArrayList<ITargetChangeListener>();
 
+    protected boolean mSdkIsLoading;
+
     /**
      * Custom PrintStream for Dx output. This class overrides the method
      * <code>println()</code> and adds the standard output tag with the
@@ -1010,7 +1012,15 @@
             @SuppressWarnings("unchecked")
             @Override
             protected IStatus run(IProgressMonitor monitor) {
-                try {                    
+                try {
+
+                    if (mSdkIsLoading) {
+                        return new Status(IStatus.WARNING, PLUGIN_ID,
+                                "An Android SDK is already being loaded. Please try again later.");
+                    }
+                    
+                    mSdkIsLoading = true;
+                    
                     SubMonitor progress = SubMonitor.convert(monitor,
                             "Initialize SDK Manager", 100);
                     
@@ -1093,6 +1103,7 @@
                         }
                     });
                 } finally {
+                    mSdkIsLoading = false;
                     if (monitor != null) {
                         monitor.done();
                     }