mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-12 13:26:53 -04:00
在游戏下载列表中添加 Minecraft Wiki 链接 (#3435)
This commit is contained in:
parent
fa66549f53
commit
355df211db
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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=完成
|
||||||
|
@ -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=完成
|
||||||
|
Loading…
x
Reference in New Issue
Block a user