在陶瓦联机界面的启动游戏按钮中显示实例名称 (#4705)
This commit is contained in:
@@ -19,6 +19,7 @@ package org.jackhuang.hmcl.ui.terracotta;
|
|||||||
|
|
||||||
import javafx.beans.property.ReadOnlyObjectProperty;
|
import javafx.beans.property.ReadOnlyObjectProperty;
|
||||||
import javafx.beans.property.ReadOnlyObjectWrapper;
|
import javafx.beans.property.ReadOnlyObjectWrapper;
|
||||||
|
import javafx.beans.value.ChangeListener;
|
||||||
import javafx.geometry.Insets;
|
import javafx.geometry.Insets;
|
||||||
import javafx.scene.layout.BorderPane;
|
import javafx.scene.layout.BorderPane;
|
||||||
import javafx.scene.layout.Priority;
|
import javafx.scene.layout.Priority;
|
||||||
@@ -28,6 +29,7 @@ import org.jackhuang.hmcl.game.LauncherHelper;
|
|||||||
import org.jackhuang.hmcl.setting.Profile;
|
import org.jackhuang.hmcl.setting.Profile;
|
||||||
import org.jackhuang.hmcl.setting.Profiles;
|
import org.jackhuang.hmcl.setting.Profiles;
|
||||||
import org.jackhuang.hmcl.terracotta.TerracottaMetadata;
|
import org.jackhuang.hmcl.terracotta.TerracottaMetadata;
|
||||||
|
import org.jackhuang.hmcl.ui.Controllers;
|
||||||
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.ui.animation.ContainerAnimations;
|
import org.jackhuang.hmcl.ui.animation.ContainerAnimations;
|
||||||
@@ -37,7 +39,10 @@ import org.jackhuang.hmcl.ui.construct.PageAware;
|
|||||||
import org.jackhuang.hmcl.ui.construct.TabHeader;
|
import org.jackhuang.hmcl.ui.construct.TabHeader;
|
||||||
import org.jackhuang.hmcl.ui.decorator.DecoratorAnimatedPage;
|
import org.jackhuang.hmcl.ui.decorator.DecoratorAnimatedPage;
|
||||||
import org.jackhuang.hmcl.ui.decorator.DecoratorPage;
|
import org.jackhuang.hmcl.ui.decorator.DecoratorPage;
|
||||||
|
import org.jackhuang.hmcl.ui.main.MainPage;
|
||||||
import org.jackhuang.hmcl.ui.versions.Versions;
|
import org.jackhuang.hmcl.ui.versions.Versions;
|
||||||
|
import org.jackhuang.hmcl.util.Lang;
|
||||||
|
import org.jackhuang.hmcl.util.StringUtils;
|
||||||
|
|
||||||
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
||||||
|
|
||||||
@@ -47,6 +52,9 @@ public class TerracottaPage extends DecoratorAnimatedPage implements DecoratorPa
|
|||||||
private final TabHeader.Tab<TerracottaControllerPage> statusPage = new TabHeader.Tab<>("statusPage");
|
private final TabHeader.Tab<TerracottaControllerPage> statusPage = new TabHeader.Tab<>("statusPage");
|
||||||
private final TransitionPane transitionPane = new TransitionPane();
|
private final TransitionPane transitionPane = new TransitionPane();
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
private ChangeListener<String> instanceChangeListenerHolder;
|
||||||
|
|
||||||
public TerracottaPage() {
|
public TerracottaPage() {
|
||||||
statusPage.setNodeSupplier(TerracottaControllerPage::new);
|
statusPage.setNodeSupplier(TerracottaControllerPage::new);
|
||||||
tab = new TabHeader(statusPage);
|
tab = new TabHeader(statusPage);
|
||||||
@@ -70,6 +78,16 @@ public class TerracottaPage extends DecoratorAnimatedPage implements DecoratorPa
|
|||||||
.addNavigationDrawerItem(i18n("version.launch"), SVG.ROCKET_LAUNCH, () -> {
|
.addNavigationDrawerItem(i18n("version.launch"), SVG.ROCKET_LAUNCH, () -> {
|
||||||
Profile profile = Profiles.getSelectedProfile();
|
Profile profile = Profiles.getSelectedProfile();
|
||||||
Versions.launch(profile, profile.getSelectedVersion(), LauncherHelper::setKeep);
|
Versions.launch(profile, profile.getSelectedVersion(), LauncherHelper::setKeep);
|
||||||
|
}, item -> {
|
||||||
|
instanceChangeListenerHolder = FXUtils.onWeakChangeAndOperate(Profiles.selectedVersionProperty(),
|
||||||
|
instanceName -> item.setSubtitle(StringUtils.isNotBlank(instanceName) ? instanceName : i18n("version.empty"))
|
||||||
|
);
|
||||||
|
|
||||||
|
MainPage mainPage = Controllers.getRootPage().getMainPage();
|
||||||
|
FXUtils.onScroll(item, mainPage.getVersions(), list -> {
|
||||||
|
String currentId = mainPage.getCurrentGame();
|
||||||
|
return Lang.indexWhere(list, instance -> instance.getId().equals(currentId));
|
||||||
|
}, it -> mainPage.getProfile().setSelectedVersion(it.getId()));
|
||||||
})
|
})
|
||||||
.addNavigationDrawerItem(i18n("terracotta.feedback.title"), SVG.FEEDBACK, () -> FXUtils.openLink(TerracottaMetadata.FEEDBACK_LINK))
|
.addNavigationDrawerItem(i18n("terracotta.feedback.title"), SVG.FEEDBACK, () -> FXUtils.openLink(TerracottaMetadata.FEEDBACK_LINK))
|
||||||
.addNavigationDrawerItem(i18n("terracotta.easytier"), SVG.HOST, () -> FXUtils.openLink("https://easytier.cn/"))
|
.addNavigationDrawerItem(i18n("terracotta.easytier"), SVG.HOST, () -> FXUtils.openLink("https://easytier.cn/"))
|
||||||
|
|||||||
Reference in New Issue
Block a user