From 0ae139e17acf7e8498b63b933161244e9700868f Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Thu, 11 Apr 2019 15:18:46 +0200 Subject: [PATCH] Add button/dialog to settings to edit the ignore list --- .../main/java/ctbrec/ui/ThumbOverviewTab.java | 1 + .../ctbrec/ui/settings/IgnoreListDialog.java | 94 +++++++++++++++++++ .../java/ctbrec/ui/settings/SettingsTab.java | 12 +++ 3 files changed, 107 insertions(+) create mode 100644 client/src/main/java/ctbrec/ui/settings/IgnoreListDialog.java diff --git a/client/src/main/java/ctbrec/ui/ThumbOverviewTab.java b/client/src/main/java/ctbrec/ui/ThumbOverviewTab.java index dc452857..79c26de8 100644 --- a/client/src/main/java/ctbrec/ui/ThumbOverviewTab.java +++ b/client/src/main/java/ctbrec/ui/ThumbOverviewTab.java @@ -570,6 +570,7 @@ public class ThumbOverviewTab extends Tab implements TabSelectionListener { Config.getInstance().getSettings().modelsIgnored.add(model); grid.getChildren().remove(thumbCell); } + selectedThumbCells.clear(); } private void showAddToFollowedAnimation(ThumbCell thumbCell) { diff --git a/client/src/main/java/ctbrec/ui/settings/IgnoreListDialog.java b/client/src/main/java/ctbrec/ui/settings/IgnoreListDialog.java new file mode 100644 index 00000000..06c0815f --- /dev/null +++ b/client/src/main/java/ctbrec/ui/settings/IgnoreListDialog.java @@ -0,0 +1,94 @@ +package ctbrec.ui.settings; + +import java.io.IOException; +import java.io.InputStream; +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import ctbrec.Config; +import ctbrec.Model; +import ctbrec.ui.controls.Dialogs; +import javafx.geometry.Insets; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.ButtonType; +import javafx.scene.control.Dialog; +import javafx.scene.control.ListView; +import javafx.scene.control.SelectionMode; +import javafx.scene.image.Image; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.layout.GridPane; +import javafx.stage.Modality; +import javafx.stage.Stage; + +public class IgnoreListDialog extends Dialog { + + private static final transient Logger LOG = LoggerFactory.getLogger(IgnoreListDialog.class); + + private Scene parent; + private ListView ignoreList; + + public IgnoreListDialog(Scene parent) { + this.parent = parent; + createGui(); + loadIgnoredModels(); + } + + private void createGui() { + setTitle("Ignore List"); + getDialogPane().getButtonTypes().addAll(ButtonType.OK); + initModality(Modality.APPLICATION_MODAL); + setResizable(true); + InputStream icon = Dialogs.class.getResourceAsStream("/icon.png"); + Stage stage = (Stage) getDialogPane().getScene().getWindow(); + stage.getIcons().add(new Image(icon)); + if(parent != null) { + stage.getScene().getStylesheets().addAll(parent.getStylesheets()); + } + + GridPane grid = new GridPane(); + grid.setHgap(10); + grid.setVgap(10); + grid.setPadding(new Insets(20, 150, 10, 10)); + + ignoreList = new ListView<>(); + ignoreList.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); + ignoreList.addEventHandler(KeyEvent.KEY_PRESSED, event -> { + if (event.getCode() == KeyCode.DELETE) { + removeSelectedModels(); + } + }); + grid.add(ignoreList, 0, 0); + + Button remove = new Button("Remove"); + remove.setOnAction(evt -> removeSelectedModels()); + grid.add(remove, 0, 1); + + getDialogPane().setContent(grid); + setResizable(true); + } + + private void removeSelectedModels() { + List selectedModels = ignoreList.getSelectionModel().getSelectedItems(); + if(selectedModels.isEmpty()) { + return; + } else { + Config.getInstance().getSettings().modelsIgnored.removeAll(selectedModels); + ignoreList.getItems().removeAll(selectedModels); + LOG.debug(Config.getInstance().getSettings().modelsIgnored.toString()); + try { + Config.getInstance().save(); + } catch (IOException e) { + LOG.warn("Couldn't save config", e); + } + } + } + + private void loadIgnoredModels() { + List ignored = Config.getInstance().getSettings().modelsIgnored; + ignoreList.getItems().addAll(ignored); + } +} diff --git a/client/src/main/java/ctbrec/ui/settings/SettingsTab.java b/client/src/main/java/ctbrec/ui/settings/SettingsTab.java index d6fb743b..4bf75b45 100644 --- a/client/src/main/java/ctbrec/ui/settings/SettingsTab.java +++ b/client/src/main/java/ctbrec/ui/settings/SettingsTab.java @@ -27,6 +27,7 @@ import javafx.geometry.HPos; import javafx.geometry.Insets; import javafx.scene.Node; import javafx.scene.control.Accordion; +import javafx.scene.control.Button; import javafx.scene.control.CheckBox; import javafx.scene.control.ComboBox; import javafx.scene.control.Label; @@ -136,6 +137,7 @@ public class SettingsTab extends Tab implements TabSelectionListener { ActionSettingsPanel actions = new ActionSettingsPanel(this, recorder); rightSide.getChildren().add(actions); proxySettingsPane = new ProxySettingsPane(this); + rightSide.getChildren().add(createIgnoreListPanel()); rightSide.getChildren().add(proxySettingsPane); for (int i = 0; i < sites.size(); i++) { Site site = sites.get(i); @@ -413,6 +415,16 @@ public class SettingsTab extends Tab implements TabSelectionListener { return locations; } + private Node createIgnoreListPanel() { + GridPane layout = createGridLayout(); + Button edit = new Button("Edit"); + edit.setOnAction(e -> new IgnoreListDialog(edit.getScene()).showAndWait()); + layout.add(edit, 0, 0); + TitledPane ignoreList = new TitledPane("Ignore List", layout); + ignoreList.setCollapsible(false); + return ignoreList; + } + private Node createGeneralPanel() { GridPane layout = createGridLayout(); int row = 0;