From 6b871e56c8d01ca9e37864fb902344908e3de5a4 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Mon, 10 May 2021 15:38:52 +0200 Subject: [PATCH] hide results until task is started --- .../ui/health/CheckDetailController.java | 53 ++++++++++++------- .../resources/fxml/health_check_details.fxml | 7 ++- 2 files changed, 38 insertions(+), 22 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/health/CheckDetailController.java b/main/ui/src/main/java/org/cryptomator/ui/health/CheckDetailController.java index 7dd1603c9..60bb0522f 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/health/CheckDetailController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/health/CheckDetailController.java @@ -7,6 +7,7 @@ import org.cryptomator.ui.common.FxController; import javax.inject.Inject; import javafx.beans.binding.Binding; +import javafx.beans.binding.BooleanBinding; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleStringProperty; import javafx.collections.FXCollections; @@ -18,10 +19,11 @@ import javafx.scene.control.TableView; public class CheckDetailController implements FxController { - private final Binding> selectedResults; - private final OptionalBinding selectedTaskState; - private final Binding selectedTaskName; - private final Binding selectedTaskDescription; + private final Binding> results; + private final OptionalBinding taskState; + private final Binding taskName; + private final Binding taskDescription; + private final BooleanBinding producingResults; public TableView resultsTableView; public TableColumn resultDescriptionColumn; @@ -29,35 +31,50 @@ public class CheckDetailController implements FxController { @Inject public CheckDetailController(ObjectProperty selectedTask) { - this.selectedResults = EasyBind.wrapNullable(selectedTask).map(HealthCheckTask::results).orElse(FXCollections.emptyObservableList()); - this.selectedTaskState = EasyBind.wrapNullable(selectedTask).mapObservable(HealthCheckTask::stateProperty); - this.selectedTaskName = EasyBind.wrapNullable(selectedTask).map(HealthCheckTask::getTitle).orElse(""); - this.selectedTaskDescription = EasyBind.wrapNullable(selectedTask).map(task -> task.getCheck().toString()).orElse(""); + this.results = EasyBind.wrapNullable(selectedTask).map(HealthCheckTask::results).orElse(FXCollections.emptyObservableList()); + this.taskState = EasyBind.wrapNullable(selectedTask).mapObservable(HealthCheckTask::stateProperty); + this.taskName = EasyBind.wrapNullable(selectedTask).map(HealthCheckTask::getTitle).orElse(""); + this.taskDescription = EasyBind.wrapNullable(selectedTask).map(task -> task.getCheck().toString()).orElse(""); + this.producingResults = taskState.filter(this::producesResults).isPresent(); + } + + private boolean producesResults(Worker.State state) { + return switch (state) { + case SCHEDULED, RUNNING, SUCCEEDED -> true; + case READY, CANCELLED, FAILED -> false; + }; } @FXML public void initialize() { - resultsTableView.itemsProperty().bind(selectedResults); + resultsTableView.itemsProperty().bind(results); resultDescriptionColumn.setCellValueFactory(cellFeatures -> new SimpleStringProperty(cellFeatures.getValue().toString())); resultSeverityColumn.setCellValueFactory(cellFeatures -> new SimpleStringProperty(cellFeatures.getValue().getServerity().name())); } - /* Getter/Setter */ - public String getSelectedTaskName() { - return selectedTaskName.getValue(); + + public String getTaskName() { + return taskName.getValue(); } - public Binding selectedTaskNameProperty() { - return selectedTaskName; + public Binding taskNameProperty() { + return taskName; } - public String getSelectedTaskDescription() { - return selectedTaskDescription.getValue(); + public String getTaskDescription() { + return taskDescription.getValue(); } - public Binding selectedTaskDescriptionProperty() { - return selectedTaskDescription; + public Binding taskDescriptionProperty() { + return taskDescription; } + public boolean isProducingResults() { + return producingResults.get(); + } + + public BooleanBinding producingResultsProperty() { + return producingResults; + } } diff --git a/main/ui/src/main/resources/fxml/health_check_details.fxml b/main/ui/src/main/resources/fxml/health_check_details.fxml index 7fe7b9e3c..bf884f6dc 100644 --- a/main/ui/src/main/resources/fxml/health_check_details.fxml +++ b/main/ui/src/main/resources/fxml/health_check_details.fxml @@ -9,10 +9,9 @@ xmlns="http://javafx.com/javafx" fx:controller="org.cryptomator.ui.health.CheckDetailController" spacing="6"> -