diff --git a/ui/src/main/java/edu/kit/iti/formal/psdbg/gui/controller/DebuggerMain.java b/ui/src/main/java/edu/kit/iti/formal/psdbg/gui/controller/DebuggerMain.java index 1a9d9af619bf662dd5e98253f2170fd4cb4aca91..38fd186ae3124817962ba1f48bceada32f5aeb16 100644 --- a/ui/src/main/java/edu/kit/iti/formal/psdbg/gui/controller/DebuggerMain.java +++ b/ui/src/main/java/edu/kit/iti/formal/psdbg/gui/controller/DebuggerMain.java @@ -74,6 +74,7 @@ import org.reactfx.util.Timer; import javax.annotation.Nullable; import javax.swing.*; +import javax.xml.bind.JAXBException; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; @@ -1266,10 +1267,16 @@ public class DebuggerMain implements Initializable { //Update Gui MainScriptIdentifier msi = scriptController.getMainScript(); msi.getScriptArea().setSavepointMarker(selected.getLineNumber()); - msi.getScriptArea().getCodeArea().setStyleClass(selected.getStartOffset(), selected.getEndOffset() + 1, "underlinesave"); scriptExecutionController.executeScriptFromSavePoint(interpreterBuilder, selected); + scriptController.getMainScript().getScriptArea().underlineSavepoint(selected); + + + try { + KeyPersistentFacade.read(FACADE.getEnvironment(), FACADE.getProof(), new StringReader(selected.getPersistedStateFile(FACADE.getFilepath()).toString())); + } catch (JAXBException e) { + e.printStackTrace(); + } + scriptExecutionController.executeScriptFromSavePoint(interpreterBuilder, selected); - //TODO: KeyPersistentFacade.read(FACADE.getEnvironment(), FACADE.getProof(), new StringReader(selected.getPersistedStateFile(FACADE.getFilepath()).toString())); - //TODO (NullpointerEx: interpreterbuilder == null): scriptExecutionController.executeScriptFromSavePoint(interpreterBuilder, selected); } diff --git a/ui/src/main/java/edu/kit/iti/formal/psdbg/gui/controls/ProofTree.java b/ui/src/main/java/edu/kit/iti/formal/psdbg/gui/controls/ProofTree.java index cd4539f3b8c8ab99d6e3c5e912bbc8e6975fda0b..8682f762a0d42aa1424fe1a142351a758aed7783 100644 --- a/ui/src/main/java/edu/kit/iti/formal/psdbg/gui/controls/ProofTree.java +++ b/ui/src/main/java/edu/kit/iti/formal/psdbg/gui/controls/ProofTree.java @@ -29,11 +29,9 @@ import javafx.scene.control.cell.TextFieldTreeCell; import javafx.scene.layout.BorderPane; import javafx.util.StringConverter; import lombok.*; +import sun.reflect.generics.tree.Tree; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.function.Consumer; @@ -327,12 +325,14 @@ public class ProofTree extends BorderPane { } + @AllArgsConstructor private static class TreeNode { String label; Node node; } + class TreeTransformationKey { public TreeItem create(Proof proof) { @@ -414,6 +414,7 @@ public class ProofTree extends BorderPane { } + @RequiredArgsConstructor class TreeTransformationScript extends TreeTransformationKey { final ProofTreeManager manager; @@ -472,5 +473,44 @@ public class ProofTree extends BorderPane { TreeItem ti = new TreeItem<>(new TreeNode(lbl, n)); return ti; } + + + //TODO: Reverse ArrayList in the end or nah? + @Deprecated + public ArrayList getBranchLabels (TreeNode node) { + TreeItem proofTree = create(proof.get()); + + ArrayList branchlabels = new ArrayList<>(); + + int i = 0; + branchlabels.set(0, node.label); + while (node != null) { + if(!branchlabels.get(i).equals(node.label)) { + i++; + branchlabels.set(i, node.label); + } + //TODO: node = node.parent + } + + return branchlabels; + } + + public ArrayList getBranchLabels (Node node) { + ArrayList branchlabels = new ArrayList<>(); + + int i = 0; + //TODO: branchlabel = all branchlabels or only next one + branchlabels.set(0, node.getNodeInfo().getBranchLabel()); + Node n = node.parent(); + while (n != null) { + if(!branchlabels.get(i).equals(n.getNodeInfo().getBranchLabel())) { + i++; + branchlabels.set(i, n.getNodeInfo().getBranchLabel()); + } + n = n.parent(); + } + + return branchlabels; + } } } diff --git a/ui/src/main/java/edu/kit/iti/formal/psdbg/gui/controls/ScriptArea.java b/ui/src/main/java/edu/kit/iti/formal/psdbg/gui/controls/ScriptArea.java index 4069fd1695e4ebf2ac20345fdf0f065dbf080bd6..ecf568eaf302ad63766005dbbc820816c670a800 100644 --- a/ui/src/main/java/edu/kit/iti/formal/psdbg/gui/controls/ScriptArea.java +++ b/ui/src/main/java/edu/kit/iti/formal/psdbg/gui/controls/ScriptArea.java @@ -9,7 +9,10 @@ import edu.kit.iti.formal.psdbg.gui.actions.acomplete.Suggestion; import edu.kit.iti.formal.psdbg.gui.actions.inline.InlineActionSupplier; import edu.kit.iti.formal.psdbg.gui.controller.Events; import edu.kit.iti.formal.psdbg.gui.model.MainScriptIdentifier; +import edu.kit.iti.formal.psdbg.interpreter.data.KeyData; +import edu.kit.iti.formal.psdbg.interpreter.data.SavePoint; import edu.kit.iti.formal.psdbg.interpreter.dbg.Breakpoint; +import edu.kit.iti.formal.psdbg.interpreter.dbg.PTreeNode; import edu.kit.iti.formal.psdbg.lint.LintProblem; import edu.kit.iti.formal.psdbg.lint.LinterStrategy; import edu.kit.iti.formal.psdbg.parser.Facade; @@ -388,8 +391,8 @@ public class ScriptArea extends BorderPane { } } - public void underlineSavepoint(){ - + public void underlineSavepoint(SavePoint sp){ + codeArea.setStyle(sp.getLineNumber() -1, Collections.singleton("underlinesave")); } private void highlightNonExecutionArea() {