Skip to content

Commit 4fdae60

Browse files
[FIX]AlwaysOnTop Dialog,Add Back Option
1 parent dac571e commit 4fdae60

File tree

2 files changed

+45
-12
lines changed

2 files changed

+45
-12
lines changed

mode/src/processing/mode/android/AndroidSDK.java

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ class AndroidSDK {
9292
private static final int INVALID_SDK = 3;
9393
private static int loadError = NO_ERROR;
9494

95+
private static boolean backOptionSelected;
96+
9597
public AndroidSDK(File folder) throws BadSDKException, IOException {
9698
this.folder = folder;
9799
if (!folder.exists()) {
@@ -403,11 +405,17 @@ public static AndroidSDK load(boolean checkEnvSDK, Frame editor) throws IOExcept
403405

404406
static public AndroidSDK locate(final Frame window, final AndroidMode androidMode)
405407
throws BadSDKException, CancelException, IOException {
406-
408+
backOptionSelected = false;
409+
407410
if (loadError == SKIP_ENV_SDK) {
408411
// The user does not want to use the environment SDK, so let's simply
409412
// 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+
}
411419
}
412420

413421
// 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
416424
int result = showLocateDialog(window);
417425

418426
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;
420432
} else if (result == JOptionPane.NO_OPTION) {
421433
// User will manually select folder containing SDK folder
422434
File folder = selectFolder(AndroidMode.getTextString("android_sdk.dialog.select_sdk_folder"), null, window);
@@ -449,8 +461,12 @@ static public AndroidSDK download(final Frame editor, final AndroidMode androidM
449461
throws BadSDKException, CancelException {
450462
final SDKDownloader downloader = new SDKDownloader(editor);
451463
//downloader.run(); // This call blocks until the SDK download complete, or user cancels.
452-
453-
if (downloader.cancelled()) {
464+
465+
if (downloader.isGoBack()){
466+
backOptionSelected = true;
467+
return null;
468+
}
469+
else if (downloader.cancelled()) {
454470
throw new CancelException(AndroidMode.getTextString("android_sdk.error.sdk_download_canceled"));
455471
}
456472
AndroidSDK sdk = downloader.getSDK();

mode/src/processing/mode/android/SDKDownloader.java

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ public class SDKDownloader extends JDialog implements PropertyChangeListener {
8282
private Frame editor;
8383
private AndroidSDK sdk;
8484
private boolean cancelled;
85+
private boolean goBack;
8586

8687
private int totalSize = 0;
8788

@@ -648,7 +649,7 @@ public SDKDownloader(Frame editor) {
648649
add(new JLabel("Querying...",SwingConstants.CENTER));
649650
setSize(150,100);
650651
setLocationRelativeTo(editor);
651-
setAlwaysOnTop(true);
652+
setAlwaysOnTop(false);
652653
setVisible(true);
653654
}
654655

@@ -662,6 +663,8 @@ public void run(SDKUrlHolder downloadUrls, File sdkFolder) {
662663
public boolean cancelled() {
663664
return cancelled;
664665
}
666+
667+
public boolean isGoBack() {return goBack;}
665668

666669
public AndroidSDK getSDK() {
667670
return sdk;
@@ -680,19 +683,20 @@ private void addPackage(GridBagConstraints gc, int gridy, JPanel packagesPanel,
680683
}
681684

682685
private void createInitLayout(SDKUrlHolder downloadUrls) {
686+
goBack = false;
683687
Container outer = getContentPane();
684688
outer.removeAll();
685689
final SDKUrlHolder urlHolder = downloadUrls;
686690

687691
outer.setLayout(new BorderLayout());
688692

689693
JPanel mainPanel = new JPanel();
690-
mainPanel.setPreferredSize(Toolkit.zoom(250,225));
694+
mainPanel.setPreferredSize(Toolkit.zoom(300,225));
691695
outer.add(mainPanel,BorderLayout.EAST);
692696

693-
//List Packages to be downloaded here:
697+
//List Packages to be downloaded here------------------------------------------
694698
JPanel packagesPanel = new JPanel();
695-
packagesPanel.setPreferredSize(Toolkit.zoom(250,125));
699+
packagesPanel.setPreferredSize(Toolkit.zoom(300,125));
696700
packagesPanel.setAlignmentX(RIGHT_ALIGNMENT);
697701
Border border = BorderFactory.createLineBorder(Color.black,1,true);
698702
packagesPanel.setBorder(BorderFactory.createTitledBorder(border,"Packages to download: "));
@@ -711,7 +715,7 @@ private void createInitLayout(SDKUrlHolder downloadUrls) {
711715
//faddPackage(gc,4,packagesPanel,"Android Emulator: ",downloadUrls.emulatorVersion);
712716
if(Platform.getName()!="linux") addPackage(gc,5,packagesPanel,"Android Build Tools: ",downloadUrls.haxmVersion);
713717

714-
//SDK_Path selection Panel
718+
//SDK_Path selection Panel---------------------------------------
715719
JPanel downloadPathPanel = new JPanel();
716720
downloadPathPanel.setLayout(new BorderLayout());
717721
JLabel pathLabel = new JLabel("Installation Path: ");
@@ -744,9 +748,21 @@ public void actionPerformed(ActionEvent e) {
744748
downloadPathPanel.add(selectPathButton,BorderLayout.EAST);
745749
mainPanel.add(downloadPathPanel);
746750

747-
//Buttons Panel on the bottom
751+
//Buttons Panel on the bottom-------------------------------------------
748752
JPanel buttons = new JPanel();
749753
buttons.setAlignmentX(LEFT_ALIGNMENT);
754+
755+
JButton backButton = new JButton("Back");
756+
backButton.setPreferredSize(dim);
757+
backButton.addActionListener(new ActionListener() {
758+
@Override
759+
public void actionPerformed(ActionEvent e) {
760+
dispose();
761+
goBack = true;
762+
}
763+
});
764+
buttons.add(backButton);
765+
750766
JButton continueButton = new JButton("Continue");
751767
continueButton.setPreferredSize(dim);
752768
continueButton.addActionListener(new ActionListener() {
@@ -766,11 +782,12 @@ public void actionPerformed(ActionEvent e) {
766782
@Override
767783
public void actionPerformed(ActionEvent e) {
768784
dispose();
785+
cancelled = true;
769786
}
770787
});
771788
mainPanel.add(buttons);
772789

773-
//The side panel with image Icon
790+
//The side panel with image Icon-------------------------------------------
774791
JPanel sidePanel = new JPanel(new BorderLayout());
775792
sidePanel.setPreferredSize(Toolkit.zoom(100,0));
776793
sidePanel.setBackground(Color.white);

0 commit comments

Comments
 (0)