From 39726835830c8a14f6d4c3b447846790a166afff Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Sat, 28 Aug 2021 18:22:21 +0800 Subject: [PATCH] feat: allow cancel logging task. --- .../hmcl/ui/account/AddAccountPane.java | 18 +++++++++++------- .../resources/assets/fxml/account-add.fxml | 2 +- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AddAccountPane.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AddAccountPane.java index f7360ae01..9b33c1e66 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AddAccountPane.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AddAccountPane.java @@ -33,10 +33,7 @@ import javafx.scene.Node; import javafx.scene.control.Hyperlink; import javafx.scene.control.Label; import javafx.scene.image.ImageView; -import javafx.scene.layout.BorderPane; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Region; -import javafx.scene.layout.StackPane; +import javafx.scene.layout.*; import org.jackhuang.hmcl.auth.*; import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorDownloadException; import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer; @@ -47,6 +44,7 @@ import org.jackhuang.hmcl.game.TexturesLoader; import org.jackhuang.hmcl.setting.Accounts; import org.jackhuang.hmcl.task.Schedulers; import org.jackhuang.hmcl.task.Task; +import org.jackhuang.hmcl.task.TaskExecutor; import org.jackhuang.hmcl.ui.Controllers; import org.jackhuang.hmcl.ui.FXUtils; import org.jackhuang.hmcl.ui.construct.*; @@ -94,8 +92,11 @@ public class AddAccountPane extends StackPane { private SpinnerPane acceptPane; @FXML private HBox linksContainer; + @FXML + private GridPane body; private final TabHeader tabHeader; + private TaskExecutor loginTask; private ListProperty links = new SimpleListProperty<>(); @@ -242,14 +243,14 @@ public class AddAccountPane extends StackPane { acceptPane.showSpinner(); lblCreationWarning.setText(""); - setDisable(true); + body.setDisable(true); String username = txtUsername.getText(); String password = txtPassword.getText(); AccountFactory factory = ((AccountFactory) tabHeader.getSelectionModel().getSelectedItem().getUserData()); Object additionalData = getAuthAdditionalData(); - Task.supplyAsync(() -> factory.create(new Selector(), username, password, additionalData)) + loginTask = Task.supplyAsync(() -> factory.create(new Selector(), username, password, additionalData)) .whenComplete(Schedulers.javafx(), account -> { int oldIndex = Accounts.getAccounts().indexOf(account); if (oldIndex == -1) { @@ -274,11 +275,14 @@ public class AddAccountPane extends StackPane { } setDisable(false); acceptPane.hideSpinner(); - }).start(); + }).executor(true); } @FXML private void onCreationCancel() { + if (loginTask != null) { + loginTask.cancel(); + } fireEvent(new DialogCloseEvent()); } diff --git a/HMCL/src/main/resources/assets/fxml/account-add.fxml b/HMCL/src/main/resources/assets/fxml/account-add.fxml index b5ad75f90..eee2b10de 100644 --- a/HMCL/src/main/resources/assets/fxml/account-add.fxml +++ b/HMCL/src/main/resources/assets/fxml/account-add.fxml @@ -16,7 +16,7 @@