From 9f494a35ec21879be4451c174fc2338d2b4a8761 Mon Sep 17 00:00:00 2001 From: huangyuhui Date: Mon, 3 Sep 2018 23:58:23 +0800 Subject: [PATCH] Add a button for deleting the game icon --- .../hmcl/ui/construct/ImagePickerItem.java | 26 +++++++++++++++---- .../hmcl/ui/profile/ProfilePage.java | 5 +--- .../hmcl/ui/versions/VersionSettingsPage.java | 14 +++++++++- .../assets/fxml/version/version-settings.fxml | 14 +++++----- 4 files changed, 43 insertions(+), 16 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ImagePickerItem.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ImagePickerItem.java index df67d3989..cb371253d 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ImagePickerItem.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ImagePickerItem.java @@ -25,11 +25,10 @@ import static org.jackhuang.hmcl.util.i18n.I18n.i18n; public final class ImagePickerItem extends BorderPane { private final ImageView imageView; - private final JFXButton selectButton; - private final Label label; private final StringProperty title = new SimpleStringProperty(this, "title"); private final ObjectProperty> onSelectButtonClicked = new SimpleObjectProperty<>(this, "onSelectButtonClicked"); + private final ObjectProperty> onDeleteButtonClicked = new SimpleObjectProperty<>(this, "onDeleteButtonClicked"); private final ObjectProperty image = new SimpleObjectProperty<>(this, "image"); public ImagePickerItem() { @@ -37,21 +36,26 @@ public final class ImagePickerItem extends BorderPane { imageView.setSmooth(false); imageView.setPreserveRatio(true); - selectButton = new JFXButton(); + JFXButton selectButton = new JFXButton(); selectButton.setGraphic(SVG.pencil(Theme.blackFillBinding(), 15, 15)); selectButton.onMouseClickedProperty().bind(onSelectButtonClicked); selectButton.getStyleClass().add("toggle-icon4"); + JFXButton deleteButton = new JFXButton(); + deleteButton.setGraphic(SVG.close(Theme.blackFillBinding(), 15, 15)); + deleteButton.onMouseClickedProperty().bind(onDeleteButtonClicked); + deleteButton.getStyleClass().add("toggle-icon4"); + FXUtils.installTooltip(selectButton, i18n("button.edit")); HBox hBox = new HBox(); - hBox.getChildren().setAll(imageView, selectButton); + hBox.getChildren().setAll(imageView, selectButton, deleteButton); hBox.setAlignment(Pos.CENTER_RIGHT); hBox.setSpacing(8); setRight(hBox); VBox vBox = new VBox(); - label = new Label(); + Label label = new Label(); label.textProperty().bind(title); vBox.getChildren().setAll(label); vBox.setAlignment(Pos.CENTER_LEFT); @@ -84,6 +88,18 @@ public final class ImagePickerItem extends BorderPane { this.onSelectButtonClicked.set(onSelectButtonClicked); } + public EventHandler getOnDeleteButtonClicked() { + return onDeleteButtonClicked.get(); + } + + public ObjectProperty> onDeleteButtonClickedProperty() { + return onDeleteButtonClicked; + } + + public void setOnDeleteButtonClicked(EventHandler onDeleteButtonClicked) { + this.onDeleteButtonClicked.set(onDeleteButtonClicked); + } + public Image getImage() { return image.get(); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/profile/ProfilePage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/profile/ProfilePage.java index 4fb22a2be..9b9b921ae 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/profile/ProfilePage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/profile/ProfilePage.java @@ -46,7 +46,6 @@ public final class ProfilePage extends StackPane implements DecoratorPage { @FXML private JFXTextField txtProfileName; @FXML private FileItem gameDir; @FXML private JFXButton btnSave; - @FXML private JFXButton btnDelete; @FXML private JFXCheckBox toggleUseRelativePath; /** @@ -72,9 +71,7 @@ public final class ProfilePage extends StackPane implements DecoratorPage { btnSave.setDisable(!txtProfileName.validate() || StringUtils.isBlank(getLocation())); }); gameDir.convertToRelativePathProperty().bind(toggleUseRelativePath.selectedProperty()); - if (profile == null) { - btnDelete.setVisible(false); - } else { + if (profile != null) { toggleUseRelativePath.setSelected(profile.isUseRelativePath()); } } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionSettingsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionSettingsPage.java index 1bcb87047..24a0a1f8a 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionSettingsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionSettingsPage.java @@ -82,6 +82,7 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag @FXML private JFXTextField txtServerIP; @FXML private ComponentList advancedSettingsPane; @FXML private ComponentList componentList; + @FXML private ComponentList iconPickerItemWrapper; @FXML private JFXComboBox cboLauncherVisibility; @FXML private JFXCheckBox chkFullscreen; @FXML private Label lblPhysicalMemory; @@ -152,7 +153,7 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag this.versionId = versionId; if (versionId == null) { - componentList.getContent().remove(iconPickerItem); + rootPane.getChildren().remove(iconPickerItemWrapper); rootPane.getChildren().remove(settingsTypePane); chkEnableSpecificSettings.setSelected(true); } @@ -283,6 +284,17 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag } } + @FXML + private void onDeleteIcon() { + if (versionId == null) + return; + + File iconFile = profile.getRepository().getVersionIcon(versionId); + if (iconFile.exists()) + iconFile.delete(); + loadIcon(); + } + private void loadIcon() { if (versionId == null) { iconPickerItem.setImage(new Image("/assets/img/grass.png")); diff --git a/HMCL/src/main/resources/assets/fxml/version/version-settings.fxml b/HMCL/src/main/resources/assets/fxml/version/version-settings.fxml index 6591599fd..ddb473acb 100644 --- a/HMCL/src/main/resources/assets/fxml/version/version-settings.fxml +++ b/HMCL/src/main/resources/assets/fxml/version/version-settings.fxml @@ -12,7 +12,13 @@ xmlns:fx="http://javafx.com/fxml" type="StackPane"> - + + + + + + + @@ -27,10 +33,6 @@ - - - - @@ -113,7 +115,7 @@ - +