Parcourir la source

disable export-button as long as no batch run is finished

Armin Schrenk il y a 4 ans
Parent
commit
749e0ac02d

+ 12 - 0
main/ui/src/main/java/org/cryptomator/ui/health/CheckListController.java

@@ -19,12 +19,14 @@ import javafx.fxml.FXML;
 import javafx.scene.control.ListView;
 import java.io.IOException;
 import java.util.Collection;
+import java.util.Set;
 import java.util.concurrent.ExecutorService;
 
 @HealthCheckScoped
 public class CheckListController implements FxController {
 
 	private static final Logger LOG = LoggerFactory.getLogger(CheckListController.class);
+	private static final Set<Worker.State> endStates = Set.of(Worker.State.FAILED, Worker.State.CANCELLED, Worker.State.SUCCEEDED);
 
 	private final ObservableList<HealthCheckTask> tasks;
 	private final ReportWriter reportWriter;
@@ -32,6 +34,7 @@ public class CheckListController implements FxController {
 	private final ObjectProperty<HealthCheckTask> selectedTask;
 	private final SimpleObjectProperty<Worker<?>> runningTask;
 	private final Binding<Boolean> running;
+	private final Binding<Boolean> finished;
 	private final BooleanBinding anyCheckSelected;
 	private final BooleanBinding readyToRun;
 
@@ -47,6 +50,7 @@ public class CheckListController implements FxController {
 		this.selectedTask = selectedTask;
 		this.runningTask = new SimpleObjectProperty<>();
 		this.running = EasyBind.wrapNullable(runningTask).mapObservable(Worker::runningProperty).orElse(false);
+		this.finished = EasyBind.wrapNullable(runningTask).mapObservable(Worker::stateProperty).map(endStates::contains).orElse(false);
 		this.anyCheckSelected = selectedTask.isNotNull();
 		this.readyToRun = runningTask.isNull();
 	}
@@ -109,6 +113,14 @@ public class CheckListController implements FxController {
 		return running;
 	}
 
+	public boolean isFinished() {
+		return finished.getValue();
+	}
+
+	public Binding<Boolean> finishedProperty() {
+		return finished;
+	}
+
 	public boolean isAnyCheckSelected() {
 		return anyCheckSelected.get();
 	}

+ 1 - 2
main/ui/src/main/resources/fxml/health_check_list.fxml

@@ -31,8 +31,7 @@
 		</HBox>
 		<ButtonBar buttonMinWidth="120" buttonOrder="+X">
 			<buttons>
-				<!-- TODO: hide/disable if no results yet -->
-				<Button text="TODO Export Results" ButtonBar.buttonData="NEXT_FORWARD" disable="${controller.running}" onAction="#exportResults"/>
+				<Button text="TODO Export Results" ButtonBar.buttonData="NEXT_FORWARD" disable="${!controller.finished}" onAction="#exportResults"/>
 			</buttons>
 		</ButtonBar>
 	</children>