From 7d9cce131b2278205f8fe9fb62b06a96322626e7 Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Sat, 18 Sep 2021 01:51:38 +0800 Subject: [PATCH] fix: icon color should be changed when active. --- .../hmcl/ui/account/AccountListPage.java | 14 ++-- .../hmcl/ui/download/DownloadPage.java | 13 ++-- .../hmcl/ui/main/LauncherSettingsPage.java | 17 +++-- .../ui/multiplayer/MultiplayerPageSkin.java | 10 +-- .../hmcl/ui/versions/GameListPage.java | 9 ++- .../hmcl/ui/versions/VersionPage.java | 67 ++++++++----------- 6 files changed, 59 insertions(+), 71 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AccountListPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AccountListPage.java index 28c307b6c..b546eee31 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AccountListPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AccountListPage.java @@ -45,12 +45,12 @@ import org.jackhuang.hmcl.ui.decorator.DecoratorPage; import org.jackhuang.hmcl.util.javafx.BindingMapping; import org.jackhuang.hmcl.util.javafx.MappedObservableList; +import java.net.URI; + import static org.jackhuang.hmcl.ui.versions.VersionPage.wrap; import static org.jackhuang.hmcl.util.i18n.I18n.i18n; import static org.jackhuang.hmcl.util.javafx.ExtendedProperties.createSelectedItemPropertyFor; -import java.net.URI; - public class AccountListPage extends ListPageBase implements DecoratorPage { private final ReadOnlyObjectWrapper state = new ReadOnlyObjectWrapper<>(State.fromTitle(i18n("account.manage"), -1)); private final ListProperty accounts = new SimpleListProperty<>(this, "accounts", FXCollections.observableArrayList()); @@ -111,7 +111,7 @@ public class AccountListPage extends ListPageBase implements De offlineItem.getStyleClass().add("navigation-drawer-item"); offlineItem.setActionButtonVisible(false); offlineItem.setTitle(i18n("account.methods.offline")); - offlineItem.setLeftGraphic(wrap(SVG.account(Theme.blackFillBinding(), 24, 24))); + offlineItem.setLeftGraphic(wrap(SVG::account)); offlineItem.setOnAction(e -> Controllers.dialog(new CreateAccountPane(Accounts.FACTORY_OFFLINE))); boxMethods.getChildren().add(offlineItem); @@ -119,7 +119,7 @@ public class AccountListPage extends ListPageBase implements De mojangItem.getStyleClass().add("navigation-drawer-item"); mojangItem.setActionButtonVisible(false); mojangItem.setTitle(i18n("account.methods.yggdrasil")); - mojangItem.setLeftGraphic(wrap(SVG.mojang(Theme.blackFillBinding(), 24, 24))); + mojangItem.setLeftGraphic(wrap(SVG::mojang)); mojangItem.setOnAction(e -> Controllers.dialog(new CreateAccountPane(Accounts.FACTORY_MOJANG))); boxMethods.getChildren().add(mojangItem); @@ -127,7 +127,7 @@ public class AccountListPage extends ListPageBase implements De microsoftItem.getStyleClass().add("navigation-drawer-item"); microsoftItem.setActionButtonVisible(false); microsoftItem.setTitle(i18n("account.methods.microsoft")); - microsoftItem.setLeftGraphic(wrap(SVG.microsoft(Theme.blackFillBinding(), 24, 24))); + microsoftItem.setLeftGraphic(wrap(SVG::microsoft)); microsoftItem.setOnAction(e -> Controllers.dialog(new CreateAccountPane(Accounts.FACTORY_MICROSOFT))); boxMethods.getChildren().add(microsoftItem); @@ -135,7 +135,7 @@ public class AccountListPage extends ListPageBase implements De authServerItems = MappedObservableList.create(skinnable.authServersProperty(), server -> { AdvancedListItem item = new AdvancedListItem(); item.getStyleClass().add("navigation-drawer-item"); - item.setLeftGraphic(wrap(SVG.server(Theme.blackFillBinding(), 24, 24))); + item.setLeftGraphic(wrap(SVG::server)); item.setOnAction(e -> Controllers.dialog(new CreateAccountPane(server))); JFXButton btnRemove = new JFXButton(); @@ -171,7 +171,7 @@ public class AccountListPage extends ListPageBase implements De addAuthServerItem.setTitle(i18n("account.injector.add")); addAuthServerItem.setSubtitle(i18n("account.methods.authlib_injector")); addAuthServerItem.setActionButtonVisible(false); - addAuthServerItem.setLeftGraphic(wrap(SVG.plusCircleOutline(Theme.blackFillBinding(), 24, 24))); + addAuthServerItem.setLeftGraphic(wrap(SVG::plusCircleOutline)); addAuthServerItem.setOnAction(e -> Controllers.dialog(new AddAuthlibInjectorServerPane())); BorderPane.setMargin(addAuthServerItem, new Insets(0, 0, 12, 0)); left.setBottom(addAuthServerItem); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/DownloadPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/DownloadPage.java index 39ba1dc0c..bef59f254 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/DownloadPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/DownloadPage.java @@ -29,7 +29,6 @@ import org.jackhuang.hmcl.mod.curse.CurseModManager; import org.jackhuang.hmcl.setting.DownloadProviders; import org.jackhuang.hmcl.setting.Profile; import org.jackhuang.hmcl.setting.Profiles; -import org.jackhuang.hmcl.setting.Theme; import org.jackhuang.hmcl.task.FileDownloadTask; import org.jackhuang.hmcl.task.Schedulers; import org.jackhuang.hmcl.task.Task; @@ -113,37 +112,37 @@ public class DownloadPage extends BorderPane implements DecoratorPage { AdvancedListBox sideBar = new AdvancedListBox() .addNavigationDrawerItem(item -> { item.setTitle(i18n("game")); - item.setLeftGraphic(wrap(SVG.gamepad(Theme.blackFillBinding(), 24, 24))); + item.setLeftGraphic(wrap(SVG::gamepad)); item.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(newGameTab)); item.setOnAction(e -> tab.getSelectionModel().select(newGameTab)); }) .addNavigationDrawerItem(item -> { item.setTitle(i18n("mods")); - item.setLeftGraphic(wrap(SVG.puzzle(Theme.blackFillBinding(), 24, 24))); + item.setLeftGraphic(wrap(SVG::puzzle)); item.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(modTab)); item.setOnAction(e -> tab.getSelectionModel().select(modTab)); }) .addNavigationDrawerItem(settingsItem -> { settingsItem.setTitle(i18n("modpack")); - settingsItem.setLeftGraphic(wrap(SVG.pack(Theme.blackFillBinding(), 24, 24))); + settingsItem.setLeftGraphic(wrap(SVG::pack)); settingsItem.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(modpackTab)); settingsItem.setOnAction(e -> tab.getSelectionModel().select(modpackTab)); }) .addNavigationDrawerItem(item -> { item.setTitle(i18n("resourcepack")); - item.setLeftGraphic(wrap(SVG.textureBox(Theme.blackFillBinding(), 24, 24))); + item.setLeftGraphic(wrap(SVG::textureBox)); item.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(resourcePackTab)); item.setOnAction(e -> tab.getSelectionModel().select(resourcePackTab)); }) // .addNavigationDrawerItem(item -> { // item.setTitle(i18n("download.curseforge.customization")); -// item.setLeftGraphic(wrap(SVG.script(Theme.blackFillBinding(), 24, 24))); +// item.setLeftGraphic(wrap(SVG::script)); // item.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(customizationTab)); // item.setOnAction(e -> tab.getSelectionModel().select(customizationTab)); // }) .addNavigationDrawerItem(item -> { item.setTitle(i18n("world")); - item.setLeftGraphic(wrap(SVG.earth(Theme.blackFillBinding(), 24, 24))); + item.setLeftGraphic(wrap(SVG::earth)); item.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(worldTab)); item.setOnAction(e -> tab.getSelectionModel().select(worldTab)); }); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/LauncherSettingsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/LauncherSettingsPage.java index 1fde52b8a..e218e10ed 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/LauncherSettingsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/LauncherSettingsPage.java @@ -22,7 +22,6 @@ import javafx.beans.property.ReadOnlyObjectWrapper; import javafx.scene.layout.BorderPane; import org.jackhuang.hmcl.setting.Profile; import org.jackhuang.hmcl.setting.Profiles; -import org.jackhuang.hmcl.setting.Theme; import org.jackhuang.hmcl.ui.FXUtils; import org.jackhuang.hmcl.ui.SVG; import org.jackhuang.hmcl.ui.animation.ContainerAnimations; @@ -71,51 +70,51 @@ public class LauncherSettingsPage extends BorderPane implements DecoratorPage { AdvancedListBox sideBar = new AdvancedListBox() .addNavigationDrawerItem(settingsItem -> { settingsItem.setTitle(i18n("settings.type.global.manage")); - settingsItem.setLeftGraphic(wrap(SVG.gamepad(Theme.blackFillBinding(), 24, 24))); + settingsItem.setLeftGraphic(wrap(SVG::gamepad)); settingsItem.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(gameTab)); settingsItem.setOnAction(e -> tab.getSelectionModel().select(gameTab)); }) .startCategory(i18n("launcher")) .addNavigationDrawerItem(settingsItem -> { settingsItem.setTitle(i18n("settings.launcher.general")); - settingsItem.setLeftGraphic(wrap(SVG.applicationOutline(Theme.blackFillBinding(), 24, 24))); + settingsItem.setLeftGraphic(wrap(SVG::applicationOutline)); settingsItem.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(settingsTab)); settingsItem.setOnAction(e -> tab.getSelectionModel().select(settingsTab)); }) .addNavigationDrawerItem(personalizationItem -> { personalizationItem.setTitle(i18n("settings.launcher.appearance")); - personalizationItem.setLeftGraphic(wrap(SVG.styleOutline(Theme.blackFillBinding(), 24, 24))); + personalizationItem.setLeftGraphic(wrap(SVG::styleOutline)); personalizationItem.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(personalizationTab)); personalizationItem.setOnAction(e -> tab.getSelectionModel().select(personalizationTab)); }) .addNavigationDrawerItem(downloadItem -> { downloadItem.setTitle(i18n("download")); - downloadItem.setLeftGraphic(wrap(SVG.downloadOutline(Theme.blackFillBinding(), 24, 24))); + downloadItem.setLeftGraphic(wrap(SVG::downloadOutline)); downloadItem.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(downloadTab)); downloadItem.setOnAction(e -> tab.getSelectionModel().select(downloadTab)); }) .startCategory(i18n("help")) .addNavigationDrawerItem(helpItem -> { helpItem.setTitle(i18n("help")); - helpItem.setLeftGraphic(wrap(SVG.helpCircleOutline(Theme.blackFillBinding(), 24, 24))); + helpItem.setLeftGraphic(wrap(SVG::helpCircleOutline)); helpItem.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(helpTab)); helpItem.setOnAction(e -> tab.getSelectionModel().select(helpTab)); }) .addNavigationDrawerItem(feedbackItem -> { feedbackItem.setTitle(i18n("feedback")); - feedbackItem.setLeftGraphic(wrap(SVG.messageAlertOutline(Theme.blackFillBinding(), 24, 24))); + feedbackItem.setLeftGraphic(wrap(SVG::messageAlertOutline)); feedbackItem.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(feedbackTab)); feedbackItem.setOnAction(e -> tab.getSelectionModel().select(feedbackTab)); }) .addNavigationDrawerItem(sponsorItem -> { sponsorItem.setTitle(i18n("sponsor")); - sponsorItem.setLeftGraphic(wrap(SVG.handHearOutline(Theme.blackFillBinding(), 24, 24))); + sponsorItem.setLeftGraphic(wrap(SVG::handHearOutline)); sponsorItem.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(sponsorTab)); sponsorItem.setOnAction(e -> tab.getSelectionModel().select(sponsorTab)); }) .addNavigationDrawerItem(aboutItem -> { aboutItem.setTitle(i18n("about")); - aboutItem.setLeftGraphic(wrap(SVG.informationOutline(Theme.blackFillBinding(), 24, 24))); + aboutItem.setLeftGraphic(wrap(SVG::informationOutline)); aboutItem.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(aboutTab)); aboutItem.setOnAction(e -> tab.getSelectionModel().select(aboutTab)); }); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/MultiplayerPageSkin.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/MultiplayerPageSkin.java index dc39acc0f..26bbb725d 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/MultiplayerPageSkin.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/MultiplayerPageSkin.java @@ -49,27 +49,27 @@ public class MultiplayerPageSkin extends SkinBase { { AdvancedListItem createRoomItem = new AdvancedListItem(); createRoomItem.setTitle(i18n("multiplayer.room.create")); - createRoomItem.setLeftGraphic(wrap(SVG.plusCircleOutline(null, 24, 24))); + createRoomItem.setLeftGraphic(wrap(SVG::plusCircleOutline)); createRoomItem.setOnAction(e -> FXUtils.openLink("")); AdvancedListItem joinRoomItem = new AdvancedListItem(); joinRoomItem.setTitle(i18n("multiplayer.room.join")); - joinRoomItem.setLeftGraphic(wrap(SVG.accountArrowRightOutline(null, 24, 24))); + joinRoomItem.setLeftGraphic(wrap(SVG::accountArrowRightOutline)); joinRoomItem.setOnAction(e -> FXUtils.openLink("")); AdvancedListItem copyLinkItem = new AdvancedListItem(); copyLinkItem.setTitle(i18n("multiplayer.room.copy_room_code")); - copyLinkItem.setLeftGraphic(wrap(SVG.accountArrowRightOutline(null, 24, 24))); + copyLinkItem.setLeftGraphic(wrap(SVG::accountArrowRightOutline)); copyLinkItem.setOnAction(e -> FXUtils.openLink("")); AdvancedListItem quitItem = new AdvancedListItem(); quitItem.setTitle(i18n("multiplayer.room.quit")); - quitItem.setLeftGraphic(wrap(SVG.closeCircle(null, 24, 24))); + quitItem.setLeftGraphic(wrap(SVG::closeCircle)); quitItem.setOnAction(e -> FXUtils.openLink("")); AdvancedListItem closeRoomItem = new AdvancedListItem(); closeRoomItem.setTitle(i18n("multiplayer.room.quit")); - closeRoomItem.setLeftGraphic(wrap(SVG.closeCircle(null, 24, 24))); + closeRoomItem.setLeftGraphic(wrap(SVG::closeCircle)); closeRoomItem.setOnAction(e -> FXUtils.openLink("")); FXUtils.onChangeAndOperate(getSkinnable().multiplayerStateProperty(), state -> { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/GameListPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/GameListPage.java index f3d781e44..32cc93530 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/GameListPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/GameListPage.java @@ -33,7 +33,6 @@ import org.jackhuang.hmcl.game.HMCLGameRepository; import org.jackhuang.hmcl.game.Version; import org.jackhuang.hmcl.setting.Profile; import org.jackhuang.hmcl.setting.Profiles; -import org.jackhuang.hmcl.setting.Theme; import org.jackhuang.hmcl.ui.*; import org.jackhuang.hmcl.ui.construct.AdvancedListBox; import org.jackhuang.hmcl.ui.construct.AdvancedListItem; @@ -124,7 +123,7 @@ public class GameListPage extends ListPageBase implements Decorato addProfileItem.getStyleClass().add("navigation-drawer-item"); addProfileItem.setTitle(i18n("profile.new")); addProfileItem.setActionButtonVisible(false); - addProfileItem.setLeftGraphic(VersionPage.wrap(SVG.plusCircleOutline(Theme.blackFillBinding(), 24, 24))); + addProfileItem.setLeftGraphic(VersionPage.wrap(SVG::plusCircleOutline)); addProfileItem.setOnAction(e -> Controllers.navigate(new ProfilePage(null))); ScrollPane pane = new ScrollPane(); @@ -144,21 +143,21 @@ public class GameListPage extends ListPageBase implements Decorato installModpackItem.getStyleClass().add("navigation-drawer-item"); installModpackItem.setTitle(i18n("install.modpack")); installModpackItem.setActionButtonVisible(false); - installModpackItem.setLeftGraphic(VersionPage.wrap(SVG.pack(Theme.blackFillBinding(), 24, 24))); + installModpackItem.setLeftGraphic(VersionPage.wrap(SVG::pack)); installModpackItem.setOnAction(e -> Versions.importModpack()); AdvancedListItem refreshItem = new AdvancedListItem(); refreshItem.getStyleClass().add("navigation-drawer-item"); refreshItem.setTitle(i18n("button.refresh")); refreshItem.setActionButtonVisible(false); - refreshItem.setLeftGraphic(VersionPage.wrap(SVG.refresh(Theme.blackFillBinding(), 24, 24))); + refreshItem.setLeftGraphic(VersionPage.wrap(SVG::refresh)); refreshItem.setOnAction(e -> gameList.refreshList()); AdvancedListItem globalManageItem = new AdvancedListItem(); globalManageItem.getStyleClass().add("navigation-drawer-item"); globalManageItem.setTitle(i18n("settings.type.global.manage")); globalManageItem.setActionButtonVisible(false); - globalManageItem.setLeftGraphic(VersionPage.wrap(SVG.gearOutline(Theme.blackFillBinding(), 24, 24))); + globalManageItem.setLeftGraphic(VersionPage.wrap(SVG::gearOutline)); globalManageItem.setOnAction(e -> modifyGlobalGameSettings()); AdvancedListBox bottomLeftCornerList = new AdvancedListBox() diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java index 02a2ab826..ce33d82df 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java @@ -209,7 +209,7 @@ public class VersionPage extends Control implements DecoratorPage { AdvancedListItem versionSettingsItem = new AdvancedListItem(); versionSettingsItem.getStyleClass().add("navigation-drawer-item"); versionSettingsItem.setTitle(i18n("settings.game")); - versionSettingsItem.setLeftGraphic(wrap(SVG.gearOutline(Theme.blackFillBinding(), 24, 24))); + versionSettingsItem.setLeftGraphic(wrap(SVG::gearOutline)); versionSettingsItem.setActionButtonVisible(false); versionSettingsItem.activeProperty().bind(control.tab.getSelectionModel().selectedItemProperty().isEqualTo(control.versionSettingsTab)); versionSettingsItem.setOnAction(e -> control.tab.getSelectionModel().select(control.versionSettingsTab)); @@ -217,7 +217,7 @@ public class VersionPage extends Control implements DecoratorPage { AdvancedListItem modListItem = new AdvancedListItem(); modListItem.getStyleClass().add("navigation-drawer-item"); modListItem.setTitle(i18n("mods.manage")); - modListItem.setLeftGraphic(wrap(SVG.puzzle(Theme.blackFillBinding(), 24, 24))); + modListItem.setLeftGraphic(wrap(SVG::puzzle)); modListItem.setActionButtonVisible(false); modListItem.activeProperty().bind(control.tab.getSelectionModel().selectedItemProperty().isEqualTo(control.modListTab)); modListItem.setOnAction(e -> control.tab.getSelectionModel().select(control.modListTab)); @@ -225,7 +225,7 @@ public class VersionPage extends Control implements DecoratorPage { AdvancedListItem installerListItem = new AdvancedListItem(); installerListItem.getStyleClass().add("navigation-drawer-item"); installerListItem.setTitle(i18n("settings.tabs.installers")); - installerListItem.setLeftGraphic(wrap(SVG.cube(Theme.blackFillBinding(), 24, 24))); + installerListItem.setLeftGraphic(wrap(SVG::cube)); installerListItem.setActionButtonVisible(false); installerListItem.activeProperty().bind(control.tab.getSelectionModel().selectedItemProperty().isEqualTo(control.installerListTab)); installerListItem.setOnAction(e -> control.tab.getSelectionModel().select(control.installerListTab)); @@ -233,7 +233,7 @@ public class VersionPage extends Control implements DecoratorPage { AdvancedListItem worldListItem = new AdvancedListItem(); worldListItem.getStyleClass().add("navigation-drawer-item"); worldListItem.setTitle(i18n("world.manage")); - worldListItem.setLeftGraphic(wrap(SVG.earth(Theme.blackFillBinding(), 24, 24))); + worldListItem.setLeftGraphic(wrap(SVG::earth)); worldListItem.setActionButtonVisible(false); worldListItem.activeProperty().bind(control.tab.getSelectionModel().selectedItemProperty().isEqualTo(control.worldListTab)); worldListItem.setOnAction(e -> control.tab.getSelectionModel().select(control.worldListTab)); @@ -273,41 +273,28 @@ public class VersionPage extends Control implements DecoratorPage { new IconedMenuItem(null, i18n("version.manage.clean"), FXUtils.withJFXPopupClosing(control::clearJunkFiles, managementPopup)).addTooltip(i18n("version.manage.clean.tooltip")) ); - AdvancedListItem upgradeItem = new AdvancedListItem(); - upgradeItem.getStyleClass().add("navigation-drawer-item"); - upgradeItem.setTitle(i18n("version.update")); - upgradeItem.setLeftGraphic(wrap(SVG.update(Theme.blackFillBinding(), 24, 24))); - upgradeItem.setActionButtonVisible(false); - upgradeItem.visibleProperty().bind(control.currentVersionUpgradable); - upgradeItem.setOnAction(e -> control.updateGame()); - - AdvancedListItem testGameItem = new AdvancedListItem(); - testGameItem.getStyleClass().add("navigation-drawer-item"); - testGameItem.setTitle(i18n("version.launch.test")); - testGameItem.setLeftGraphic(wrap(SVG.rocketLaunchOutline(Theme.blackFillBinding(), 24, 24))); - testGameItem.setActionButtonVisible(false); - testGameItem.setOnAction(e -> control.testGame()); - - AdvancedListItem browseMenuItem = new AdvancedListItem(); - browseMenuItem.getStyleClass().add("navigation-drawer-item"); - browseMenuItem.setTitle(i18n("settings.game.exploration")); - browseMenuItem.setLeftGraphic(wrap(SVG.folderOutline(Theme.blackFillBinding(), 24, 24))); - browseMenuItem.setActionButtonVisible(false); - browseMenuItem.setOnAction(e -> browsePopup.show(browseMenuItem, JFXPopup.PopupVPosition.BOTTOM, JFXPopup.PopupHPosition.LEFT, browseMenuItem.getWidth(), 0)); - - AdvancedListItem managementItem = new AdvancedListItem(); - managementItem.getStyleClass().add("navigation-drawer-item"); - managementItem.setTitle(i18n("settings.game.management")); - managementItem.setLeftGraphic(wrap(SVG.wrenchOutline(Theme.blackFillBinding(), 24, 24))); - managementItem.setActionButtonVisible(false); - managementItem.setOnAction(e -> managementPopup.show(managementItem, JFXPopup.PopupVPosition.BOTTOM, JFXPopup.PopupHPosition.LEFT, managementItem.getWidth(), 0)); - - AdvancedListBox toolbar = new AdvancedListBox() - .add(upgradeItem) - .add(testGameItem) - .add(browseMenuItem) - .add(managementItem); + .addNavigationDrawerItem(upgradeItem -> { + upgradeItem.setTitle(i18n("version.update")); + upgradeItem.setLeftGraphic(wrap(SVG::update)); + upgradeItem.visibleProperty().bind(control.currentVersionUpgradable); + upgradeItem.setOnAction(e -> control.updateGame()); + }) + .addNavigationDrawerItem(testGameItem -> { + testGameItem.setTitle(i18n("version.launch.test")); + testGameItem.setLeftGraphic(wrap(SVG::rocketLaunchOutline)); + testGameItem.setOnAction(e -> control.testGame()); + }) + .addNavigationDrawerItem(browseMenuItem -> { + browseMenuItem.setTitle(i18n("settings.game.exploration")); + browseMenuItem.setLeftGraphic(wrap(SVG::folderOutline)); + browseMenuItem.setOnAction(e -> browsePopup.show(browseMenuItem, JFXPopup.PopupVPosition.BOTTOM, JFXPopup.PopupHPosition.LEFT, browseMenuItem.getWidth(), 0)); + }) + .addNavigationDrawerItem(managementItem -> { + managementItem.setTitle(i18n("settings.game.management")); + managementItem.setLeftGraphic(wrap(SVG::wrenchOutline)); + managementItem.setOnAction(e -> managementPopup.show(managementItem, JFXPopup.PopupVPosition.BOTTOM, JFXPopup.PopupHPosition.LEFT, managementItem.getWidth(), 0)); + }); toolbar.getStyleClass().add("advanced-list-box-clear-padding"); FXUtils.setLimitHeight(toolbar, 40 * 4 + 12 * 2); left.setBottom(toolbar); @@ -336,6 +323,10 @@ public class VersionPage extends Control implements DecoratorPage { return stackPane; } + public static Node wrap(SVG.SVGIcon svg) { + return wrap(svg.createIcon(null, 20, 20)); + } + public interface VersionLoadable { void loadVersion(Profile profile, String version); }