From e7d9e50b0f57dd5f35941deb3184bfd373295065 Mon Sep 17 00:00:00 2001
From: SebastianEbert <sebastian.ebert@tu-dresden.de>
Date: Mon, 19 Feb 2024 15:54:02 +0100
Subject: [PATCH] extended nav

---
 .../inf/st/pnml/base/util/NavUtils.java          | 16 ++++++++++++++++
 src/main/jastadd/base/Navigation.jrag            |  4 ++++
 2 files changed, 20 insertions(+)
 create mode 100644 src/data/java/de/tudresden/inf/st/pnml/base/util/NavUtils.java

diff --git a/src/data/java/de/tudresden/inf/st/pnml/base/util/NavUtils.java b/src/data/java/de/tudresden/inf/st/pnml/base/util/NavUtils.java
new file mode 100644
index 0000000..b1334c5
--- /dev/null
+++ b/src/data/java/de/tudresden/inf/st/pnml/base/util/NavUtils.java
@@ -0,0 +1,16 @@
+package de.tudresden.inf.st.pnml.base.util;
+
+import de.tudresden.inf.st.pnml.jastadd.model.Node;
+import de.tudresden.inf.st.pnml.jastadd.model.Place;
+
+public class NavUtils {
+
+    public static Place getOriginPlace(Node p){
+
+        if(p.asRefPlace() != null){
+            return p.asPlaceNode().place();
+        } else {
+            return getOriginPlace(p);
+        }
+    }
+}
diff --git a/src/main/jastadd/base/Navigation.jrag b/src/main/jastadd/base/Navigation.jrag
index 0af771b..8aeef66 100644
--- a/src/main/jastadd/base/Navigation.jrag
+++ b/src/main/jastadd/base/Navigation.jrag
@@ -2,6 +2,10 @@ aspect Navigation {
   inh PetriNet PnObject.petriNet();
   eq PetriNet.getChild().petriNet() = this;
 
+  syn Place RefPlace.originPlace(){
+      return de.tudresden.inf.st.pnml.base.util.NavUtils.getOriginPlace(this);
+  }
+
   syn java.util.Collection<Place> TransitionNode.incomingPlaces() {
 
       java.util.Set<Place> s = new java.util.HashSet<>();
-- 
GitLab