alt: root page look

This commit is contained in:
huanghongxun 2020-03-02 16:21:16 +08:00
parent 11d47bf9b1
commit c093c6e23d
10 changed files with 43 additions and 44 deletions

View File

@ -204,19 +204,19 @@ public final class FXUtils {
return field.getProperties().containsKey("FXUtils.validation"); return field.getProperties().containsKey("FXUtils.validation");
} }
public static void setOverflowHidden(Region region, boolean hidden) { public static Rectangle setOverflowHidden(Region region) {
if (hidden) { Rectangle rectangle = new Rectangle();
Rectangle rectangle = new Rectangle(); rectangle.widthProperty().bind(region.widthProperty());
rectangle.widthProperty().bind(region.widthProperty()); rectangle.heightProperty().bind(region.heightProperty());
rectangle.heightProperty().bind(region.heightProperty()); region.setClip(rectangle);
region.setClip(rectangle); return rectangle;
} else {
region.setClip(null);
}
} }
public static boolean getOverflowHidden(Region region) { public static Rectangle setOverflowHidden(Region region, double arc) {
return region.getClip() != null; Rectangle rectangle = setOverflowHidden(region);
rectangle.setArcWidth(arc);
rectangle.setArcHeight(arc);
return rectangle;
} }
public static void setLimitWidth(Region region, double width) { public static void setLimitWidth(Region region, double width) {

View File

@ -44,12 +44,13 @@ public abstract class ToolbarListPageSkin<T extends ListPageBase<? extends Node>
BorderPane root = new BorderPane(); BorderPane root = new BorderPane();
{ List<Node> toolbarButtons = initializeToolbar(skinnable);
if (!toolbarButtons.isEmpty()) {
HBox toolbar = new HBox(); HBox toolbar = new HBox();
toolbar.getStyleClass().add("jfx-tool-bar-second"); toolbar.getStyleClass().add("jfx-tool-bar-second");
JFXDepthManager.setDepth(toolbar, 1); JFXDepthManager.setDepth(toolbar, 1);
toolbar.setPickOnBounds(false); toolbar.setPickOnBounds(false);
toolbar.getChildren().setAll(initializeToolbar(skinnable)); toolbar.getChildren().setAll(toolbarButtons);
root.setTop(toolbar); root.setTop(toolbar);
} }

View File

@ -32,7 +32,7 @@ public class TransitionPane extends StackPane implements AnimationHandler {
{ {
currentNode = getChildren().stream().findFirst().orElse(null); currentNode = getChildren().stream().findFirst().orElse(null);
FXUtils.setOverflowHidden(this, true); FXUtils.setOverflowHidden(this);
} }
@Override @Override

View File

@ -126,7 +126,7 @@ class ComponentListCell extends StackPane {
VBox container = new VBox(); VBox container = new VBox();
container.setPadding(new Insets(8, 0, 0, 0)); container.setPadding(new Insets(8, 0, 0, 0));
FXUtils.setLimitHeight(container, 0); FXUtils.setLimitHeight(container, 0);
FXUtils.setOverflowHidden(container, true); FXUtils.setOverflowHidden(container);
container.getChildren().setAll(content); container.getChildren().setAll(content);
groupNode.setBottom(container); groupNode.setBottom(container);

View File

@ -140,7 +140,7 @@ public class Navigator extends TransitionPane {
if (content instanceof Region) { if (content instanceof Region) {
((Region) content).setMinSize(0, 0); ((Region) content).setMinSize(0, 0);
FXUtils.setOverflowHidden((Region) content, true); FXUtils.setOverflowHidden((Region) content);
} }
} }

View File

@ -83,7 +83,7 @@ public class DecoratorSkin extends SkinBase<Decorator> {
skinnable.setDrawerWrapper(container); skinnable.setDrawerWrapper(container);
container.getStyleClass().add("jfx-decorator-drawer"); container.getStyleClass().add("jfx-decorator-drawer");
container.backgroundProperty().bind(skinnable.backgroundProperty()); container.backgroundProperty().bind(skinnable.backgroundProperty());
FXUtils.setOverflowHidden(container, true); FXUtils.setOverflowHidden(container);
// bottom layer // bottom layer
{ {
contentPlaceHolder = new StackPane(); contentPlaceHolder = new StackPane();

View File

@ -18,12 +18,10 @@
package org.jackhuang.hmcl.ui.main; package org.jackhuang.hmcl.ui.main;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.scene.Node; import javafx.geometry.Insets;
import javafx.scene.control.SkinBase; import javafx.scene.control.SkinBase;
import javafx.scene.layout.BorderPane; import javafx.scene.layout.BorderPane;
import javafx.scene.layout.StackPane; 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.EventBus;
import org.jackhuang.hmcl.event.RefreshedVersionsEvent; import org.jackhuang.hmcl.event.RefreshedVersionsEvent;
import org.jackhuang.hmcl.game.HMCLGameRepository; 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.animation.ContainerAnimations;
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;
import org.jackhuang.hmcl.ui.construct.PopupMenu;
import org.jackhuang.hmcl.ui.decorator.DecoratorNavigatorPage; import org.jackhuang.hmcl.ui.decorator.DecoratorNavigatorPage;
import org.jackhuang.hmcl.ui.download.ModpackInstallWizardProvider; import org.jackhuang.hmcl.ui.download.ModpackInstallWizardProvider;
import org.jackhuang.hmcl.ui.profile.ProfileAdvancedListItem; import org.jackhuang.hmcl.ui.profile.ProfileAdvancedListItem;
import org.jackhuang.hmcl.ui.profile.ProfileList; import org.jackhuang.hmcl.ui.profile.ProfileList;
import org.jackhuang.hmcl.ui.versions.GameAdvancedListItem; 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.GameList;
import org.jackhuang.hmcl.ui.versions.Versions; import org.jackhuang.hmcl.ui.versions.Versions;
import org.jackhuang.hmcl.upgrade.UpdateChecker; import org.jackhuang.hmcl.upgrade.UpdateChecker;
@ -209,28 +205,24 @@ public class RootPage extends DecoratorNavigatorPage {
BorderPane root = new BorderPane(); BorderPane root = new BorderPane();
{ {
BorderPane leftRootPane = new BorderPane();
FXUtils.setLimitWidth(leftRootPane, 200);
StackPane drawerContainer = new StackPane(); StackPane drawerContainer = new StackPane();
FXUtils.setLimitWidth(drawerContainer, 200);
drawerContainer.getStyleClass().add("gray-background"); drawerContainer.getStyleClass().add("gray-background");
drawerContainer.getChildren().setAll(sideBar); drawerContainer.getChildren().setAll(sideBar);
leftRootPane.setCenter(drawerContainer); FXUtils.setOverflowHidden(drawerContainer, 8);
Rectangle separator = new Rectangle(); StackPane wrapper = new StackPane(drawerContainer);
separator.heightProperty().bind(root.heightProperty()); wrapper.setPadding(new Insets(4, 0, 4, 4));
separator.setWidth(1); root.setLeft(wrapper);
separator.setFill(Color.GRAY);
leftRootPane.setRight(separator);
root.setLeft(leftRootPane);
} }
{ {
control.navigator.getStyleClass().add("jfx-decorator-content-container"); control.navigator.getStyleClass().add("jfx-decorator-content-container");
control.navigator.init(getSkinnable().getMainPage()); 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); getChildren().setAll(root);

View File

@ -22,6 +22,7 @@ import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.beans.property.ReadOnlyObjectWrapper; import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.scene.Node; import javafx.scene.Node;
import javafx.scene.control.ToggleGroup; import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.HBox;
import org.jackhuang.hmcl.event.EventBus; import org.jackhuang.hmcl.event.EventBus;
import org.jackhuang.hmcl.event.RefreshingVersionsEvent; import org.jackhuang.hmcl.event.RefreshingVersionsEvent;
import org.jackhuang.hmcl.game.HMCLGameRepository; 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.ui.download.VanillaInstallWizardProvider;
import org.jackhuang.hmcl.util.versioning.VersionNumber; import org.jackhuang.hmcl.util.versioning.VersionNumber;
import java.util.Arrays; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -130,16 +131,21 @@ public class GameList extends ListPageBase<GameListItem> implements DecoratorPag
public GameListSkin() { public GameListSkin() {
super(GameList.this); 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 @Override
protected List<Node> initializeToolbar(GameList skinnable) { protected List<Node> initializeToolbar(GameList skinnable) {
return Arrays.asList( return Collections.emptyList();
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)
);
} }
} }
} }

View File

@ -91,7 +91,7 @@ public class GameListItemSkin extends SkinBase<GameListItem> {
right.getChildren().add(btnManage); right.getChildren().add(btnManage);
root.setRight(right); 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); JFXDepthManager.setDepth(root, 1);
getChildren().setAll(root); getChildren().setAll(root);

View File

@ -367,7 +367,7 @@
} }
.jfx-tool-bar HBox { .jfx-tool-bar HBox {
-fx-alignment: center; -fx-alignment: center-left;
-fx-padding: 0.0 5.0; -fx-padding: 0.0 5.0;
} }