fix: icon color should be changed when active.

This commit is contained in:
huanghongxun 2021-09-18 01:51:38 +08:00
parent 112b096c56
commit 7d9cce131b
6 changed files with 59 additions and 71 deletions

View File

@ -45,12 +45,12 @@ import org.jackhuang.hmcl.ui.decorator.DecoratorPage;
import org.jackhuang.hmcl.util.javafx.BindingMapping; import org.jackhuang.hmcl.util.javafx.BindingMapping;
import org.jackhuang.hmcl.util.javafx.MappedObservableList; 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.ui.versions.VersionPage.wrap;
import static org.jackhuang.hmcl.util.i18n.I18n.i18n; import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
import static org.jackhuang.hmcl.util.javafx.ExtendedProperties.createSelectedItemPropertyFor; import static org.jackhuang.hmcl.util.javafx.ExtendedProperties.createSelectedItemPropertyFor;
import java.net.URI;
public class AccountListPage extends ListPageBase<AccountListItem> implements DecoratorPage { public class AccountListPage extends ListPageBase<AccountListItem> implements DecoratorPage {
private final ReadOnlyObjectWrapper<State> state = new ReadOnlyObjectWrapper<>(State.fromTitle(i18n("account.manage"), -1)); private final ReadOnlyObjectWrapper<State> state = new ReadOnlyObjectWrapper<>(State.fromTitle(i18n("account.manage"), -1));
private final ListProperty<Account> accounts = new SimpleListProperty<>(this, "accounts", FXCollections.observableArrayList()); private final ListProperty<Account> accounts = new SimpleListProperty<>(this, "accounts", FXCollections.observableArrayList());
@ -111,7 +111,7 @@ public class AccountListPage extends ListPageBase<AccountListItem> implements De
offlineItem.getStyleClass().add("navigation-drawer-item"); offlineItem.getStyleClass().add("navigation-drawer-item");
offlineItem.setActionButtonVisible(false); offlineItem.setActionButtonVisible(false);
offlineItem.setTitle(i18n("account.methods.offline")); 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))); offlineItem.setOnAction(e -> Controllers.dialog(new CreateAccountPane(Accounts.FACTORY_OFFLINE)));
boxMethods.getChildren().add(offlineItem); boxMethods.getChildren().add(offlineItem);
@ -119,7 +119,7 @@ public class AccountListPage extends ListPageBase<AccountListItem> implements De
mojangItem.getStyleClass().add("navigation-drawer-item"); mojangItem.getStyleClass().add("navigation-drawer-item");
mojangItem.setActionButtonVisible(false); mojangItem.setActionButtonVisible(false);
mojangItem.setTitle(i18n("account.methods.yggdrasil")); 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))); mojangItem.setOnAction(e -> Controllers.dialog(new CreateAccountPane(Accounts.FACTORY_MOJANG)));
boxMethods.getChildren().add(mojangItem); boxMethods.getChildren().add(mojangItem);
@ -127,7 +127,7 @@ public class AccountListPage extends ListPageBase<AccountListItem> implements De
microsoftItem.getStyleClass().add("navigation-drawer-item"); microsoftItem.getStyleClass().add("navigation-drawer-item");
microsoftItem.setActionButtonVisible(false); microsoftItem.setActionButtonVisible(false);
microsoftItem.setTitle(i18n("account.methods.microsoft")); 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))); microsoftItem.setOnAction(e -> Controllers.dialog(new CreateAccountPane(Accounts.FACTORY_MICROSOFT)));
boxMethods.getChildren().add(microsoftItem); boxMethods.getChildren().add(microsoftItem);
@ -135,7 +135,7 @@ public class AccountListPage extends ListPageBase<AccountListItem> implements De
authServerItems = MappedObservableList.create(skinnable.authServersProperty(), server -> { authServerItems = MappedObservableList.create(skinnable.authServersProperty(), server -> {
AdvancedListItem item = new AdvancedListItem(); AdvancedListItem item = new AdvancedListItem();
item.getStyleClass().add("navigation-drawer-item"); 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))); item.setOnAction(e -> Controllers.dialog(new CreateAccountPane(server)));
JFXButton btnRemove = new JFXButton(); JFXButton btnRemove = new JFXButton();
@ -171,7 +171,7 @@ public class AccountListPage extends ListPageBase<AccountListItem> implements De
addAuthServerItem.setTitle(i18n("account.injector.add")); addAuthServerItem.setTitle(i18n("account.injector.add"));
addAuthServerItem.setSubtitle(i18n("account.methods.authlib_injector")); addAuthServerItem.setSubtitle(i18n("account.methods.authlib_injector"));
addAuthServerItem.setActionButtonVisible(false); addAuthServerItem.setActionButtonVisible(false);
addAuthServerItem.setLeftGraphic(wrap(SVG.plusCircleOutline(Theme.blackFillBinding(), 24, 24))); addAuthServerItem.setLeftGraphic(wrap(SVG::plusCircleOutline));
addAuthServerItem.setOnAction(e -> Controllers.dialog(new AddAuthlibInjectorServerPane())); addAuthServerItem.setOnAction(e -> Controllers.dialog(new AddAuthlibInjectorServerPane()));
BorderPane.setMargin(addAuthServerItem, new Insets(0, 0, 12, 0)); BorderPane.setMargin(addAuthServerItem, new Insets(0, 0, 12, 0));
left.setBottom(addAuthServerItem); left.setBottom(addAuthServerItem);

View File

@ -29,7 +29,6 @@ import org.jackhuang.hmcl.mod.curse.CurseModManager;
import org.jackhuang.hmcl.setting.DownloadProviders; import org.jackhuang.hmcl.setting.DownloadProviders;
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.setting.Theme;
import org.jackhuang.hmcl.task.FileDownloadTask; import org.jackhuang.hmcl.task.FileDownloadTask;
import org.jackhuang.hmcl.task.Schedulers; import org.jackhuang.hmcl.task.Schedulers;
import org.jackhuang.hmcl.task.Task; import org.jackhuang.hmcl.task.Task;
@ -113,37 +112,37 @@ public class DownloadPage extends BorderPane implements DecoratorPage {
AdvancedListBox sideBar = new AdvancedListBox() AdvancedListBox sideBar = new AdvancedListBox()
.addNavigationDrawerItem(item -> { .addNavigationDrawerItem(item -> {
item.setTitle(i18n("game")); 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.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(newGameTab));
item.setOnAction(e -> tab.getSelectionModel().select(newGameTab)); item.setOnAction(e -> tab.getSelectionModel().select(newGameTab));
}) })
.addNavigationDrawerItem(item -> { .addNavigationDrawerItem(item -> {
item.setTitle(i18n("mods")); 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.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(modTab));
item.setOnAction(e -> tab.getSelectionModel().select(modTab)); item.setOnAction(e -> tab.getSelectionModel().select(modTab));
}) })
.addNavigationDrawerItem(settingsItem -> { .addNavigationDrawerItem(settingsItem -> {
settingsItem.setTitle(i18n("modpack")); 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.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(modpackTab));
settingsItem.setOnAction(e -> tab.getSelectionModel().select(modpackTab)); settingsItem.setOnAction(e -> tab.getSelectionModel().select(modpackTab));
}) })
.addNavigationDrawerItem(item -> { .addNavigationDrawerItem(item -> {
item.setTitle(i18n("resourcepack")); 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.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(resourcePackTab));
item.setOnAction(e -> tab.getSelectionModel().select(resourcePackTab)); item.setOnAction(e -> tab.getSelectionModel().select(resourcePackTab));
}) })
// .addNavigationDrawerItem(item -> { // .addNavigationDrawerItem(item -> {
// item.setTitle(i18n("download.curseforge.customization")); // 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.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(customizationTab));
// item.setOnAction(e -> tab.getSelectionModel().select(customizationTab)); // item.setOnAction(e -> tab.getSelectionModel().select(customizationTab));
// }) // })
.addNavigationDrawerItem(item -> { .addNavigationDrawerItem(item -> {
item.setTitle(i18n("world")); 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.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(worldTab));
item.setOnAction(e -> tab.getSelectionModel().select(worldTab)); item.setOnAction(e -> tab.getSelectionModel().select(worldTab));
}); });

View File

@ -22,7 +22,6 @@ import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.scene.layout.BorderPane; import javafx.scene.layout.BorderPane;
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.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.ui.animation.ContainerAnimations; import org.jackhuang.hmcl.ui.animation.ContainerAnimations;
@ -71,51 +70,51 @@ public class LauncherSettingsPage extends BorderPane implements DecoratorPage {
AdvancedListBox sideBar = new AdvancedListBox() AdvancedListBox sideBar = new AdvancedListBox()
.addNavigationDrawerItem(settingsItem -> { .addNavigationDrawerItem(settingsItem -> {
settingsItem.setTitle(i18n("settings.type.global.manage")); 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.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(gameTab));
settingsItem.setOnAction(e -> tab.getSelectionModel().select(gameTab)); settingsItem.setOnAction(e -> tab.getSelectionModel().select(gameTab));
}) })
.startCategory(i18n("launcher")) .startCategory(i18n("launcher"))
.addNavigationDrawerItem(settingsItem -> { .addNavigationDrawerItem(settingsItem -> {
settingsItem.setTitle(i18n("settings.launcher.general")); 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.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(settingsTab));
settingsItem.setOnAction(e -> tab.getSelectionModel().select(settingsTab)); settingsItem.setOnAction(e -> tab.getSelectionModel().select(settingsTab));
}) })
.addNavigationDrawerItem(personalizationItem -> { .addNavigationDrawerItem(personalizationItem -> {
personalizationItem.setTitle(i18n("settings.launcher.appearance")); 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.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(personalizationTab));
personalizationItem.setOnAction(e -> tab.getSelectionModel().select(personalizationTab)); personalizationItem.setOnAction(e -> tab.getSelectionModel().select(personalizationTab));
}) })
.addNavigationDrawerItem(downloadItem -> { .addNavigationDrawerItem(downloadItem -> {
downloadItem.setTitle(i18n("download")); 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.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(downloadTab));
downloadItem.setOnAction(e -> tab.getSelectionModel().select(downloadTab)); downloadItem.setOnAction(e -> tab.getSelectionModel().select(downloadTab));
}) })
.startCategory(i18n("help")) .startCategory(i18n("help"))
.addNavigationDrawerItem(helpItem -> { .addNavigationDrawerItem(helpItem -> {
helpItem.setTitle(i18n("help")); 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.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(helpTab));
helpItem.setOnAction(e -> tab.getSelectionModel().select(helpTab)); helpItem.setOnAction(e -> tab.getSelectionModel().select(helpTab));
}) })
.addNavigationDrawerItem(feedbackItem -> { .addNavigationDrawerItem(feedbackItem -> {
feedbackItem.setTitle(i18n("feedback")); 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.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(feedbackTab));
feedbackItem.setOnAction(e -> tab.getSelectionModel().select(feedbackTab)); feedbackItem.setOnAction(e -> tab.getSelectionModel().select(feedbackTab));
}) })
.addNavigationDrawerItem(sponsorItem -> { .addNavigationDrawerItem(sponsorItem -> {
sponsorItem.setTitle(i18n("sponsor")); 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.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(sponsorTab));
sponsorItem.setOnAction(e -> tab.getSelectionModel().select(sponsorTab)); sponsorItem.setOnAction(e -> tab.getSelectionModel().select(sponsorTab));
}) })
.addNavigationDrawerItem(aboutItem -> { .addNavigationDrawerItem(aboutItem -> {
aboutItem.setTitle(i18n("about")); 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.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(aboutTab));
aboutItem.setOnAction(e -> tab.getSelectionModel().select(aboutTab)); aboutItem.setOnAction(e -> tab.getSelectionModel().select(aboutTab));
}); });

View File

@ -49,27 +49,27 @@ public class MultiplayerPageSkin extends SkinBase<MultiplayerPage> {
{ {
AdvancedListItem createRoomItem = new AdvancedListItem(); AdvancedListItem createRoomItem = new AdvancedListItem();
createRoomItem.setTitle(i18n("multiplayer.room.create")); createRoomItem.setTitle(i18n("multiplayer.room.create"));
createRoomItem.setLeftGraphic(wrap(SVG.plusCircleOutline(null, 24, 24))); createRoomItem.setLeftGraphic(wrap(SVG::plusCircleOutline));
createRoomItem.setOnAction(e -> FXUtils.openLink("")); createRoomItem.setOnAction(e -> FXUtils.openLink(""));
AdvancedListItem joinRoomItem = new AdvancedListItem(); AdvancedListItem joinRoomItem = new AdvancedListItem();
joinRoomItem.setTitle(i18n("multiplayer.room.join")); joinRoomItem.setTitle(i18n("multiplayer.room.join"));
joinRoomItem.setLeftGraphic(wrap(SVG.accountArrowRightOutline(null, 24, 24))); joinRoomItem.setLeftGraphic(wrap(SVG::accountArrowRightOutline));
joinRoomItem.setOnAction(e -> FXUtils.openLink("")); joinRoomItem.setOnAction(e -> FXUtils.openLink(""));
AdvancedListItem copyLinkItem = new AdvancedListItem(); AdvancedListItem copyLinkItem = new AdvancedListItem();
copyLinkItem.setTitle(i18n("multiplayer.room.copy_room_code")); 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("")); copyLinkItem.setOnAction(e -> FXUtils.openLink(""));
AdvancedListItem quitItem = new AdvancedListItem(); AdvancedListItem quitItem = new AdvancedListItem();
quitItem.setTitle(i18n("multiplayer.room.quit")); quitItem.setTitle(i18n("multiplayer.room.quit"));
quitItem.setLeftGraphic(wrap(SVG.closeCircle(null, 24, 24))); quitItem.setLeftGraphic(wrap(SVG::closeCircle));
quitItem.setOnAction(e -> FXUtils.openLink("")); quitItem.setOnAction(e -> FXUtils.openLink(""));
AdvancedListItem closeRoomItem = new AdvancedListItem(); AdvancedListItem closeRoomItem = new AdvancedListItem();
closeRoomItem.setTitle(i18n("multiplayer.room.quit")); closeRoomItem.setTitle(i18n("multiplayer.room.quit"));
closeRoomItem.setLeftGraphic(wrap(SVG.closeCircle(null, 24, 24))); closeRoomItem.setLeftGraphic(wrap(SVG::closeCircle));
closeRoomItem.setOnAction(e -> FXUtils.openLink("")); closeRoomItem.setOnAction(e -> FXUtils.openLink(""));
FXUtils.onChangeAndOperate(getSkinnable().multiplayerStateProperty(), state -> { FXUtils.onChangeAndOperate(getSkinnable().multiplayerStateProperty(), state -> {

View File

@ -33,7 +33,6 @@ import org.jackhuang.hmcl.game.HMCLGameRepository;
import org.jackhuang.hmcl.game.Version; import org.jackhuang.hmcl.game.Version;
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.setting.Theme;
import org.jackhuang.hmcl.ui.*; import org.jackhuang.hmcl.ui.*;
import org.jackhuang.hmcl.ui.construct.AdvancedListBox; import org.jackhuang.hmcl.ui.construct.AdvancedListBox;
import org.jackhuang.hmcl.ui.construct.AdvancedListItem; import org.jackhuang.hmcl.ui.construct.AdvancedListItem;
@ -124,7 +123,7 @@ public class GameListPage extends ListPageBase<GameListItem> implements Decorato
addProfileItem.getStyleClass().add("navigation-drawer-item"); addProfileItem.getStyleClass().add("navigation-drawer-item");
addProfileItem.setTitle(i18n("profile.new")); addProfileItem.setTitle(i18n("profile.new"));
addProfileItem.setActionButtonVisible(false); 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))); addProfileItem.setOnAction(e -> Controllers.navigate(new ProfilePage(null)));
ScrollPane pane = new ScrollPane(); ScrollPane pane = new ScrollPane();
@ -144,21 +143,21 @@ public class GameListPage extends ListPageBase<GameListItem> implements Decorato
installModpackItem.getStyleClass().add("navigation-drawer-item"); installModpackItem.getStyleClass().add("navigation-drawer-item");
installModpackItem.setTitle(i18n("install.modpack")); installModpackItem.setTitle(i18n("install.modpack"));
installModpackItem.setActionButtonVisible(false); installModpackItem.setActionButtonVisible(false);
installModpackItem.setLeftGraphic(VersionPage.wrap(SVG.pack(Theme.blackFillBinding(), 24, 24))); installModpackItem.setLeftGraphic(VersionPage.wrap(SVG::pack));
installModpackItem.setOnAction(e -> Versions.importModpack()); installModpackItem.setOnAction(e -> Versions.importModpack());
AdvancedListItem refreshItem = new AdvancedListItem(); AdvancedListItem refreshItem = new AdvancedListItem();
refreshItem.getStyleClass().add("navigation-drawer-item"); refreshItem.getStyleClass().add("navigation-drawer-item");
refreshItem.setTitle(i18n("button.refresh")); refreshItem.setTitle(i18n("button.refresh"));
refreshItem.setActionButtonVisible(false); refreshItem.setActionButtonVisible(false);
refreshItem.setLeftGraphic(VersionPage.wrap(SVG.refresh(Theme.blackFillBinding(), 24, 24))); refreshItem.setLeftGraphic(VersionPage.wrap(SVG::refresh));
refreshItem.setOnAction(e -> gameList.refreshList()); refreshItem.setOnAction(e -> gameList.refreshList());
AdvancedListItem globalManageItem = new AdvancedListItem(); AdvancedListItem globalManageItem = new AdvancedListItem();
globalManageItem.getStyleClass().add("navigation-drawer-item"); globalManageItem.getStyleClass().add("navigation-drawer-item");
globalManageItem.setTitle(i18n("settings.type.global.manage")); globalManageItem.setTitle(i18n("settings.type.global.manage"));
globalManageItem.setActionButtonVisible(false); globalManageItem.setActionButtonVisible(false);
globalManageItem.setLeftGraphic(VersionPage.wrap(SVG.gearOutline(Theme.blackFillBinding(), 24, 24))); globalManageItem.setLeftGraphic(VersionPage.wrap(SVG::gearOutline));
globalManageItem.setOnAction(e -> modifyGlobalGameSettings()); globalManageItem.setOnAction(e -> modifyGlobalGameSettings());
AdvancedListBox bottomLeftCornerList = new AdvancedListBox() AdvancedListBox bottomLeftCornerList = new AdvancedListBox()

View File

@ -209,7 +209,7 @@ public class VersionPage extends Control implements DecoratorPage {
AdvancedListItem versionSettingsItem = new AdvancedListItem(); AdvancedListItem versionSettingsItem = new AdvancedListItem();
versionSettingsItem.getStyleClass().add("navigation-drawer-item"); versionSettingsItem.getStyleClass().add("navigation-drawer-item");
versionSettingsItem.setTitle(i18n("settings.game")); versionSettingsItem.setTitle(i18n("settings.game"));
versionSettingsItem.setLeftGraphic(wrap(SVG.gearOutline(Theme.blackFillBinding(), 24, 24))); versionSettingsItem.setLeftGraphic(wrap(SVG::gearOutline));
versionSettingsItem.setActionButtonVisible(false); versionSettingsItem.setActionButtonVisible(false);
versionSettingsItem.activeProperty().bind(control.tab.getSelectionModel().selectedItemProperty().isEqualTo(control.versionSettingsTab)); versionSettingsItem.activeProperty().bind(control.tab.getSelectionModel().selectedItemProperty().isEqualTo(control.versionSettingsTab));
versionSettingsItem.setOnAction(e -> control.tab.getSelectionModel().select(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(); AdvancedListItem modListItem = new AdvancedListItem();
modListItem.getStyleClass().add("navigation-drawer-item"); modListItem.getStyleClass().add("navigation-drawer-item");
modListItem.setTitle(i18n("mods.manage")); modListItem.setTitle(i18n("mods.manage"));
modListItem.setLeftGraphic(wrap(SVG.puzzle(Theme.blackFillBinding(), 24, 24))); modListItem.setLeftGraphic(wrap(SVG::puzzle));
modListItem.setActionButtonVisible(false); modListItem.setActionButtonVisible(false);
modListItem.activeProperty().bind(control.tab.getSelectionModel().selectedItemProperty().isEqualTo(control.modListTab)); modListItem.activeProperty().bind(control.tab.getSelectionModel().selectedItemProperty().isEqualTo(control.modListTab));
modListItem.setOnAction(e -> control.tab.getSelectionModel().select(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(); AdvancedListItem installerListItem = new AdvancedListItem();
installerListItem.getStyleClass().add("navigation-drawer-item"); installerListItem.getStyleClass().add("navigation-drawer-item");
installerListItem.setTitle(i18n("settings.tabs.installers")); installerListItem.setTitle(i18n("settings.tabs.installers"));
installerListItem.setLeftGraphic(wrap(SVG.cube(Theme.blackFillBinding(), 24, 24))); installerListItem.setLeftGraphic(wrap(SVG::cube));
installerListItem.setActionButtonVisible(false); installerListItem.setActionButtonVisible(false);
installerListItem.activeProperty().bind(control.tab.getSelectionModel().selectedItemProperty().isEqualTo(control.installerListTab)); installerListItem.activeProperty().bind(control.tab.getSelectionModel().selectedItemProperty().isEqualTo(control.installerListTab));
installerListItem.setOnAction(e -> control.tab.getSelectionModel().select(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(); AdvancedListItem worldListItem = new AdvancedListItem();
worldListItem.getStyleClass().add("navigation-drawer-item"); worldListItem.getStyleClass().add("navigation-drawer-item");
worldListItem.setTitle(i18n("world.manage")); worldListItem.setTitle(i18n("world.manage"));
worldListItem.setLeftGraphic(wrap(SVG.earth(Theme.blackFillBinding(), 24, 24))); worldListItem.setLeftGraphic(wrap(SVG::earth));
worldListItem.setActionButtonVisible(false); worldListItem.setActionButtonVisible(false);
worldListItem.activeProperty().bind(control.tab.getSelectionModel().selectedItemProperty().isEqualTo(control.worldListTab)); worldListItem.activeProperty().bind(control.tab.getSelectionModel().selectedItemProperty().isEqualTo(control.worldListTab));
worldListItem.setOnAction(e -> control.tab.getSelectionModel().select(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")) new IconedMenuItem(null, i18n("version.manage.clean"), FXUtils.withJFXPopupClosing(control::clearJunkFiles, managementPopup)).addTooltip(i18n("version.manage.clean.tooltip"))
); );
AdvancedListItem upgradeItem = new AdvancedListItem(); AdvancedListBox toolbar = new AdvancedListBox()
upgradeItem.getStyleClass().add("navigation-drawer-item"); .addNavigationDrawerItem(upgradeItem -> {
upgradeItem.setTitle(i18n("version.update")); upgradeItem.setTitle(i18n("version.update"));
upgradeItem.setLeftGraphic(wrap(SVG.update(Theme.blackFillBinding(), 24, 24))); upgradeItem.setLeftGraphic(wrap(SVG::update));
upgradeItem.setActionButtonVisible(false);
upgradeItem.visibleProperty().bind(control.currentVersionUpgradable); upgradeItem.visibleProperty().bind(control.currentVersionUpgradable);
upgradeItem.setOnAction(e -> control.updateGame()); upgradeItem.setOnAction(e -> control.updateGame());
})
AdvancedListItem testGameItem = new AdvancedListItem(); .addNavigationDrawerItem(testGameItem -> {
testGameItem.getStyleClass().add("navigation-drawer-item");
testGameItem.setTitle(i18n("version.launch.test")); testGameItem.setTitle(i18n("version.launch.test"));
testGameItem.setLeftGraphic(wrap(SVG.rocketLaunchOutline(Theme.blackFillBinding(), 24, 24))); testGameItem.setLeftGraphic(wrap(SVG::rocketLaunchOutline));
testGameItem.setActionButtonVisible(false);
testGameItem.setOnAction(e -> control.testGame()); testGameItem.setOnAction(e -> control.testGame());
})
AdvancedListItem browseMenuItem = new AdvancedListItem(); .addNavigationDrawerItem(browseMenuItem -> {
browseMenuItem.getStyleClass().add("navigation-drawer-item");
browseMenuItem.setTitle(i18n("settings.game.exploration")); browseMenuItem.setTitle(i18n("settings.game.exploration"));
browseMenuItem.setLeftGraphic(wrap(SVG.folderOutline(Theme.blackFillBinding(), 24, 24))); browseMenuItem.setLeftGraphic(wrap(SVG::folderOutline));
browseMenuItem.setActionButtonVisible(false);
browseMenuItem.setOnAction(e -> browsePopup.show(browseMenuItem, JFXPopup.PopupVPosition.BOTTOM, JFXPopup.PopupHPosition.LEFT, browseMenuItem.getWidth(), 0)); browseMenuItem.setOnAction(e -> browsePopup.show(browseMenuItem, JFXPopup.PopupVPosition.BOTTOM, JFXPopup.PopupHPosition.LEFT, browseMenuItem.getWidth(), 0));
})
AdvancedListItem managementItem = new AdvancedListItem(); .addNavigationDrawerItem(managementItem -> {
managementItem.getStyleClass().add("navigation-drawer-item");
managementItem.setTitle(i18n("settings.game.management")); managementItem.setTitle(i18n("settings.game.management"));
managementItem.setLeftGraphic(wrap(SVG.wrenchOutline(Theme.blackFillBinding(), 24, 24))); managementItem.setLeftGraphic(wrap(SVG::wrenchOutline));
managementItem.setActionButtonVisible(false);
managementItem.setOnAction(e -> managementPopup.show(managementItem, JFXPopup.PopupVPosition.BOTTOM, JFXPopup.PopupHPosition.LEFT, managementItem.getWidth(), 0)); 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);
toolbar.getStyleClass().add("advanced-list-box-clear-padding"); toolbar.getStyleClass().add("advanced-list-box-clear-padding");
FXUtils.setLimitHeight(toolbar, 40 * 4 + 12 * 2); FXUtils.setLimitHeight(toolbar, 40 * 4 + 12 * 2);
left.setBottom(toolbar); left.setBottom(toolbar);
@ -336,6 +323,10 @@ public class VersionPage extends Control implements DecoratorPage {
return stackPane; return stackPane;
} }
public static Node wrap(SVG.SVGIcon svg) {
return wrap(svg.createIcon(null, 20, 20));
}
public interface VersionLoadable { public interface VersionLoadable {
void loadVersion(Profile profile, String version); void loadVersion(Profile profile, String version);
} }