From 454cc1e702b87af8295f288b89093466bcf91bee Mon Sep 17 00:00:00 2001 From: Haowei Wen Date: Wed, 17 Feb 2021 02:40:32 +0800 Subject: [PATCH] feat: show spinner while refreshing account --- .../jackhuang/hmcl/ui/account/AccountListItem.java | 6 +----- .../hmcl/ui/account/AccountListItemSkin.java | 11 +++++++++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AccountListItem.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AccountListItem.java index f8e4eb043..520ea3e68 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AccountListItem.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AccountListItem.java @@ -100,7 +100,7 @@ public class AccountListItem extends RadioButton { return new AccountListItemSkin(this); } - private Task refreshAsync() { + public Task refreshAsync() { return Task.runAsync(() -> { account.clearCache(); try { @@ -121,10 +121,6 @@ public class AccountListItem extends RadioButton { }); } - public void refresh() { - refreshAsync().whenComplete(e -> {}).start(); - } - public ObservableBooleanValue canUploadSkin() { if (account instanceof YggdrasilAccount) { if (account instanceof AuthlibInjectorAccount) { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AccountListItemSkin.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AccountListItemSkin.java index 45785a01b..0d0a84b7e 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AccountListItemSkin.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AccountListItemSkin.java @@ -89,11 +89,18 @@ public class AccountListItemSkin extends SkinBase { right.setAlignment(Pos.CENTER_RIGHT); JFXButton btnRefresh = new JFXButton(); - btnRefresh.setOnMouseClicked(e -> skinnable.refresh()); + SpinnerPane spinnerRefresh = new SpinnerPane(); + btnRefresh.setOnMouseClicked(e -> { + spinnerRefresh.showSpinner(); + skinnable.refreshAsync() + .whenComplete(ex -> spinnerRefresh.hideSpinner()) + .start(); + }); btnRefresh.getStyleClass().add("toggle-icon4"); btnRefresh.setGraphic(SVG.refresh(Theme.blackFillBinding(), -1, -1)); runInFX(() -> FXUtils.installFastTooltip(btnRefresh, i18n("button.refresh"))); - right.getChildren().add(btnRefresh); + spinnerRefresh.setContent(btnRefresh); + right.getChildren().add(spinnerRefresh); JFXButton btnUpload = new JFXButton(); SpinnerPane spinnerUpload = new SpinnerPane();