From 355df211dbc6039afeba04746a400a008f07c84c Mon Sep 17 00:00:00 2001 From: Glavo Date: Thu, 14 Nov 2024 17:49:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E6=B8=B8=E6=88=8F=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E4=B8=AD=E6=B7=BB=E5=8A=A0=20Minecraft=20Wik?= =?UTF-8?q?i=20=E9=93=BE=E6=8E=A5=20(#3435)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/construct/IconedTwoLineListItem.java | 22 +++++++++++-------- .../hmcl/ui/download/VersionsPage.java | 14 ++++++++++-- .../resources/assets/lang/I18N.properties | 4 ++++ .../resources/assets/lang/I18N_zh.properties | 4 ++++ .../assets/lang/I18N_zh_CN.properties | 4 ++++ 5 files changed, 37 insertions(+), 11 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/IconedTwoLineListItem.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/IconedTwoLineListItem.java index f3f9f2d60..8de2e245c 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/IconedTwoLineListItem.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/IconedTwoLineListItem.java @@ -17,7 +17,6 @@ import javafx.scene.layout.Priority; import org.jackhuang.hmcl.setting.Theme; import org.jackhuang.hmcl.ui.FXUtils; import org.jackhuang.hmcl.ui.SVG; -import org.jackhuang.hmcl.util.Lazy; import org.jackhuang.hmcl.util.StringUtils; public class IconedTwoLineListItem extends HBox { @@ -29,13 +28,8 @@ public class IconedTwoLineListItem extends HBox { private final ImageView imageView = new ImageView(); private final TwoLineListItem twoLineListItem = new TwoLineListItem(); - private final Lazy externalLinkButton = new Lazy<>(() -> { - JFXButton button = new JFXButton(); - button.getStyleClass().add("toggle-icon4"); - button.setGraphic(SVG.OPEN_IN_NEW.createIcon(Theme.blackFill(), -1, -1)); - button.setOnAction(e -> FXUtils.openLink(externalLink.get())); - return button; - }); + private JFXButton externalLinkButton; + @SuppressWarnings("FieldCanBeLocal") private final InvalidationListener observer; @@ -52,7 +46,7 @@ public class IconedTwoLineListItem extends HBox { getChildren().clear(); if (image.get() != null) getChildren().add(imageView); getChildren().add(twoLineListItem); - if (StringUtils.isNotBlank(externalLink.get())) getChildren().add(externalLinkButton.get()); + if (StringUtils.isNotBlank(externalLink.get())) getChildren().add(getExternalLinkButton()); }, image, externalLink); } @@ -111,4 +105,14 @@ public class IconedTwoLineListItem extends HBox { public ImageView getImageView() { return imageView; } + + public JFXButton getExternalLinkButton() { + if (externalLinkButton == null) { + externalLinkButton = new JFXButton(); + externalLinkButton.getStyleClass().add("toggle-icon4"); + externalLinkButton.setGraphic(SVG.OPEN_IN_NEW.createIcon(Theme.blackFill(), -1, -1)); + externalLinkButton.setOnAction(e -> FXUtils.openLink(externalLink.get())); + } + return externalLinkButton; + } } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VersionsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VersionsPage.java index 3d4a3c3ef..a64bf1aea 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VersionsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VersionsPage.java @@ -178,7 +178,7 @@ public final class VersionsPage extends BorderPane implements WizardPage, Refres btnRefresh.setGraphic(wrap(SVG.REFRESH.createIcon(Theme.blackFill(), -1, -1))); Holder lastCell = new Holder<>(); - list.setCellFactory(listView -> new RemoteVersionListCell(lastCell)); + list.setCellFactory(listView -> new RemoteVersionListCell(lastCell, libraryId)); FXUtils.onClicked(list, () -> { if (list.getSelectionModel().getSelectedIndex() < 0) @@ -272,8 +272,12 @@ public final class VersionsPage extends BorderPane implements WizardPage, Refres private final Holder lastCell; - RemoteVersionListCell(Holder lastCell) { + RemoteVersionListCell(Holder lastCell, String libraryId) { this.lastCell = lastCell; + if ("game".equals(libraryId)) { + content.getExternalLinkButton().setGraphic(SVG.EARTH.createIcon(Theme.blackFill(), -1, -1)); + FXUtils.installFastTooltip(content.getExternalLinkButton(), i18n("wiki.tooltip")); + } pane.getStyleClass().add("md-list-cell"); StackPane.setMargin(content, new Insets(10, 16, 10, 16)); @@ -307,14 +311,19 @@ public final class VersionsPage extends BorderPane implements WizardPage, Refres case RELEASE: content.getTags().setAll(i18n("version.game.release")); content.setImage(VersionIconType.GRASS.getIcon()); + content.setExternalLink(i18n("wiki.version.game.release", remoteVersion.getGameVersion())); break; case SNAPSHOT: content.getTags().setAll(i18n("version.game.snapshot")); content.setImage(VersionIconType.COMMAND.getIcon()); + + + content.setExternalLink(i18n("wiki.version.game.snapshot", remoteVersion.getGameVersion())); break; default: content.getTags().setAll(i18n("version.game.old")); content.setImage(VersionIconType.CRAFT_TABLE.getIcon()); + content.setExternalLink(null); break; } } else { @@ -339,6 +348,7 @@ public final class VersionsPage extends BorderPane implements WizardPage, Refres content.setSubtitle(remoteVersion.getGameVersion()); else content.getTags().setAll(remoteVersion.getGameVersion()); + content.setExternalLink(null); } } } diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index f531eb1f4..62a8348e3 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -1352,6 +1352,10 @@ version.manage.rename.fail=Failed to rename the instance, some files might be in version.settings=Settings version.update=Update Modpack +wiki.tooltip=Minecraft Wiki Page +wiki.version.game.release=https://minecraft.wiki/w/Java_Edition_%s +wiki.version.game.snapshot=https://minecraft.wiki/w/Java_Edition_%s + wizard.prev=< Prev wizard.failed=Failed wizard.finish=Finish diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh.properties b/HMCL/src/main/resources/assets/lang/I18N_zh.properties index 310e93e71..ce564a8e6 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh.properties @@ -1148,6 +1148,10 @@ version.manage.rename.fail=重新命名版本失敗,可能檔案被佔用或 version.settings=遊戲設定 version.update=更新模組包 +wiki.tooltip=Minecraft Wiki 頁面 +wiki.version.game.release=https://zh.minecraft.wiki/w/Java版%s?variant=zh-tw +wiki.version.game.snapshot=https://zh.minecraft.wiki/w/%s?variant=zh-tw + wizard.prev=< 上一步 wizard.failed=失敗 wizard.finish=完成 diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties index 319c525ed..652debe8a 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -1159,6 +1159,10 @@ version.manage.rename.fail=重命名版本失败,可能文件被占用或者 version.settings=游戏设置 version.update=更新整合包 +wiki.tooltip=Minecraft Wiki 页面 +wiki.version.game.release=https://zh.minecraft.wiki/w/Java版%s?variant=zh-cn +wiki.version.game.snapshot=https://zh.minecraft.wiki/w/%s?variant=zh-cn + wizard.prev=< 上一步 wizard.failed=失败 wizard.finish=完成