From 6cef19d06ce7f256379e69b6c36c47ef0dc16b51 Mon Sep 17 00:00:00 2001 From: Jan Gruteser Date: Wed, 26 Feb 2025 15:37:31 +0100 Subject: [PATCH] improvement and simplification of RulesView --- .../ui/rulevalidation/RulesController.java | 10 ++--- .../ui/rulevalidation/ui/ExecutionCell.java | 39 ++----------------- .../ui/rulevalidation/ui/OperationItem.java | 5 ++- .../prob2/ui/rulevalidation/ui/ValueCell.java | 2 +- 4 files changed, 12 insertions(+), 44 deletions(-) diff --git a/src/main/java/de/prob2/ui/rulevalidation/RulesController.java b/src/main/java/de/prob2/ui/rulevalidation/RulesController.java index d06ec8cdc..7f02ae65a 100644 --- a/src/main/java/de/prob2/ui/rulevalidation/RulesController.java +++ b/src/main/java/de/prob2/ui/rulevalidation/RulesController.java @@ -24,7 +24,6 @@ import java.nio.file.Path; import java.util.Collection; import java.util.Locale; -import java.util.Set; /** * @author Christoph Heinzen @@ -62,15 +61,14 @@ public final class RulesController { // the model changed -> rebuild view LOGGER.debug("New rules model in new trace!"); rulesModel = (RulesModel) newTrace.getModel(); - rulesChecker = new RulesChecker(newTrace); - cliTaskExecutor.execute(() -> rulesChecker.init()); initialize(rulesModel); - model.update(rulesChecker.getCurrentTrace()); + model.update(newTrace); + cliTaskExecutor.execute(() -> rulesChecker = new RulesChecker(newTrace)); } else { // model didn't change -> update view with same collapsed items LOGGER.debug("Update rules view to new trace!"); - cliTaskExecutor.execute(() -> rulesChecker.setTrace(newTrace)); // also update RulesChecker; relevant for correct validation report export model.update(newTrace); + cliTaskExecutor.execute(() -> rulesChecker.setTrace(newTrace)); // also update RulesChecker; relevant for correct validation report export rulesView.executeAllButton.setDisable(newTrace.getNextTransitions().isEmpty()); } } @@ -156,7 +154,7 @@ private void execute(Task task, String operation) { stageManager.makeExceptionAlert(task.getException(),"rulevalidation.execute.error.header", "rulevalidation.execute.error.content.allRules").showAndWait(); LOGGER.debug("Task for execution of all rules failed or cancelled!"); } - currentTrace.set(currentTrace.get()); + currentTrace.set(rulesChecker.getCurrentTrace()); rulesView.executeAllButton.setDisable(false); rulesView.progressBox.setVisible(false); }); diff --git a/src/main/java/de/prob2/ui/rulevalidation/ui/ExecutionCell.java b/src/main/java/de/prob2/ui/rulevalidation/ui/ExecutionCell.java index 56d0b5435..8d7b0738e 100644 --- a/src/main/java/de/prob2/ui/rulevalidation/ui/ExecutionCell.java +++ b/src/main/java/de/prob2/ui/rulevalidation/ui/ExecutionCell.java @@ -1,20 +1,15 @@ package de.prob2.ui.rulevalidation.ui; -import de.prob.model.brules.ComputationStatus; -import de.prob.model.brules.RuleResult; -import de.prob.model.brules.RuleStatus; +import de.be4.classicalb.core.parser.rules.AbstractOperation; import de.prob2.ui.internal.I18n; import de.prob2.ui.rulevalidation.RulesController; import javafx.geometry.Pos; import javafx.scene.control.Label; import javafx.scene.control.TreeItem; import javafx.scene.control.TreeTableCell; -import javafx.scene.control.TreeTableRow; import javafx.scene.input.MouseButton; import javafx.scene.paint.Color; -import java.util.Map; - /** * @author Christoph Heinzen * @since 20.12.17 @@ -22,7 +17,6 @@ public class ExecutionCell extends TreeTableCell { private final RulesController controller; - private boolean executable; private final I18n i18n; ExecutionCell(RulesController controller, I18n i18n) { @@ -32,36 +26,11 @@ public class ExecutionCell extends TreeTableCell { } @Override - @SuppressWarnings("unchecked") protected void updateItem(Object item, boolean empty) { super.updateItem(item, empty); - TreeItem treeItem = getTableRow().getTreeItem(); - if (treeItem instanceof OperationItem operationItem) { - executable = operationItem.isExecutable(); - } - - if (item instanceof RuleResult ruleResult) { - configureForRule(ruleResult); - } else if (item instanceof Map.Entry) { - configureForComputation((Map.Entry) item); - } else { - setGraphic(null); - } - } - - private void configureForComputation(Map.Entry resultEntry) { - ComputationStatus result = resultEntry.getValue(); - String computation = resultEntry.getKey(); - if (result == ComputationStatus.NOT_EXECUTED && executable) { - setGraphic(createLabel(computation)); - } else { - setGraphic(null); - } - } - - private void configureForRule(RuleResult result) { - if (result.getRuleState() == RuleStatus.NOT_CHECKED && executable) { - setGraphic(createLabel(result.getRuleName())); + if (getTableRow().getTreeItem() instanceof OperationItem operationItem + && operationItem.getValue() instanceof AbstractOperation operation) { + setGraphic(operationItem.isExecutable() ? createLabel(operation.getName()) : null); } else { setGraphic(null); } diff --git a/src/main/java/de/prob2/ui/rulevalidation/ui/OperationItem.java b/src/main/java/de/prob2/ui/rulevalidation/ui/OperationItem.java index 0f8d34631..a74f43681 100644 --- a/src/main/java/de/prob2/ui/rulevalidation/ui/OperationItem.java +++ b/src/main/java/de/prob2/ui/rulevalidation/ui/OperationItem.java @@ -10,7 +10,6 @@ import javafx.scene.control.TreeItem; import java.util.Collections; -import java.util.Comparator; import java.util.List; import java.util.Map; @@ -32,9 +31,9 @@ class OperationItem extends TreeItem { this.operation = operation.getName(); this.model = model; resultProperty.addListener((observable, oldValue, newValue) -> { + executable = true; OperationItem.this.getChildren().clear(); if (newValue instanceof RuleResult ruleResult) { - executable = true; switch (ruleResult.getRuleState()) { case FAIL, NOT_CHECKED -> createRuleChildren(ruleResult); case SUCCESS -> { @@ -80,6 +79,8 @@ private void createComputationChildren(Map.Entry result, ComputationOperat // create children for disabled dependencies List disabledDependencies = model.getDisabledDependencies(operation); addDisabledDependencies(disabledDependencies); + } else { + executable = false; } } diff --git a/src/main/java/de/prob2/ui/rulevalidation/ui/ValueCell.java b/src/main/java/de/prob2/ui/rulevalidation/ui/ValueCell.java index 0d6671b58..f67e0e9fb 100644 --- a/src/main/java/de/prob2/ui/rulevalidation/ui/ValueCell.java +++ b/src/main/java/de/prob2/ui/rulevalidation/ui/ValueCell.java @@ -19,7 +19,7 @@ public class ValueCell extends TreeTableCell{ private final I18n i18n; - private boolean executable; + private boolean executable = true; ValueCell(I18n i18n) { this.i18n = i18n;