@@ -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 ()) {
@@ -403,11 +405,17 @@ public static AndroidSDK load(boolean checkEnvSDK, Frame editor) throws IOExcept
403
405
404
406
static public AndroidSDK locate (final Frame window , final AndroidMode androidMode )
405
407
throws BadSDKException , CancelException , IOException {
406
-
408
+ backOptionSelected = false ;
409
+
407
410
if (loadError == SKIP_ENV_SDK ) {
408
411
// The user does not want to use the environment SDK, so let's simply
409
412
// download a new one to the sketchbook folder.
410
- return download (window , androidMode );
413
+ AndroidSDK sdk = download (window , androidMode );
414
+ if (sdk ==null && backOptionSelected ){
415
+ return locate (window ,androidMode );
416
+ } else {
417
+ return sdk ;
418
+ }
411
419
}
412
420
413
421
// At this point, there is no ANDROID_SDK env variable, no SDK in the preferences,
@@ -416,7 +424,11 @@ static public AndroidSDK locate(final Frame window, final AndroidMode androidMod
416
424
int result = showLocateDialog (window );
417
425
418
426
if (result == JOptionPane .YES_OPTION ) {
419
- return download (window , androidMode );
427
+ AndroidSDK sdk = download (window , androidMode );
428
+ if (sdk ==null && backOptionSelected ){
429
+ return locate (window ,androidMode );
430
+ }
431
+ return sdk ;
420
432
} else if (result == JOptionPane .NO_OPTION ) {
421
433
// User will manually select folder containing SDK folder
422
434
File folder = selectFolder (AndroidMode .getTextString ("android_sdk.dialog.select_sdk_folder" ), null , window );
@@ -448,9 +460,13 @@ static public boolean locateSysImage(final Frame window,
448
460
static public AndroidSDK download (final Frame editor , final AndroidMode androidMode )
449
461
throws BadSDKException , CancelException {
450
462
final SDKDownloader downloader = new SDKDownloader (editor );
451
- downloader .run (); // This call blocks until the SDK download complete, or user cancels.
452
-
453
- if (downloader .cancelled ()) {
463
+ //downloader.run(); // This call blocks until the SDK download complete, or user cancels.
464
+
465
+ if (downloader .isGoBack ()){
466
+ backOptionSelected = true ;
467
+ return null ;
468
+ }
469
+ else if (downloader .cancelled ()) {
454
470
throw new CancelException (AndroidMode .getTextString ("android_sdk.error.sdk_download_canceled" ));
455
471
}
456
472
AndroidSDK sdk = downloader .getSDK ();
0 commit comments