diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/ThemePackManagementPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/ThemePackManagementPage.java index afa4652d84..382714e599 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/ThemePackManagementPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/ThemePackManagementPage.java @@ -39,34 +39,16 @@ import javafx.scene.image.Image; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; -import javafx.scene.layout.BorderPane; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Priority; -import javafx.scene.layout.Region; -import javafx.scene.layout.StackPane; +import javafx.scene.layout.*; import javafx.stage.FileChooser; import javafx.stage.Stage; import javafx.util.Duration; -import org.jackhuang.hmcl.theme.Theme; -import org.jackhuang.hmcl.theme.ThemePackAuthor; -import org.jackhuang.hmcl.theme.ThemePackExporter; -import org.jackhuang.hmcl.theme.ThemePackManager; -import org.jackhuang.hmcl.theme.ThemePackManifest; -import org.jackhuang.hmcl.theme.ThemePackResource; -import org.jackhuang.hmcl.theme.Themes; -import org.jackhuang.hmcl.ui.FXUtils; -import org.jackhuang.hmcl.ui.ListPageBase; -import org.jackhuang.hmcl.ui.SVG; -import org.jackhuang.hmcl.ui.SVGContainer; -import org.jackhuang.hmcl.ui.Controllers; +import org.jackhuang.hmcl.theme.*; +import org.jackhuang.hmcl.ui.*; import org.jackhuang.hmcl.ui.animation.ContainerAnimations; import org.jackhuang.hmcl.ui.animation.TransitionPane; -import org.jackhuang.hmcl.ui.construct.ComponentList; -import org.jackhuang.hmcl.ui.construct.DialogCloseEvent; -import org.jackhuang.hmcl.ui.construct.ImageContainer; +import org.jackhuang.hmcl.ui.construct.*; import org.jackhuang.hmcl.ui.construct.MessageDialogPane.MessageType; -import org.jackhuang.hmcl.ui.construct.SpinnerPane; -import org.jackhuang.hmcl.ui.construct.TwoLineListItem; import org.jackhuang.hmcl.ui.decorator.DecoratorPage; import org.jackhuang.hmcl.util.StringUtils; import org.jackhuang.hmcl.util.TaskCancellationAction; @@ -76,18 +58,11 @@ import java.io.IOException; import java.nio.file.Path; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; +import java.util.*; import java.util.function.Predicate; import java.util.stream.Collectors; -import static org.jackhuang.hmcl.ui.FXUtils.ignoreEvent; -import static org.jackhuang.hmcl.ui.FXUtils.onEscPressed; -import static org.jackhuang.hmcl.ui.FXUtils.runInFX; +import static org.jackhuang.hmcl.ui.FXUtils.*; import static org.jackhuang.hmcl.ui.ToolbarListPageSkin.createToolbarButton2; import static org.jackhuang.hmcl.util.i18n.I18n.i18n; import static org.jackhuang.hmcl.util.logging.Logger.LOG; @@ -125,6 +100,8 @@ public ThemePackManagementPage(Runnable onThemePacksChanged) { setItems(filteredList); setOnFailedAction(event -> refreshThemePacks()); refreshThemePacks(); + + FXUtils.applyDragListener(this, it -> "hmcl-theme".equals(FileUtils.getExtension(it)), paths -> paths.forEach(this::importThemePackImpl)); } /// Creates the default list skin for the management page. @@ -185,6 +162,10 @@ private void importThemePack() { return; } + importThemePackImpl(file); + } + + private void importThemePackImpl(Path file) { ThemePackManager.InstalledThemePack themePack; try { themePack = ThemePackManager.install(file);