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");
}
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) {

View File

@ -44,12 +44,13 @@ public abstract class ToolbarListPageSkin<T extends ListPageBase<? extends Node>
BorderPane root = new BorderPane();
{
List<Node> 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);
}

View File

@ -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

View File

@ -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);

View File

@ -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);
}
}

View File

@ -83,7 +83,7 @@ public class DecoratorSkin extends SkinBase<Decorator> {
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();

View File

@ -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);

View File

@ -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<GameListItem> 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<Node> 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();
}
}
}

View File

@ -91,7 +91,7 @@ public class GameListItemSkin extends SkinBase<GameListItem> {
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);

View File

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