diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java index 2e2005e24..b5f6f1d19 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java @@ -204,19 +204,19 @@ public final class FXUtils { return field.getProperties().containsKey("FXUtils.validation"); } - public static void setOverflowHidden(Region region, boolean hidden) { - if (hidden) { - Rectangle rectangle = new Rectangle(); - rectangle.widthProperty().bind(region.widthProperty()); - rectangle.heightProperty().bind(region.heightProperty()); - region.setClip(rectangle); - } else { - region.setClip(null); - } + public static Rectangle setOverflowHidden(Region region) { + Rectangle rectangle = new Rectangle(); + rectangle.widthProperty().bind(region.widthProperty()); + rectangle.heightProperty().bind(region.heightProperty()); + region.setClip(rectangle); + return rectangle; } - public static boolean getOverflowHidden(Region region) { - return region.getClip() != null; + public static Rectangle setOverflowHidden(Region region, double arc) { + Rectangle rectangle = setOverflowHidden(region); + rectangle.setArcWidth(arc); + rectangle.setArcHeight(arc); + return rectangle; } public static void setLimitWidth(Region region, double width) { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/ToolbarListPageSkin.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/ToolbarListPageSkin.java index cc466e14e..ee905d20b 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/ToolbarListPageSkin.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/ToolbarListPageSkin.java @@ -44,12 +44,13 @@ public abstract class ToolbarListPageSkin BorderPane root = new BorderPane(); - { + List toolbarButtons = initializeToolbar(skinnable); + if (!toolbarButtons.isEmpty()) { HBox toolbar = new HBox(); toolbar.getStyleClass().add("jfx-tool-bar-second"); JFXDepthManager.setDepth(toolbar, 1); toolbar.setPickOnBounds(false); - toolbar.getChildren().setAll(initializeToolbar(skinnable)); + toolbar.getChildren().setAll(toolbarButtons); root.setTop(toolbar); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/animation/TransitionPane.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/animation/TransitionPane.java index 70add975e..9a5f15339 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/animation/TransitionPane.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/animation/TransitionPane.java @@ -32,7 +32,7 @@ public class TransitionPane extends StackPane implements AnimationHandler { { currentNode = getChildren().stream().findFirst().orElse(null); - FXUtils.setOverflowHidden(this, true); + FXUtils.setOverflowHidden(this); } @Override diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ComponentListCell.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ComponentListCell.java index 059919a93..234eefb38 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ComponentListCell.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ComponentListCell.java @@ -126,7 +126,7 @@ class ComponentListCell extends StackPane { VBox container = new VBox(); container.setPadding(new Insets(8, 0, 0, 0)); FXUtils.setLimitHeight(container, 0); - FXUtils.setOverflowHidden(container, true); + FXUtils.setOverflowHidden(container); container.getChildren().setAll(content); groupNode.setBottom(container); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/Navigator.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/Navigator.java index 730890b5d..f7dd09d3a 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/Navigator.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/Navigator.java @@ -140,7 +140,7 @@ public class Navigator extends TransitionPane { if (content instanceof Region) { ((Region) content).setMinSize(0, 0); - FXUtils.setOverflowHidden((Region) content, true); + FXUtils.setOverflowHidden((Region) content); } } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorSkin.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorSkin.java index 6cfc04909..4fcddf285 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorSkin.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorSkin.java @@ -83,7 +83,7 @@ public class DecoratorSkin extends SkinBase { skinnable.setDrawerWrapper(container); container.getStyleClass().add("jfx-decorator-drawer"); container.backgroundProperty().bind(skinnable.backgroundProperty()); - FXUtils.setOverflowHidden(container, true); + FXUtils.setOverflowHidden(container); // bottom layer { contentPlaceHolder = new StackPane(); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/RootPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/RootPage.java index cf9f5dc3b..16c7a13e2 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/RootPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/RootPage.java @@ -18,12 +18,10 @@ package org.jackhuang.hmcl.ui.main; import javafx.application.Platform; -import javafx.scene.Node; +import javafx.geometry.Insets; import javafx.scene.control.SkinBase; import javafx.scene.layout.BorderPane; import javafx.scene.layout.StackPane; -import javafx.scene.paint.Color; -import javafx.scene.shape.Rectangle; import org.jackhuang.hmcl.event.EventBus; import org.jackhuang.hmcl.event.RefreshedVersionsEvent; import org.jackhuang.hmcl.game.HMCLGameRepository; @@ -42,13 +40,11 @@ import org.jackhuang.hmcl.ui.account.AddAccountPane; import org.jackhuang.hmcl.ui.animation.ContainerAnimations; import org.jackhuang.hmcl.ui.construct.AdvancedListBox; import org.jackhuang.hmcl.ui.construct.AdvancedListItem; -import org.jackhuang.hmcl.ui.construct.PopupMenu; import org.jackhuang.hmcl.ui.decorator.DecoratorNavigatorPage; import org.jackhuang.hmcl.ui.download.ModpackInstallWizardProvider; import org.jackhuang.hmcl.ui.profile.ProfileAdvancedListItem; import org.jackhuang.hmcl.ui.profile.ProfileList; import org.jackhuang.hmcl.ui.versions.GameAdvancedListItem; -import org.jackhuang.hmcl.ui.versions.GameItem; import org.jackhuang.hmcl.ui.versions.GameList; import org.jackhuang.hmcl.ui.versions.Versions; import org.jackhuang.hmcl.upgrade.UpdateChecker; @@ -209,28 +205,24 @@ public class RootPage extends DecoratorNavigatorPage { BorderPane root = new BorderPane(); { - BorderPane leftRootPane = new BorderPane(); - FXUtils.setLimitWidth(leftRootPane, 200); - StackPane drawerContainer = new StackPane(); + FXUtils.setLimitWidth(drawerContainer, 200); drawerContainer.getStyleClass().add("gray-background"); drawerContainer.getChildren().setAll(sideBar); - leftRootPane.setCenter(drawerContainer); + FXUtils.setOverflowHidden(drawerContainer, 8); - Rectangle separator = new Rectangle(); - separator.heightProperty().bind(root.heightProperty()); - separator.setWidth(1); - separator.setFill(Color.GRAY); - - leftRootPane.setRight(separator); - - root.setLeft(leftRootPane); + StackPane wrapper = new StackPane(drawerContainer); + wrapper.setPadding(new Insets(4, 0, 4, 4)); + root.setLeft(wrapper); } { control.navigator.getStyleClass().add("jfx-decorator-content-container"); control.navigator.init(getSkinnable().getMainPage()); - root.setCenter(control.navigator); + FXUtils.setOverflowHidden(control.navigator, 8); + StackPane wrapper = new StackPane(control.navigator); + wrapper.setPadding(new Insets(4)); + root.setCenter(wrapper); } getChildren().setAll(root); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/GameList.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/GameList.java index 8cced310d..14eff58ad 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/GameList.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/GameList.java @@ -22,6 +22,7 @@ import javafx.beans.property.ReadOnlyObjectProperty; import javafx.beans.property.ReadOnlyObjectWrapper; import javafx.scene.Node; import javafx.scene.control.ToggleGroup; +import javafx.scene.layout.HBox; import org.jackhuang.hmcl.event.EventBus; import org.jackhuang.hmcl.event.RefreshingVersionsEvent; import org.jackhuang.hmcl.game.HMCLGameRepository; @@ -35,7 +36,7 @@ import org.jackhuang.hmcl.ui.download.ModpackInstallWizardProvider; import org.jackhuang.hmcl.ui.download.VanillaInstallWizardProvider; import org.jackhuang.hmcl.util.versioning.VersionNumber; -import java.util.Arrays; +import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.List; @@ -130,16 +131,21 @@ public class GameList extends ListPageBase implements DecoratorPag public GameListSkin() { super(GameList.this); + + HBox hbox = new HBox( + createToolbarButton(i18n("install.new_game"), SVG::plus, GameList.this::addNewGame), + createToolbarButton(i18n("install.modpack"), SVG::importIcon, GameList.this::importModpack), + createToolbarButton(i18n("button.refresh"), SVG::refresh, GameList.this::refresh), + createToolbarButton(i18n("settings.type.global.manage"), SVG::gear, GameList.this::modifyGlobalGameSettings) + ); + hbox.setPickOnBounds(false); + + state.set(new State(i18n("version.manage"), hbox, true, false, true)); } @Override protected List initializeToolbar(GameList skinnable) { - return Arrays.asList( - createToolbarButton(i18n("install.new_game"), SVG::plus, skinnable::addNewGame), - createToolbarButton(i18n("install.modpack"), SVG::importIcon, skinnable::importModpack), - createToolbarButton(i18n("button.refresh"), SVG::refresh, skinnable::refresh), - createToolbarButton(i18n("settings.type.global.manage"), SVG::gear, skinnable::modifyGlobalGameSettings) - ); + return Collections.emptyList(); } } } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/GameListItemSkin.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/GameListItemSkin.java index 26ed5f975..1b385abd2 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/GameListItemSkin.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/GameListItemSkin.java @@ -91,7 +91,7 @@ public class GameListItemSkin extends SkinBase { right.getChildren().add(btnManage); root.setRight(right); - root.setStyle("-fx-background-color: white; -fx-padding: 8 8 8 0;"); + root.setStyle("-fx-background-color: white; -fx-background-radius: 4; -fx-padding: 8 8 8 0;"); JFXDepthManager.setDepth(root, 1); getChildren().setAll(root); diff --git a/HMCL/src/main/resources/assets/css/root.css b/HMCL/src/main/resources/assets/css/root.css index e27fa60a6..0f0a344b2 100644 --- a/HMCL/src/main/resources/assets/css/root.css +++ b/HMCL/src/main/resources/assets/css/root.css @@ -367,7 +367,7 @@ } .jfx-tool-bar HBox { - -fx-alignment: center; + -fx-alignment: center-left; -fx-padding: 0.0 5.0; }