修复管理页面加载样式不统一的问题 (#5406)
This commit is contained in:
@@ -42,13 +42,11 @@ public abstract class ToolbarListPageSkin<E, P extends ListPageBase<E>> extends
|
|||||||
public ToolbarListPageSkin(P skinnable) {
|
public ToolbarListPageSkin(P skinnable) {
|
||||||
super(skinnable);
|
super(skinnable);
|
||||||
|
|
||||||
SpinnerPane spinnerPane = new SpinnerPane();
|
|
||||||
spinnerPane.loadingProperty().bind(skinnable.loadingProperty());
|
|
||||||
spinnerPane.failedReasonProperty().bind(skinnable.failedReasonProperty());
|
|
||||||
spinnerPane.onFailedActionProperty().bind(skinnable.onFailedActionProperty());
|
|
||||||
|
|
||||||
ComponentList root = new ComponentList();
|
ComponentList root = new ComponentList();
|
||||||
root.getStyleClass().add("no-padding");
|
root.getStyleClass().add("no-padding");
|
||||||
|
|
||||||
|
StackPane container = new StackPane();
|
||||||
|
container.getChildren().add(root);
|
||||||
StackPane.setMargin(root, new Insets(10));
|
StackPane.setMargin(root, new Insets(10));
|
||||||
|
|
||||||
List<Node> toolbarButtons = initializeToolbar(skinnable);
|
List<Node> toolbarButtons = initializeToolbar(skinnable);
|
||||||
@@ -60,19 +58,26 @@ public abstract class ToolbarListPageSkin<E, P extends ListPageBase<E>> extends
|
|||||||
root.getContent().add(toolbar);
|
root.getContent().add(toolbar);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SpinnerPane spinnerPane = new SpinnerPane();
|
||||||
|
spinnerPane.loadingProperty().bind(skinnable.loadingProperty());
|
||||||
|
spinnerPane.failedReasonProperty().bind(skinnable.failedReasonProperty());
|
||||||
|
spinnerPane.onFailedActionProperty().bind(skinnable.onFailedActionProperty());
|
||||||
|
|
||||||
|
ComponentList.setVgrow(spinnerPane, Priority.ALWAYS);
|
||||||
|
|
||||||
{
|
{
|
||||||
this.listView = new JFXListView<>();
|
this.listView = new JFXListView<>();
|
||||||
this.listView.setPadding(Insets.EMPTY);
|
this.listView.setPadding(Insets.EMPTY);
|
||||||
this.listView.setCellFactory(listView -> createListCell((JFXListView<E>) listView));
|
this.listView.setCellFactory(listView -> createListCell((JFXListView<E>) listView));
|
||||||
ComponentList.setVgrow(listView, Priority.ALWAYS);
|
|
||||||
Bindings.bindContent(this.listView.getItems(), skinnable.itemsProperty());
|
Bindings.bindContent(this.listView.getItems(), skinnable.itemsProperty());
|
||||||
FXUtils.ignoreEvent(listView, KeyEvent.KEY_PRESSED, e -> e.getCode() == KeyCode.ESCAPE);
|
FXUtils.ignoreEvent(listView, KeyEvent.KEY_PRESSED, e -> e.getCode() == KeyCode.ESCAPE);
|
||||||
root.getContent().add(listView);
|
|
||||||
|
spinnerPane.setContent(listView);
|
||||||
}
|
}
|
||||||
|
|
||||||
spinnerPane.setContent(root);
|
root.getContent().add(spinnerPane);
|
||||||
|
|
||||||
getChildren().setAll(spinnerPane);
|
getChildren().setAll(container);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Node wrap(Node node) {
|
public static Node wrap(Node node) {
|
||||||
|
|||||||
@@ -2,30 +2,27 @@ package org.jackhuang.hmcl.ui.versions;
|
|||||||
|
|
||||||
import com.jfoenix.controls.JFXButton;
|
import com.jfoenix.controls.JFXButton;
|
||||||
import com.jfoenix.controls.JFXListView;
|
import com.jfoenix.controls.JFXListView;
|
||||||
import javafx.beans.binding.Bindings;
|
|
||||||
import javafx.geometry.Insets;
|
import javafx.geometry.Insets;
|
||||||
import javafx.geometry.Pos;
|
import javafx.geometry.Pos;
|
||||||
|
import javafx.scene.Node;
|
||||||
|
import javafx.scene.control.ListCell;
|
||||||
import javafx.scene.control.Skin;
|
import javafx.scene.control.Skin;
|
||||||
import javafx.scene.control.SkinBase;
|
|
||||||
import javafx.scene.image.Image;
|
import javafx.scene.image.Image;
|
||||||
import javafx.scene.image.ImageView;
|
import javafx.scene.image.ImageView;
|
||||||
import javafx.scene.input.KeyCode;
|
|
||||||
import javafx.scene.input.KeyEvent;
|
|
||||||
import javafx.scene.layout.BorderPane;
|
import javafx.scene.layout.BorderPane;
|
||||||
import javafx.scene.layout.HBox;
|
import javafx.scene.layout.HBox;
|
||||||
import javafx.scene.layout.Priority;
|
import javafx.scene.layout.Priority;
|
||||||
import javafx.scene.layout.StackPane;
|
|
||||||
import javafx.stage.FileChooser;
|
import javafx.stage.FileChooser;
|
||||||
import org.jackhuang.hmcl.mod.LocalModFile;
|
import org.jackhuang.hmcl.mod.LocalModFile;
|
||||||
import org.jackhuang.hmcl.resourcepack.ResourcepackFile;
|
import org.jackhuang.hmcl.resourcepack.ResourcepackFile;
|
||||||
import org.jackhuang.hmcl.setting.Profile;
|
import org.jackhuang.hmcl.setting.Profile;
|
||||||
import org.jackhuang.hmcl.task.Schedulers;
|
import org.jackhuang.hmcl.task.Schedulers;
|
||||||
import org.jackhuang.hmcl.task.Task;
|
import org.jackhuang.hmcl.task.Task;
|
||||||
import org.jackhuang.hmcl.ui.Controllers;
|
import org.jackhuang.hmcl.ui.*;
|
||||||
import org.jackhuang.hmcl.ui.FXUtils;
|
import org.jackhuang.hmcl.ui.construct.MDListCell;
|
||||||
import org.jackhuang.hmcl.ui.ListPageBase;
|
import org.jackhuang.hmcl.ui.construct.MessageDialogPane;
|
||||||
import org.jackhuang.hmcl.ui.SVG;
|
import org.jackhuang.hmcl.ui.construct.RipplerContainer;
|
||||||
import org.jackhuang.hmcl.ui.construct.*;
|
import org.jackhuang.hmcl.ui.construct.TwoLineListItem;
|
||||||
import org.jackhuang.hmcl.util.io.FileUtils;
|
import org.jackhuang.hmcl.util.io.FileUtils;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
@@ -38,7 +35,6 @@ import java.util.List;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import static org.jackhuang.hmcl.ui.ToolbarListPageSkin.createToolbarButton2;
|
|
||||||
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
||||||
import static org.jackhuang.hmcl.util.logging.Logger.LOG;
|
import static org.jackhuang.hmcl.util.logging.Logger.LOG;
|
||||||
|
|
||||||
@@ -128,44 +124,24 @@ public final class ResourcepackListPage extends ListPageBase<ResourcepackListPag
|
|||||||
Controllers.navigate(Controllers.getDownloadPage());
|
Controllers.navigate(Controllers.getDownloadPage());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class ResourcepackListPageSkin extends SkinBase<ResourcepackListPage> {
|
private static final class ResourcepackListPageSkin extends ToolbarListPageSkin<ResourcepackInfoObject, ResourcepackListPage> {
|
||||||
private final JFXListView<ResourcepackInfoObject> listView;
|
|
||||||
|
|
||||||
private ResourcepackListPageSkin(ResourcepackListPage control) {
|
public ResourcepackListPageSkin(ResourcepackListPage control) {
|
||||||
super(control);
|
super(control);
|
||||||
|
}
|
||||||
|
|
||||||
StackPane pane = new StackPane();
|
@Override
|
||||||
pane.setPadding(new Insets(10));
|
protected List<Node> initializeToolbar(ResourcepackListPage skinnable) {
|
||||||
pane.getStyleClass().addAll("notice-pane");
|
return List.of(
|
||||||
|
createToolbarButton2(i18n("button.refresh"), SVG.REFRESH, skinnable::refresh),
|
||||||
ComponentList root = new ComponentList();
|
createToolbarButton2(i18n("resourcepack.add"), SVG.ADD, skinnable::onAddFiles),
|
||||||
root.getStyleClass().add("no-padding");
|
createToolbarButton2(i18n("resourcepack.download"), SVG.DOWNLOAD, skinnable::onDownload)
|
||||||
listView = new JFXListView<>();
|
|
||||||
|
|
||||||
FXUtils.ignoreEvent(listView, KeyEvent.KEY_PRESSED, e -> e.getCode() == KeyCode.ESCAPE);
|
|
||||||
|
|
||||||
HBox toolbar = new HBox();
|
|
||||||
toolbar.setAlignment(Pos.CENTER_LEFT);
|
|
||||||
toolbar.setPickOnBounds(false);
|
|
||||||
toolbar.getChildren().setAll(
|
|
||||||
createToolbarButton2(i18n("button.refresh"), SVG.REFRESH, control::refresh),
|
|
||||||
createToolbarButton2(i18n("resourcepack.add"), SVG.ADD, control::onAddFiles),
|
|
||||||
createToolbarButton2(i18n("resourcepack.download"), SVG.DOWNLOAD, control::onDownload)
|
|
||||||
);
|
);
|
||||||
root.getContent().add(toolbar);
|
}
|
||||||
|
|
||||||
SpinnerPane center = new SpinnerPane();
|
@Override
|
||||||
ComponentList.setVgrow(center, Priority.ALWAYS);
|
protected ListCell<ResourcepackInfoObject> createListCell(JFXListView<ResourcepackInfoObject> listView) {
|
||||||
center.loadingProperty().bind(control.loadingProperty());
|
return new ResourcepackListCell(listView, getSkinnable());
|
||||||
|
|
||||||
listView.setCellFactory(x -> new ResourcepackListCell(listView, control));
|
|
||||||
Bindings.bindContent(listView.getItems(), control.getItems());
|
|
||||||
|
|
||||||
center.setContent(listView);
|
|
||||||
root.getContent().add(center);
|
|
||||||
|
|
||||||
pane.getChildren().setAll(root);
|
|
||||||
getChildren().setAll(pane);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user