mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-14 22:37:06 -04:00
parent
0eac7b5d12
commit
9a4286620f
@ -227,7 +227,7 @@ public final class Controllers {
|
|||||||
agreementPane.setHeading(new Label(i18n("launcher.agreement")));
|
agreementPane.setHeading(new Label(i18n("launcher.agreement")));
|
||||||
agreementPane.setBody(new Label(i18n("launcher.agreement.hint")));
|
agreementPane.setBody(new Label(i18n("launcher.agreement.hint")));
|
||||||
JFXHyperlink agreementLink = new JFXHyperlink(i18n("launcher.agreement"));
|
JFXHyperlink agreementLink = new JFXHyperlink(i18n("launcher.agreement"));
|
||||||
agreementLink.setOnAction(e -> FXUtils.openLink(Metadata.EULA_URL));
|
agreementLink.setExternalLink(Metadata.EULA_URL);
|
||||||
JFXButton yesButton = new JFXButton(i18n("launcher.agreement.accept"));
|
JFXButton yesButton = new JFXButton(i18n("launcher.agreement.accept"));
|
||||||
yesButton.getStyleClass().add("dialog-accept");
|
yesButton.getStyleClass().add("dialog-accept");
|
||||||
yesButton.setOnAction(e -> {
|
yesButton.setOnAction(e -> {
|
||||||
@ -236,9 +236,7 @@ public final class Controllers {
|
|||||||
});
|
});
|
||||||
JFXButton noButton = new JFXButton(i18n("launcher.agreement.decline"));
|
JFXButton noButton = new JFXButton(i18n("launcher.agreement.decline"));
|
||||||
noButton.getStyleClass().add("dialog-cancel");
|
noButton.getStyleClass().add("dialog-cancel");
|
||||||
noButton.setOnAction(e -> {
|
noButton.setOnAction(e -> System.exit(1));
|
||||||
System.exit(1);
|
|
||||||
});
|
|
||||||
agreementPane.setActions(agreementLink, yesButton, noButton);
|
agreementPane.setActions(agreementLink, yesButton, noButton);
|
||||||
Controllers.dialog(agreementPane);
|
Controllers.dialog(agreementPane);
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,6 @@ import org.jackhuang.hmcl.auth.yggdrasil.YggdrasilService;
|
|||||||
import org.jackhuang.hmcl.setting.Accounts;
|
import org.jackhuang.hmcl.setting.Accounts;
|
||||||
import org.jackhuang.hmcl.task.Schedulers;
|
import org.jackhuang.hmcl.task.Schedulers;
|
||||||
import org.jackhuang.hmcl.task.Task;
|
import org.jackhuang.hmcl.task.Task;
|
||||||
import org.jackhuang.hmcl.ui.FXUtils;
|
|
||||||
import org.jackhuang.hmcl.ui.construct.DialogCloseEvent;
|
import org.jackhuang.hmcl.ui.construct.DialogCloseEvent;
|
||||||
import org.jackhuang.hmcl.ui.construct.JFXHyperlink;
|
import org.jackhuang.hmcl.ui.construct.JFXHyperlink;
|
||||||
import org.jackhuang.hmcl.ui.construct.RequiredValidator;
|
import org.jackhuang.hmcl.ui.construct.RequiredValidator;
|
||||||
@ -91,10 +90,10 @@ public class ClassicAccountLoginDialog extends StackPane {
|
|||||||
body.getChildren().add(linkPane);
|
body.getChildren().add(linkPane);
|
||||||
|
|
||||||
JFXHyperlink migrationLink = new JFXHyperlink(i18n("account.methods.yggdrasil.migration"));
|
JFXHyperlink migrationLink = new JFXHyperlink(i18n("account.methods.yggdrasil.migration"));
|
||||||
migrationLink.setOnAction(e -> FXUtils.openLink(YggdrasilService.PROFILE_URL));
|
migrationLink.setExternalLink(YggdrasilService.PROFILE_URL);
|
||||||
|
|
||||||
JFXHyperlink migrationHowLink = new JFXHyperlink(i18n("account.methods.yggdrasil.migration.how"));
|
JFXHyperlink migrationHowLink = new JFXHyperlink(i18n("account.methods.yggdrasil.migration.how"));
|
||||||
migrationHowLink.setOnAction(e -> FXUtils.openLink(YggdrasilService.MIGRATION_FAQ_URL));
|
migrationHowLink.setExternalLink(YggdrasilService.MIGRATION_FAQ_URL);
|
||||||
|
|
||||||
linkPane.getChildren().setAll(migrationLink, migrationHowLink);
|
linkPane.getChildren().setAll(migrationLink, migrationHowLink);
|
||||||
}
|
}
|
||||||
|
@ -512,13 +512,13 @@ public class CreateAccountPane extends JFXDialogLayout implements DialogAware {
|
|||||||
GridPane.setColumnSpan(box, 2);
|
GridPane.setColumnSpan(box, 2);
|
||||||
|
|
||||||
JFXHyperlink migrationLink = new JFXHyperlink(i18n("account.methods.yggdrasil.migration"));
|
JFXHyperlink migrationLink = new JFXHyperlink(i18n("account.methods.yggdrasil.migration"));
|
||||||
migrationLink.setOnAction(e -> FXUtils.openLink("https://aka.ms/MinecraftMigration"));
|
migrationLink.setExternalLink("https://aka.ms/MinecraftMigration");
|
||||||
|
|
||||||
JFXHyperlink migrationHowLink = new JFXHyperlink(i18n("account.methods.yggdrasil.migration.how"));
|
JFXHyperlink migrationHowLink = new JFXHyperlink(i18n("account.methods.yggdrasil.migration.how"));
|
||||||
migrationHowLink.setOnAction(e -> FXUtils.openLink("https://help.minecraft.net/hc/articles/4411173197709"));
|
migrationHowLink.setExternalLink("https://help.minecraft.net/hc/articles/4411173197709");
|
||||||
|
|
||||||
JFXHyperlink purchaseLink = new JFXHyperlink(i18n("account.methods.yggdrasil.purchase"));
|
JFXHyperlink purchaseLink = new JFXHyperlink(i18n("account.methods.yggdrasil.purchase"));
|
||||||
purchaseLink.setOnAction(e -> FXUtils.openLink(YggdrasilService.PURCHASE_URL));
|
purchaseLink.setExternalLink(YggdrasilService.PURCHASE_URL);
|
||||||
|
|
||||||
box.getChildren().setAll(migrationLink, migrationHowLink, purchaseLink);
|
box.getChildren().setAll(migrationLink, migrationHowLink, purchaseLink);
|
||||||
add(box, 0, rowIndex);
|
add(box, 0, rowIndex);
|
||||||
@ -530,7 +530,7 @@ public class CreateAccountPane extends JFXDialogLayout implements DialogAware {
|
|||||||
txtUsername.setPromptText(i18n("account.methods.offline.name.special_characters"));
|
txtUsername.setPromptText(i18n("account.methods.offline.name.special_characters"));
|
||||||
|
|
||||||
JFXHyperlink purchaseLink = new JFXHyperlink(i18n("account.methods.yggdrasil.purchase"));
|
JFXHyperlink purchaseLink = new JFXHyperlink(i18n("account.methods.yggdrasil.purchase"));
|
||||||
purchaseLink.setOnAction(e -> FXUtils.openLink(YggdrasilService.PURCHASE_URL));
|
purchaseLink.setExternalLink(YggdrasilService.PURCHASE_URL);
|
||||||
HBox linkPane = new HBox(purchaseLink);
|
HBox linkPane = new HBox(purchaseLink);
|
||||||
GridPane.setColumnSpan(linkPane, 2);
|
GridPane.setColumnSpan(linkPane, 2);
|
||||||
add(linkPane, 0, rowIndex);
|
add(linkPane, 0, rowIndex);
|
||||||
|
@ -157,7 +157,7 @@ public class RootPage extends DecoratorAnimatedPage implements DecoratorPage {
|
|||||||
multiplayerItem.setActionButtonVisible(false);
|
multiplayerItem.setActionButtonVisible(false);
|
||||||
multiplayerItem.setTitle(i18n("multiplayer"));
|
multiplayerItem.setTitle(i18n("multiplayer"));
|
||||||
JFXHyperlink link = new JFXHyperlink(i18n("multiplayer.hint.details"));
|
JFXHyperlink link = new JFXHyperlink(i18n("multiplayer.hint.details"));
|
||||||
link.setOnAction(e -> FXUtils.openLink("https://hmcl.huangyuhui.net/api/redirect/multiplayer-migrate"));
|
link.setExternalLink("https://hmcl.huangyuhui.net/api/redirect/multiplayer-migrate");
|
||||||
multiplayerItem.setOnAction(e -> Controllers.dialog(
|
multiplayerItem.setOnAction(e -> Controllers.dialog(
|
||||||
new MessageDialogPane.Builder(i18n("multiplayer.hint"), null, MessageDialogPane.MessageType.INFO)
|
new MessageDialogPane.Builder(i18n("multiplayer.hint"), null, MessageDialogPane.MessageType.INFO)
|
||||||
.addAction(link)
|
.addAction(link)
|
||||||
|
@ -260,18 +260,18 @@ public class DownloadPage extends Control implements DecoratorPage {
|
|||||||
|
|
||||||
if (getSkinnable().mod != null) {
|
if (getSkinnable().mod != null) {
|
||||||
JFXHyperlink openMcmodButton = new JFXHyperlink(i18n("mods.mcmod"));
|
JFXHyperlink openMcmodButton = new JFXHyperlink(i18n("mods.mcmod"));
|
||||||
openMcmodButton.setOnAction(e -> FXUtils.openLink(getSkinnable().translations.getMcmodUrl(getSkinnable().mod)));
|
openMcmodButton.setExternalLink(getSkinnable().translations.getMcmodUrl(getSkinnable().mod));
|
||||||
descriptionPane.getChildren().add(openMcmodButton);
|
descriptionPane.getChildren().add(openMcmodButton);
|
||||||
|
|
||||||
if (StringUtils.isNotBlank(getSkinnable().mod.getMcbbs())) {
|
if (StringUtils.isNotBlank(getSkinnable().mod.getMcbbs())) {
|
||||||
JFXHyperlink openMcbbsButton = new JFXHyperlink(i18n("mods.mcbbs"));
|
JFXHyperlink openMcbbsButton = new JFXHyperlink(i18n("mods.mcbbs"));
|
||||||
openMcbbsButton.setOnAction(e -> FXUtils.openLink(ModManager.getMcbbsUrl(getSkinnable().mod.getMcbbs())));
|
openMcbbsButton.setExternalLink(ModManager.getMcbbsUrl(getSkinnable().mod.getMcbbs()));
|
||||||
descriptionPane.getChildren().add(openMcbbsButton);
|
descriptionPane.getChildren().add(openMcbbsButton);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JFXHyperlink openUrlButton = new JFXHyperlink(control.page.getLocalizedOfficialPage());
|
JFXHyperlink openUrlButton = new JFXHyperlink(control.page.getLocalizedOfficialPage());
|
||||||
openUrlButton.setOnAction(e -> FXUtils.openLink(getSkinnable().addon.getPageUrl()));
|
openUrlButton.setExternalLink(getSkinnable().addon.getPageUrl());
|
||||||
descriptionPane.getChildren().add(openUrlButton);
|
descriptionPane.getChildren().add(openUrlButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -308,8 +308,7 @@ class ModListPageSkin extends SkinBase<ModListPage> {
|
|||||||
setBody(description);
|
setBody(description);
|
||||||
|
|
||||||
if (StringUtils.isNotBlank(modInfo.getModInfo().getUrl())) {
|
if (StringUtils.isNotBlank(modInfo.getModInfo().getUrl())) {
|
||||||
JFXHyperlink officialPageButton = new JFXHyperlink();
|
JFXHyperlink officialPageButton = new JFXHyperlink(i18n("mods.url"));
|
||||||
officialPageButton.setText(i18n("mods.url"));
|
|
||||||
officialPageButton.setOnAction(e -> {
|
officialPageButton.setOnAction(e -> {
|
||||||
fireEvent(new DialogCloseEvent());
|
fireEvent(new DialogCloseEvent());
|
||||||
FXUtils.openLink(modInfo.getModInfo().getUrl());
|
FXUtils.openLink(modInfo.getModInfo().getUrl());
|
||||||
@ -319,8 +318,7 @@ class ModListPageSkin extends SkinBase<ModListPage> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (modInfo.getMod() != null && StringUtils.isNotBlank(modInfo.getMod().getMcbbs())) {
|
if (modInfo.getMod() != null && StringUtils.isNotBlank(modInfo.getMod().getMcbbs())) {
|
||||||
JFXHyperlink mcbbsButton = new JFXHyperlink();
|
JFXHyperlink mcbbsButton = new JFXHyperlink(i18n("mods.mcbbs"));
|
||||||
mcbbsButton.setText(i18n("mods.mcbbs"));
|
|
||||||
mcbbsButton.setOnAction(e -> {
|
mcbbsButton.setOnAction(e -> {
|
||||||
fireEvent(new DialogCloseEvent());
|
fireEvent(new DialogCloseEvent());
|
||||||
FXUtils.openLink(ModManager.getMcbbsUrl(modInfo.getMod().getMcbbs()));
|
FXUtils.openLink(ModManager.getMcbbsUrl(modInfo.getMod().getMcbbs()));
|
||||||
@ -329,8 +327,7 @@ class ModListPageSkin extends SkinBase<ModListPage> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (modInfo.getMod() == null || StringUtils.isBlank(modInfo.getMod().getMcmod())) {
|
if (modInfo.getMod() == null || StringUtils.isBlank(modInfo.getMod().getMcmod())) {
|
||||||
JFXHyperlink searchButton = new JFXHyperlink();
|
JFXHyperlink searchButton = new JFXHyperlink(i18n("mods.mcmod.search"));
|
||||||
searchButton.setText(i18n("mods.mcmod.search"));
|
|
||||||
searchButton.setOnAction(e -> {
|
searchButton.setOnAction(e -> {
|
||||||
fireEvent(new DialogCloseEvent());
|
fireEvent(new DialogCloseEvent());
|
||||||
FXUtils.openLink(NetworkUtils.withQuery("https://search.mcmod.cn/s", mapOf(
|
FXUtils.openLink(NetworkUtils.withQuery("https://search.mcmod.cn/s", mapOf(
|
||||||
@ -341,8 +338,7 @@ class ModListPageSkin extends SkinBase<ModListPage> {
|
|||||||
});
|
});
|
||||||
getActions().add(searchButton);
|
getActions().add(searchButton);
|
||||||
} else {
|
} else {
|
||||||
JFXHyperlink mcmodButton = new JFXHyperlink();
|
JFXHyperlink mcmodButton = new JFXHyperlink(i18n("mods.mcmod.page"));
|
||||||
mcmodButton.setText(i18n("mods.mcmod.page"));
|
|
||||||
mcmodButton.setOnAction(e -> {
|
mcmodButton.setOnAction(e -> {
|
||||||
fireEvent(new DialogCloseEvent());
|
fireEvent(new DialogCloseEvent());
|
||||||
FXUtils.openLink(ModTranslations.MOD.getMcmodUrl(modInfo.getMod()));
|
FXUtils.openLink(ModTranslations.MOD.getMcmodUrl(modInfo.getMod()));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user