From 6a179b4fdda355212ee04595eb9d64c9d1e50318 Mon Sep 17 00:00:00 2001
From: Ludovic Apvrille <ludovic.apvrille@telecom-paris.fr>
Date: Fri, 29 Sep 2023 17:32:12 +0200
Subject: [PATCH] Resolving bug on drawing request with arguments from TML
 textual spec

---
 src/main/java/ui/DrawerTMLModeling.java | 29 +++++++++++++++++++++++--
 1 file changed, 27 insertions(+), 2 deletions(-)

diff --git a/src/main/java/ui/DrawerTMLModeling.java b/src/main/java/ui/DrawerTMLModeling.java
index fe46188887..31a5ec64d4 100644
--- a/src/main/java/ui/DrawerTMLModeling.java
+++ b/src/main/java/ui/DrawerTMLModeling.java
@@ -479,8 +479,10 @@ public class DrawerTMLModeling  {
             TGComponent newOne = createGUIComponentFromTMLComponent(nextTML, firstGUI, comp, activityPanel);
             if (newOne != null) {
                 // Add component to panel, and then connect it to the previous component if possible
-                activityPanel.addBuiltComponent(newOne);
-                connectComponents(firstGUI, newOne, activityPanel);
+                if (newOne != firstGUI) {
+                    activityPanel.addBuiltComponent(newOne);
+                    connectComponents(firstGUI, newOne, activityPanel);
+                }
                 drawRecursiveBehaviour(t, activity, nextTML, comp, newOne, activityPanel);
             }
         }
@@ -493,6 +495,29 @@ public class DrawerTMLModeling  {
         //TraceManager.addDev("Current first elt:" + elt);
 
         if (elt instanceof TMLActionState) {
+
+            String action = ((TMLActionState)elt).getAction();
+
+            if (action.contains("__req")) {
+                // Reading arguments?
+                int index = action.indexOf("=");
+                if (index > -1) {
+                    String var = action.substring(0, index).trim();
+                    if (var.length() > 0) {
+                        TMLADReadRequestArg readReq;
+                        if (firstGUI instanceof TMLADReadRequestArg) {
+                            readReq = ((TMLADReadRequestArg)firstGUI);
+                        } else {
+                            readReq = new TMLADReadRequestArg(firstGUI.getX(), firstGUI.getY()+getYDep(), activityPanel.getMinX(),
+                                    activityPanel.getMaxX(), activityPanel.getMinY(), activityPanel.getMaxY(), true, null, activityPanel);
+                        }
+                        readReq.setParam(readReq.realNbOfParams(), var);
+                        readReq.makeValue();
+                        return readReq;
+                    }
+                }
+            }
+
             TMLADActionState actionState = new TMLADActionState(firstGUI.getX(), firstGUI.getY()+getYDep(), activityPanel.getMinX(),
                     activityPanel.getMaxX(), activityPanel.getMinY(), activityPanel.getMaxY(), true, null, activityPanel);
             actionState.setValue( ((TMLActionState)elt).getAction());
-- 
GitLab