Skip to content

Commit

Permalink
improvement and simplification of RulesView
Browse files Browse the repository at this point in the history
  • Loading branch information
cobizobi committed Feb 26, 2025
1 parent a0d86b5 commit 6cef19d
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 44 deletions.
10 changes: 4 additions & 6 deletions src/main/java/de/prob2/ui/rulevalidation/RulesController.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import java.nio.file.Path;
import java.util.Collection;
import java.util.Locale;
import java.util.Set;

/**
* @author Christoph Heinzen
Expand Down Expand Up @@ -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());
}
}
Expand Down Expand Up @@ -156,7 +154,7 @@ private void execute(Task<Void> 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);
});
Expand Down
39 changes: 4 additions & 35 deletions src/main/java/de/prob2/ui/rulevalidation/ui/ExecutionCell.java
Original file line number Diff line number Diff line change
@@ -1,28 +1,22 @@
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
*/
public class ExecutionCell extends TreeTableCell<Object, Object> {

private final RulesController controller;
private boolean executable;
private final I18n i18n;

ExecutionCell(RulesController controller, I18n i18n) {
Expand All @@ -32,36 +26,11 @@ public class ExecutionCell extends TreeTableCell<Object, Object> {
}

@Override
@SuppressWarnings("unchecked")
protected void updateItem(Object item, boolean empty) {
super.updateItem(item, empty);
TreeItem<Object> 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<String, ComputationStatus>) item);
} else {
setGraphic(null);
}
}

private void configureForComputation(Map.Entry<String, ComputationStatus> 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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -32,9 +31,9 @@ class OperationItem extends TreeItem<Object> {
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 -> {
Expand Down Expand Up @@ -80,6 +79,8 @@ private void createComputationChildren(Map.Entry<?, ?> result, ComputationOperat
// create children for disabled dependencies
List<String> disabledDependencies = model.getDisabledDependencies(operation);
addDisabledDependencies(disabledDependencies);
} else {
executable = false;
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/de/prob2/ui/rulevalidation/ui/ValueCell.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
public class ValueCell extends TreeTableCell<Object, Object>{

private final I18n i18n;
private boolean executable;
private boolean executable = true;

ValueCell(I18n i18n) {
this.i18n = i18n;
Expand Down

0 comments on commit 6cef19d

Please sign in to comment.