在游戏下载列表中添加 Minecraft Wiki 链接 (#3435)

This commit is contained in:
Glavo 2024-11-14 17:49:27 +08:00 committed by GitHub
parent fa66549f53
commit 355df211db
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 37 additions and 11 deletions

View File

@ -17,7 +17,6 @@ import javafx.scene.layout.Priority;
import org.jackhuang.hmcl.setting.Theme; import org.jackhuang.hmcl.setting.Theme;
import org.jackhuang.hmcl.ui.FXUtils; import org.jackhuang.hmcl.ui.FXUtils;
import org.jackhuang.hmcl.ui.SVG; import org.jackhuang.hmcl.ui.SVG;
import org.jackhuang.hmcl.util.Lazy;
import org.jackhuang.hmcl.util.StringUtils; import org.jackhuang.hmcl.util.StringUtils;
public class IconedTwoLineListItem extends HBox { public class IconedTwoLineListItem extends HBox {
@ -29,13 +28,8 @@ public class IconedTwoLineListItem extends HBox {
private final ImageView imageView = new ImageView(); private final ImageView imageView = new ImageView();
private final TwoLineListItem twoLineListItem = new TwoLineListItem(); private final TwoLineListItem twoLineListItem = new TwoLineListItem();
private final Lazy<JFXButton> externalLinkButton = new Lazy<>(() -> { private JFXButton externalLinkButton;
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;
});
@SuppressWarnings("FieldCanBeLocal") @SuppressWarnings("FieldCanBeLocal")
private final InvalidationListener observer; private final InvalidationListener observer;
@ -52,7 +46,7 @@ public class IconedTwoLineListItem extends HBox {
getChildren().clear(); getChildren().clear();
if (image.get() != null) getChildren().add(imageView); if (image.get() != null) getChildren().add(imageView);
getChildren().add(twoLineListItem); getChildren().add(twoLineListItem);
if (StringUtils.isNotBlank(externalLink.get())) getChildren().add(externalLinkButton.get()); if (StringUtils.isNotBlank(externalLink.get())) getChildren().add(getExternalLinkButton());
}, image, externalLink); }, image, externalLink);
} }
@ -111,4 +105,14 @@ public class IconedTwoLineListItem extends HBox {
public ImageView getImageView() { public ImageView getImageView() {
return imageView; 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;
}
} }

View File

@ -178,7 +178,7 @@ public final class VersionsPage extends BorderPane implements WizardPage, Refres
btnRefresh.setGraphic(wrap(SVG.REFRESH.createIcon(Theme.blackFill(), -1, -1))); btnRefresh.setGraphic(wrap(SVG.REFRESH.createIcon(Theme.blackFill(), -1, -1)));
Holder<RemoteVersionListCell> lastCell = new Holder<>(); Holder<RemoteVersionListCell> lastCell = new Holder<>();
list.setCellFactory(listView -> new RemoteVersionListCell(lastCell)); list.setCellFactory(listView -> new RemoteVersionListCell(lastCell, libraryId));
FXUtils.onClicked(list, () -> { FXUtils.onClicked(list, () -> {
if (list.getSelectionModel().getSelectedIndex() < 0) if (list.getSelectionModel().getSelectedIndex() < 0)
@ -272,8 +272,12 @@ public final class VersionsPage extends BorderPane implements WizardPage, Refres
private final Holder<RemoteVersionListCell> lastCell; private final Holder<RemoteVersionListCell> lastCell;
RemoteVersionListCell(Holder<RemoteVersionListCell> lastCell) { RemoteVersionListCell(Holder<RemoteVersionListCell> lastCell, String libraryId) {
this.lastCell = lastCell; 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"); pane.getStyleClass().add("md-list-cell");
StackPane.setMargin(content, new Insets(10, 16, 10, 16)); StackPane.setMargin(content, new Insets(10, 16, 10, 16));
@ -307,14 +311,19 @@ public final class VersionsPage extends BorderPane implements WizardPage, Refres
case RELEASE: case RELEASE:
content.getTags().setAll(i18n("version.game.release")); content.getTags().setAll(i18n("version.game.release"));
content.setImage(VersionIconType.GRASS.getIcon()); content.setImage(VersionIconType.GRASS.getIcon());
content.setExternalLink(i18n("wiki.version.game.release", remoteVersion.getGameVersion()));
break; break;
case SNAPSHOT: case SNAPSHOT:
content.getTags().setAll(i18n("version.game.snapshot")); content.getTags().setAll(i18n("version.game.snapshot"));
content.setImage(VersionIconType.COMMAND.getIcon()); content.setImage(VersionIconType.COMMAND.getIcon());
content.setExternalLink(i18n("wiki.version.game.snapshot", remoteVersion.getGameVersion()));
break; break;
default: default:
content.getTags().setAll(i18n("version.game.old")); content.getTags().setAll(i18n("version.game.old"));
content.setImage(VersionIconType.CRAFT_TABLE.getIcon()); content.setImage(VersionIconType.CRAFT_TABLE.getIcon());
content.setExternalLink(null);
break; break;
} }
} else { } else {
@ -339,6 +348,7 @@ public final class VersionsPage extends BorderPane implements WizardPage, Refres
content.setSubtitle(remoteVersion.getGameVersion()); content.setSubtitle(remoteVersion.getGameVersion());
else else
content.getTags().setAll(remoteVersion.getGameVersion()); content.getTags().setAll(remoteVersion.getGameVersion());
content.setExternalLink(null);
} }
} }
} }

View File

@ -1352,6 +1352,10 @@ version.manage.rename.fail=Failed to rename the instance, some files might be in
version.settings=Settings version.settings=Settings
version.update=Update Modpack 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.prev=< Prev
wizard.failed=Failed wizard.failed=Failed
wizard.finish=Finish wizard.finish=Finish

View File

@ -1148,6 +1148,10 @@ version.manage.rename.fail=重新命名版本失敗,可能檔案被佔用或
version.settings=遊戲設定 version.settings=遊戲設定
version.update=更新模組包 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.prev=< 上一步
wizard.failed=失敗 wizard.failed=失敗
wizard.finish=完成 wizard.finish=完成

View File

@ -1159,6 +1159,10 @@ version.manage.rename.fail=重命名版本失败,可能文件被占用或者
version.settings=游戏设置 version.settings=游戏设置
version.update=更新整合包 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.prev=< 上一步
wizard.failed=失败 wizard.failed=失败
wizard.finish=完成 wizard.finish=完成