@@ -92,6 +92,8 @@ class AndroidSDK {
92
92
private static final int INVALID_SDK = 3 ;
93
93
private static int loadError = NO_ERROR ;
94
94
95
+ private static boolean backOptionSelected ;
96
+
95
97
public AndroidSDK (File folder ) throws BadSDKException , IOException {
96
98
this .folder = folder ;
97
99
if (!folder .exists ()) {
@@ -411,11 +413,17 @@ public static AndroidSDK load(boolean checkEnvSDK, Frame editor) throws IOExcept
411
413
412
414
static public AndroidSDK locate (final Frame window , final AndroidMode androidMode )
413
415
throws BadSDKException , CancelException , IOException {
414
-
416
+ backOptionSelected = false ;
417
+
415
418
if (loadError == SKIP_ENV_SDK ) {
416
419
// The user does not want to use the environment SDK, so let's simply
417
420
// download a new one to the sketchbook folder.
418
- return download (window , androidMode );
421
+ AndroidSDK sdk = download (window , androidMode );
422
+ if (sdk ==null && backOptionSelected ){
423
+ return locate (window ,androidMode );
424
+ } else {
425
+ return sdk ;
426
+ }
419
427
}
420
428
421
429
// At this point, there is no ANDROID_SDK env variable, no SDK in the preferences,
@@ -424,7 +432,11 @@ static public AndroidSDK locate(final Frame window, final AndroidMode androidMod
424
432
int result = showLocateDialog (window );
425
433
426
434
if (result == JOptionPane .YES_OPTION ) {
427
- return download (window , androidMode );
435
+ AndroidSDK sdk = download (window , androidMode );
436
+ if (sdk ==null && backOptionSelected ){
437
+ return locate (window ,androidMode );
438
+ }
439
+ return sdk ;
428
440
} else if (result == JOptionPane .NO_OPTION ) {
429
441
// User will manually select folder containing SDK folder
430
442
File folder = selectFolder (AndroidMode .getTextString ("android_sdk.dialog.select_sdk_folder" ), null , window );
@@ -456,9 +468,13 @@ static public boolean locateSysImage(final Frame window,
456
468
static public AndroidSDK download (final Frame editor , final AndroidMode androidMode )
457
469
throws BadSDKException , CancelException {
458
470
final SDKDownloader downloader = new SDKDownloader (editor );
459
- downloader .run (); // This call blocks until the SDK download complete, or user cancels.
460
-
461
- if (downloader .cancelled ()) {
471
+ //downloader.run(); // This call blocks until the SDK download complete, or user cancels.
472
+
473
+ if (downloader .isGoBack ()){
474
+ backOptionSelected = true ;
475
+ return null ;
476
+ }
477
+ else if (downloader .cancelled ()) {
462
478
throw new CancelException (AndroidMode .getTextString ("android_sdk.error.sdk_download_canceled" ));
463
479
}
464
480
AndroidSDK sdk = downloader .getSDK ();
0 commit comments