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

This commit is contained in:
Armin Schrenk
2021-05-17 12:40:29 +02:00
parent a47c05c87d
commit 749e0ac02d
2 changed files with 13 additions and 2 deletions

View File

@@ -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();
}

View File

@@ -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>