From dbeb81446592e553b2a62feaafc2b394dc416725 Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Sun, 26 Jan 2020 16:20:14 +0100 Subject: [PATCH] Add "Ignore" to context menu of RecordedModelsTab --- .../main/java/ctbrec/ui/controls/Dialogs.java | 19 +++++++++++++++---- .../ctbrec/ui/tabs/RecordedModelsTab.java | 15 ++++++++++++++- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/client/src/main/java/ctbrec/ui/controls/Dialogs.java b/client/src/main/java/ctbrec/ui/controls/Dialogs.java index ba7ba737..dbeea56e 100644 --- a/client/src/main/java/ctbrec/ui/controls/Dialogs.java +++ b/client/src/main/java/ctbrec/ui/controls/Dialogs.java @@ -1,5 +1,7 @@ package ctbrec.ui.controls; +import static javafx.scene.control.ButtonType.*; + import java.io.InputStream; import java.util.Optional; @@ -8,6 +10,7 @@ import javafx.application.Platform; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Alert; +import javafx.scene.control.Alert.AlertType; import javafx.scene.control.ButtonType; import javafx.scene.control.Dialog; import javafx.scene.control.TextArea; @@ -28,18 +31,18 @@ public class Dialogs { alert.setTitle("Error"); alert.setHeaderText(header); String content = text; - if(t != null) { + if (t != null) { content += " " + t.getLocalizedMessage(); } alert.setContentText(content); - if(parent != null) { + if (parent != null) { Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); stage.getScene().getStylesheets().addAll(parent.getStylesheets()); } alert.showAndWait(); }; - if(Platform.isFxApplicationThread()) { + if (Platform.isFxApplicationThread()) { r.run(); } else { Platform.runLater(r); @@ -56,7 +59,7 @@ public class Dialogs { InputStream icon = Dialogs.class.getResourceAsStream("/icon.png"); Stage stage = (Stage) dialog.getDialogPane().getScene().getWindow(); stage.getIcons().add(new Image(icon)); - if(parent != null) { + if (parent != null) { stage.getScene().getStylesheets().addAll(parent.getStylesheets()); } @@ -81,4 +84,12 @@ public class Dialogs { return dialog.showAndWait(); } + + public static boolean showConfirmDialog(String title, String message, String header, Scene parent) { + AutosizeAlert confirm = new AutosizeAlert(AlertType.CONFIRMATION, message, parent, YES, NO); + confirm.setTitle(title); + confirm.setHeaderText(header); + confirm.showAndWait(); + return confirm.getResult() == ButtonType.YES; + } } diff --git a/client/src/main/java/ctbrec/ui/tabs/RecordedModelsTab.java b/client/src/main/java/ctbrec/ui/tabs/RecordedModelsTab.java index 272b3668..821b479c 100644 --- a/client/src/main/java/ctbrec/ui/tabs/RecordedModelsTab.java +++ b/client/src/main/java/ctbrec/ui/tabs/RecordedModelsTab.java @@ -610,6 +610,8 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener { switchStreamSource.setOnAction(e -> switchStreamSource(selectedModels.get(0))); MenuItem follow = new MenuItem("Follow"); follow.setOnAction(e -> follow(selectedModels)); + MenuItem ignore = new MenuItem("Ignore"); + ignore.setOnAction(e -> ignore(selectedModels)); MenuItem notes = new MenuItem("Notes"); notes.setOnAction(e -> notes(selectedModels)); MenuItem openRecDir = new MenuItem("Open recording directory"); @@ -621,7 +623,7 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener { } else { menu.getItems().addAll(resumeRecording, pauseRecording); } - menu.getItems().addAll(copyUrl, openInPlayer, openInBrowser, openRecDir, switchStreamSource, follow, notes); + menu.getItems().addAll(copyUrl, openInPlayer, openInBrowser, openRecDir, switchStreamSource, follow, notes, ignore); if (selectedModels.size() > 1) { copyUrl.setDisable(true); @@ -634,6 +636,17 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener { return menu; } + private void ignore(ObservableList selectedModels) { + for (JavaFxModel fxModel : selectedModels) { + Model modelToIgnore = fxModel.getDelegate(); + Config.getInstance().getSettings().modelsIgnored.add(modelToIgnore); + } + boolean removeAsWell = Dialogs.showConfirmDialog("Ignore Model", null, "Remove as well?", getTabPane().getScene()); + if (removeAsWell) { + stopAction(selectedModels); + } + } + private void follow(ObservableList selectedModels) { new FollowAction(getTabPane(), new ArrayList(selectedModels)).execute(); }