From 7e8cc5fe6c09d70f0f37e70a5faa325e205dd5c8 Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Thu, 25 Apr 2019 11:16:59 +0800 Subject: [PATCH] Fix #547 --- .../hmcl/ui/download/UpdateInstallerWizardProvider.java | 7 +++++++ .../org/jackhuang/hmcl/ui/wizard/WizardController.java | 7 ++++++- .../java/org/jackhuang/hmcl/ui/wizard/WizardProvider.java | 3 +++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/UpdateInstallerWizardProvider.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/UpdateInstallerWizardProvider.java index 655ec03d4..f7285482b 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/UpdateInstallerWizardProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/UpdateInstallerWizardProvider.java @@ -85,4 +85,11 @@ public final class UpdateInstallerWizardProvider implements WizardProvider { public boolean cancel() { return true; } + + @Override + public boolean cancelIfCannotGoBack() { + // VersionsPage will call wizardController.onPrev(cleanUp = true) when list is empty. + // So we cancel this wizard when VersionPage calls the method. + return true; + } } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/wizard/WizardController.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/wizard/WizardController.java index b3bb62ed6..816dc511e 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/wizard/WizardController.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/wizard/WizardController.java @@ -83,7 +83,12 @@ public class WizardController implements Navigation { @Override public void onPrev(boolean cleanUp) { if (!canPrev()) { - throw new IllegalStateException("Cannot go backward since this is the back page. Pages: " + pages); + if (provider.cancelIfCannotGoBack()) { + onCancel(); + return; + } else { + throw new IllegalStateException("Cannot go backward since this is the back page. Pages: " + pages); + } } Node page = pages.pop(); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/wizard/WizardProvider.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/wizard/WizardProvider.java index fba16613e..bad9e5d9a 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/wizard/WizardProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/wizard/WizardProvider.java @@ -26,6 +26,9 @@ public interface WizardProvider { Object finish(Map settings); Node createPage(WizardController controller, int step, Map settings); boolean cancel(); + default boolean cancelIfCannotGoBack() { + return false; + } interface FailureCallback { void onFail(Map settings, Exception exception, Runnable next);