From 394a74e56636ee1f81aa404d0e6c82da7d2260e6 Mon Sep 17 00:00:00 2001 From: Glavo Date: Tue, 7 Feb 2023 06:40:02 +0800 Subject: [PATCH] search bar --- .../hmcl/ui/versions/ModListPageSkin.java | 34 +++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPageSkin.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPageSkin.java index 9f5015628..32962f953 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPageSkin.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPageSkin.java @@ -61,6 +61,7 @@ import java.util.stream.Collectors; import static org.jackhuang.hmcl.ui.FXUtils.onEscPressed; import static org.jackhuang.hmcl.ui.ToolbarListPageSkin.createToolbarButton2; +import static org.jackhuang.hmcl.ui.ToolbarListPageSkin.wrap; import static org.jackhuang.hmcl.util.Lang.mapOf; import static org.jackhuang.hmcl.util.Pair.pair; import static org.jackhuang.hmcl.util.StringUtils.isNotBlank; @@ -81,14 +82,39 @@ class ModListPageSkin extends SkinBase { { TransitionPane toolBarPane = new TransitionPane(); + + HBox searchBar = new HBox(); HBox toolbarNormal = new HBox(); + HBox toolbarSelecting = new HBox(); + + // Search Bar + searchBar.setAlignment(Pos.CENTER); + searchBar.setPadding(new Insets(0, 5, 0, 5)); + + JFXTextField searchField = new JFXTextField(); + searchField.setPromptText(i18n("search")); + HBox.setHgrow(searchField, Priority.ALWAYS); + + JFXButton cancel = createToolbarButton2(null, SVG::close, + () -> { + searchField.clear(); + toolBarPane.setContent(toolbarNormal, ContainerAnimations.FADE.getAnimationProducer()); + }); + + searchBar.getChildren().setAll(searchField, cancel); + + // Toolbar Normal toolbarNormal.getChildren().setAll( createToolbarButton2(i18n("button.refresh"), SVG::refresh, skinnable::refresh), createToolbarButton2(i18n("mods.add"), SVG::plus, skinnable::add), createToolbarButton2(i18n("folder.mod"), SVG::folderOpen, skinnable::openModFolder), createToolbarButton2(i18n("mods.check_updates"), SVG::update, skinnable::checkUpdates), - createToolbarButton2(i18n("download"), SVG::downloadOutline, skinnable::download)); - HBox toolbarSelecting = new HBox(); + createToolbarButton2(i18n("download"), SVG::downloadOutline, skinnable::download), + createToolbarButton2(i18n("search"), SVG::magnify, + () -> toolBarPane.setContent(searchBar, ContainerAnimations.FADE.getAnimationProducer())) + ); + + // Toolbar Selecting toolbarSelecting.getChildren().setAll( createToolbarButton2(i18n("button.remove"), SVG::delete, () -> { Controllers.confirm(i18n("button.remove.confirm"), i18n("button.remove"), () -> { @@ -102,7 +128,9 @@ class ModListPageSkin extends SkinBase { createToolbarButton2(i18n("button.select_all"), SVG::selectAll, () -> listView.getSelectionModel().selectAll()), createToolbarButton2(i18n("button.cancel"), SVG::cancel, () -> - listView.getSelectionModel().clearSelection())); + listView.getSelectionModel().clearSelection()) + ); + FXUtils.onChangeAndOperate(listView.getSelectionModel().selectedItemProperty(), selectedItem -> { if (selectedItem == null) { toolBarPane.setContent(toolbarNormal, ContainerAnimations.FADE.getAnimationProducer());