From c84c6ddc1e5191ce6c95ab006a75e71580eeae83 Mon Sep 17 00:00:00 2001
From: jawher-j <92947144+jawher-j@users.noreply.github.com>
Date: Wed, 3 Apr 2024 15:47:53 +0200
Subject: [PATCH] Synchronize components renaming in all designPanels

---
 src/main/java/ui/tmlad/TMLADEncrypt.java      | 53 ++++++++++++++++++
 src/main/java/ui/tmlad/TMLADWriteChannel.java |  2 +-
 .../ui/tmlcompd/TMLCPrimitiveComponent.java   | 27 ++++++++-
 .../java/ui/tmlcompd/TMLCPrimitivePort.java   | 56 ++++++++++++++++---
 .../TMLComponentTaskDiagramPanel.java         | 36 +++++-------
 src/main/java/ui/tmldd/TMLArchiArtifact.java  |  1 +
 src/main/java/ui/tmldd/TMLArchiCAMSNode.java  |  2 +-
 src/main/java/ui/tmldd/TMLArchiCPUNode.java   |  2 +-
 src/main/java/ui/tmldd/TMLArchiFPGANode.java  |  2 +-
 src/main/java/ui/tmldd/TMLArchiHWANode.java   |  2 +-
 .../java/ui/tmldd/TMLArchiPortArtifact.java   |  5 ++
 .../ui/window/JDialogMultiStringAndTabs.java  | 18 +++---
 12 files changed, 161 insertions(+), 45 deletions(-)

diff --git a/src/main/java/ui/tmlad/TMLADEncrypt.java b/src/main/java/ui/tmlad/TMLADEncrypt.java
index 26099d9ef4..5648f6a7dc 100755
--- a/src/main/java/ui/tmlad/TMLADEncrypt.java
+++ b/src/main/java/ui/tmlad/TMLADEncrypt.java
@@ -46,6 +46,8 @@ import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 import ui.*;
 import ui.ad.TADComponentWithoutSubcomponents;
+import ui.tmlcompd.TMLCPrimitiveComponent;
+import ui.tmldd.*;
 import ui.util.IconManager;
 import ui.window.JDialogCryptographicConfiguration;
 import tmltranslator.*;
@@ -258,6 +260,7 @@ public class TMLADEncrypt extends TADComponentWithoutSubcomponents/* Issue #69 T
                     return false;
                 }
             }
+            setSecPatternName(jdms.getString(0));
             securityContext = jdms.getString(0);
             type = jdms.getString(1);
             message_overhead = jdms.getString(2);
@@ -268,12 +271,62 @@ public class TMLADEncrypt extends TADComponentWithoutSubcomponents/* Issue #69 T
             decTime = jdms.getString(7);
             key = jdms.getString(8);
             algorithm = jdms.getString(9);
+
             return true;
         }
 
         return false;
     }
 
+    private void setSecPatternName(String s) {
+        TURTLEPanel tpCur = tdp.getMainGUI().getCurrentTURTLEPanel();
+        for (TDiagramPanel t : tpCur.getPanels()) {
+            if (t instanceof TMLActivityDiagramPanel) {
+                for (TGComponent t2 : t.getComponentList()) {
+                    if (t2 instanceof TMLADWriteChannel) {
+                        TMLADWriteChannel twc = (TMLADWriteChannel) t2;
+                        if (twc.getSecurityContext().equals(securityContext)) {
+                            twc.setSecurityContext(s);
+                        }
+                    }
+
+                    if (t2 instanceof TMLADReadChannel) {
+                        TMLADReadChannel trc = (TMLADReadChannel) t2;
+                        if (trc.getSecurityContext().equals(securityContext)) {
+                            trc.setSecurityContext(s);
+                        }
+                    }
+
+                    if (t2 instanceof TMLADDecrypt) {
+                        TMLADDecrypt td = (TMLADDecrypt) t2;
+                        if (td.getSecurityContext().equals(securityContext)) {
+                            td.securityContext = s;
+                        }
+                    }
+                }
+            }
+        }
+        for (TURTLEPanel tp : tdp.getMainGUI().tabs) {
+            if (tp instanceof TMLArchiPanel) {
+                TMLArchiDiagramPanel archPanel = ((TMLArchiPanel) tp).tmlap;
+                for (TGComponent tg : archPanel.getComponentList()) {
+                    if (tg instanceof TMLArchiCommunicationNode) {
+                        TMLArchiCommunicationNode tacn = (TMLArchiCommunicationNode) tg;
+                        for (TGComponent tgc : tacn.getRecursiveAllInternalComponent()) {
+                            if (tgc instanceof TMLArchiKey) {
+                                TMLArchiKey tak = (TMLArchiKey) tgc;
+                                if (tak.getValue().equals(securityContext)) {
+                                    tak.setValue(s);
+                                }
+                            }
+                        }
+                    }
+                }
+                archPanel.repaint();
+            }
+        }
+    }
+
     @Override
     public TGComponent isOnMe(int _x, int _y) {
         if (GraphicLib.isInRectangle(_x, _y, x, y, width, height)) {
diff --git a/src/main/java/ui/tmlad/TMLADWriteChannel.java b/src/main/java/ui/tmlad/TMLADWriteChannel.java
index f4dbe2dcb8..1d62687dcf 100755
--- a/src/main/java/ui/tmlad/TMLADWriteChannel.java
+++ b/src/main/java/ui/tmlad/TMLADWriteChannel.java
@@ -473,7 +473,7 @@ public class TMLADWriteChannel extends TADComponentWithoutSubcomponents/* Issue
         help.add(choice);
         help.add(choice);
         tab2.labels=labels;
-        tab2.values =  values;
+        tab2.values = values;
         tab2.help = help;
         tab2.helpButtom = new String[]{null, "cryptographicconfiguration.html"};
 
diff --git a/src/main/java/ui/tmlcompd/TMLCPrimitiveComponent.java b/src/main/java/ui/tmlcompd/TMLCPrimitiveComponent.java
index e506b3b206..cfea280054 100755
--- a/src/main/java/ui/tmlcompd/TMLCPrimitiveComponent.java
+++ b/src/main/java/ui/tmlcompd/TMLCPrimitiveComponent.java
@@ -45,6 +45,9 @@ import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 import ui.*;
+import ui.tmldd.TMLArchiArtifact;
+import ui.tmldd.TMLArchiDiagramPanel;
+import ui.tmldd.TMLArchiElementWithArtifactList;
 import ui.util.IconManager;
 import ui.window.JDialogAttribute;
 
@@ -544,7 +547,7 @@ public class TMLCPrimitiveComponent extends TGCScalableWithInternalComponent imp
 
 
             //TraceManager.addDev("Set value with change");
-            setComponentName(s);
+            this.setComponentName(s);
             //TraceManager.addDev("PC4.1 oldvalue=" + oldName + " s=" + s);
             setValueWithChange(s);
             //TraceManager.addDev("PC4.2");
@@ -562,6 +565,28 @@ public class TMLCPrimitiveComponent extends TGCScalableWithInternalComponent imp
 
     }
 
+    @Override
+    public void setComponentName(String taskName) {
+        for (TURTLEPanel tp : tdp.getMGUI().tabs) {
+            if (tp instanceof TMLArchiPanel) {
+                TMLArchiDiagramPanel archPanel = ((TMLArchiPanel) tp).tmlap;
+                for (TGComponent tg : archPanel.getComponentList()) {
+                    if (tg instanceof TMLArchiElementWithArtifactList) {
+                        TMLArchiElementWithArtifactList tcpu = (TMLArchiElementWithArtifactList) tg;
+                        for (TMLArchiArtifact art : tcpu.getArtifactList()) {
+                            if (art.getTaskName().equals(value) && art.getReferenceTaskName().equals(tdp.tp.getNameOfTab())) {
+                                if (art.getReferenceTaskName().equals(tdp.tp.getNameOfTab())) {
+                                    art.setTaskName(taskName);
+                                }
+                            }
+                        }
+                    }
+                }
+                archPanel.repaint();
+            }
+        }
+    }
+
     protected void setJDialogOptions(JDialogAttribute jda) {
         jda.addAccess(TAttribute.getStringAccess(TAttribute.PUBLIC));
         jda.addAccess(TAttribute.getStringAccess(TAttribute.PRIVATE));
diff --git a/src/main/java/ui/tmlcompd/TMLCPrimitivePort.java b/src/main/java/ui/tmlcompd/TMLCPrimitivePort.java
index 7396879050..493b29058d 100755
--- a/src/main/java/ui/tmlcompd/TMLCPrimitivePort.java
+++ b/src/main/java/ui/tmlcompd/TMLCPrimitivePort.java
@@ -51,8 +51,7 @@
  import ui.avatarrd.AvatarRDRequirement;
  import ui.interactivesimulation.JFrameSimulationSDPanel;
  import ui.tmlad.*;
- import ui.tmldd.TMLArchiCPNode;
- import ui.tmldd.TMLArchiPortArtifact;
+ import ui.tmldd.*;
  import ui.util.IconManager;
  import ui.window.JDialogTMLCompositePort;
 
@@ -966,20 +965,59 @@
      }
 
      public void setPortName(String s) {
+         List<TMLCPrimitivePort> listConnectedPorts = ((TMLComponentTaskDiagramPanel) tdp).getPortsConnectedTo(this,
+                 tdp.getAllComponentList());
          for (TURTLEPanel tp : tdp.getMainGUI().tabs) {
-             for (TDiagramPanel t : tp.getPanels()) {
-                 for (TGComponent t2 : t.getComponentList()) {
-                     if (t2 instanceof TMLArchiCPNode) {
-                         TMLArchiCPNode tacn = (TMLArchiCPNode) t2;
+             if (tp instanceof TMLArchiPanel) {
+                 TMLArchiDiagramPanel archPanel = ((TMLArchiPanel) tp).tmlap;
+                 for (TGComponent tg : archPanel.getComponentList()) {
+                     if (tg instanceof TMLArchiPortArtifact) {
+                         if (!isOrigin) {
+                             TMLArchiPortArtifact portArt = (TMLArchiPortArtifact) tg;
+                             if (portArt.getPortName().equals(commName) && portArt.getReferenceCommunicationName().equals(tdp.tp.getNameOfTab())) {
+                                 portArt.setPortName(s);
+                             }
+                         }
+                     } else if (tg instanceof TMLArchiCommunicationNode) {
+                         TMLArchiCommunicationNode tacn = (TMLArchiCommunicationNode) tg;
                          for (TGComponent tgc : tacn.getRecursiveAllInternalComponent()) {
                              if (tgc instanceof TMLArchiPortArtifact) {
-                                 TMLArchiPortArtifact tapi = (TMLArchiPortArtifact) tgc;
-                                 String tmp = tapi.getValue().replaceAll("(?i)" + commName + "$", s);
-                                 tapi.setValue(tmp);
+                                 if (!isOrigin) {
+                                     TMLArchiPortArtifact portArt = (TMLArchiPortArtifact) tgc;
+                                     if (portArt.getPortName().equals(commName) && portArt.getReferenceCommunicationName().equals(tdp.tp.getNameOfTab())) {
+                                         portArt.setPortName(s);
+                                     }
+                                 }
+                             } else if (tgc instanceof TMLArchiCommunicationArtifact) {
+                                 TMLArchiCommunicationArtifact comArt = (TMLArchiCommunicationArtifact) tgc;
+                                 if (comArt.getReferenceCommunicationName().equals(tdp.tp.getNameOfTab())) {
+                                     for (TMLCPrimitivePort port2 : listConnectedPorts) {
+                                         String communicationName;
+                                         if (port2.getPortName().equals(commName)) {
+                                             communicationName = commName;
+                                         } else if (this.isOrigin) {
+                                             communicationName = commName + "__" + port2.getPortName();
+                                         } else {
+                                             communicationName = port2.getPortName() + "__" + commName;
+                                         }
+                                         TraceManager.addDev("communicationName=" + communicationName);
+                                         if (comArt.getCommunicationName().equals(communicationName)) {
+                                             if (port2.getPortName().equals(s)) {
+                                                 comArt.setCommunicationName(s);
+                                             } else if (this.isOrigin) {
+                                                 comArt.setCommunicationName(s + "__" + port2.getPortName());
+                                             } else {
+                                                 comArt.setCommunicationName(port2.getPortName() + "__" + s);
+                                             }
+                                             TraceManager.addDev("1 setCommunicationName = " + s);
+                                         }
+                                     }
+                                 }
                              }
                          }
                      }
                  }
+                 archPanel.repaint();
              }
          }
 
diff --git a/src/main/java/ui/tmlcompd/TMLComponentTaskDiagramPanel.java b/src/main/java/ui/tmlcompd/TMLComponentTaskDiagramPanel.java
index 05425d4c25..3f2773ca6c 100755
--- a/src/main/java/ui/tmlcompd/TMLComponentTaskDiagramPanel.java
+++ b/src/main/java/ui/tmlcompd/TMLComponentTaskDiagramPanel.java
@@ -721,21 +721,18 @@ public class TMLComponentTaskDiagramPanel extends TDiagramPanel implements TDPWi
 
     public String[] getCompOutChannels() {
         List<String> chls = new ArrayList<String>();
-        TGComponent tgc;
-        Iterator<TGComponent> iterator = componentList.listIterator();
+        TMLCPrimitiveComponent tgc;
+        Iterator<TMLCPrimitiveComponent> iterator = getPrimitiveComponentList().listIterator();
         // List<String> list = new ArrayList<String>();
         //TMLCPrimitiveComponent tmp;
-
+        getPrimitiveComponentList();
         while (iterator.hasNext()) {
             tgc = iterator.next();
-            if (tgc instanceof TMLCPrimitiveComponent) {
-                TMLCPrimitiveComponent comp = (TMLCPrimitiveComponent) tgc;
-                List<TMLCPrimitivePort> ll = comp.getAllChannelsOriginPorts();
-                Iterator<TMLCPrimitivePort> ite = ll.listIterator();
-                while (ite.hasNext()) {
-                    TMLCPrimitivePort port = ite.next();
-                    chls.add(port.getPortName());
-                }
+            List<TMLCPrimitivePort> ll = tgc.getAllChannelsOriginPorts();
+            Iterator<TMLCPrimitivePort> ite = ll.listIterator();
+            while (ite.hasNext()) {
+                TMLCPrimitivePort port = ite.next();
+                chls.add(port.getPortName());
             }
         }
         String[] chlArray = new String[chls.size()];
@@ -745,21 +742,18 @@ public class TMLComponentTaskDiagramPanel extends TDiagramPanel implements TDPWi
 
     public String[] getCompInChannels() {
         List<String> chls = new ArrayList<String>();
-        TGComponent tgc;
-        Iterator<TGComponent> iterator = componentList.listIterator();
+        TMLCPrimitiveComponent tgc;
+        Iterator<TMLCPrimitiveComponent> iterator = getPrimitiveComponentList().listIterator();
         // List<String> list = new ArrayList<String>();
         //TMLCPrimitiveComponent tmp;
 
         while (iterator.hasNext()) {
             tgc = iterator.next();
-            if (tgc instanceof TMLCPrimitiveComponent) {
-                TMLCPrimitiveComponent comp = (TMLCPrimitiveComponent) tgc;
-                List<TMLCPrimitivePort> ll = comp.getAllChannelsDestinationPorts();
-                Iterator<TMLCPrimitivePort> ite = ll.listIterator();
-                while (ite.hasNext()) {
-                    TMLCPrimitivePort port = ite.next();
-                    chls.add(port.getPortName());
-                }
+            List<TMLCPrimitivePort> ll = tgc.getAllChannelsDestinationPorts();
+            Iterator<TMLCPrimitivePort> ite = ll.listIterator();
+            while (ite.hasNext()) {
+                TMLCPrimitivePort port = ite.next();
+                chls.add(port.getPortName());
             }
         }
         String[] chlArray = new String[chls.size()];
diff --git a/src/main/java/ui/tmldd/TMLArchiArtifact.java b/src/main/java/ui/tmldd/TMLArchiArtifact.java
index dc010cf2b6..b1333ce06c 100755
--- a/src/main/java/ui/tmldd/TMLArchiArtifact.java
+++ b/src/main/java/ui/tmldd/TMLArchiArtifact.java
@@ -373,6 +373,7 @@ public class TMLArchiArtifact extends TGCWithoutInternalComponent implements Swa
 
     public void setTaskName(String s) {
         taskName = s;
+        makeFullValue();
     }
 
     public String getAttributes() {
diff --git a/src/main/java/ui/tmldd/TMLArchiCAMSNode.java b/src/main/java/ui/tmldd/TMLArchiCAMSNode.java
index 3e3c178921..3021917845 100755
--- a/src/main/java/ui/tmldd/TMLArchiCAMSNode.java
+++ b/src/main/java/ui/tmldd/TMLArchiCAMSNode.java
@@ -61,7 +61,7 @@ import java.util.Vector;
    * @version 1.0 23/11/2007
    * @author Ludovic APVRILLE
  */
-public class TMLArchiCAMSNode extends TMLArchiNode implements SwallowTGComponent, WithAttributes, TMLArchiElementInterface {
+public class TMLArchiCAMSNode extends TMLArchiNode implements SwallowTGComponent, WithAttributes, TMLArchiElementInterface, TMLArchiElementWithArtifactList {
     private int textY1 = 15;
     private int textY2 = 30;
     private int derivationx = 2;
diff --git a/src/main/java/ui/tmldd/TMLArchiCPUNode.java b/src/main/java/ui/tmldd/TMLArchiCPUNode.java
index 41b01ca9c6..d4a8f93587 100755
--- a/src/main/java/ui/tmldd/TMLArchiCPUNode.java
+++ b/src/main/java/ui/tmldd/TMLArchiCPUNode.java
@@ -63,7 +63,7 @@ import java.util.Vector;
  * @author Ludovic APVRILLE
  * @version 1.1 21/05/2008
  */
-public class TMLArchiCPUNode extends TMLArchiNode implements SwallowTGComponent, WithAttributes, TMLArchiElementInterface {
+public class TMLArchiCPUNode extends TMLArchiNode implements SwallowTGComponent, WithAttributes, TMLArchiElementInterface, TMLArchiElementWithArtifactList {
 
 	// Issue #31
 //	private int textY1 = 15;
diff --git a/src/main/java/ui/tmldd/TMLArchiFPGANode.java b/src/main/java/ui/tmldd/TMLArchiFPGANode.java
index 0a8e021277..b61102dd79 100755
--- a/src/main/java/ui/tmldd/TMLArchiFPGANode.java
+++ b/src/main/java/ui/tmldd/TMLArchiFPGANode.java
@@ -61,7 +61,7 @@ import java.util.Vector;
  * @author Ludovic APVRILLE, Matteo BERTOLINO
  * @version 1.1 07/02/2018
  */
-public class TMLArchiFPGANode extends TMLArchiNode implements SwallowTGComponent, WithAttributes, TMLArchiElementInterface {
+public class TMLArchiFPGANode extends TMLArchiNode implements SwallowTGComponent, WithAttributes, TMLArchiElementInterface, TMLArchiElementWithArtifactList {
 
     // Issue #31
     // Issue #31
diff --git a/src/main/java/ui/tmldd/TMLArchiHWANode.java b/src/main/java/ui/tmldd/TMLArchiHWANode.java
index 6ac6b6d5c9..d25c76166d 100755
--- a/src/main/java/ui/tmldd/TMLArchiHWANode.java
+++ b/src/main/java/ui/tmldd/TMLArchiHWANode.java
@@ -60,7 +60,7 @@ import java.util.Vector;
  * @version 1.0 23/11/2007
  */
 
-public class TMLArchiHWANode extends TMLArchiNode implements SwallowTGComponent, WithAttributes, TMLArchiElementInterface {
+public class TMLArchiHWANode extends TMLArchiNode implements SwallowTGComponent, WithAttributes, TMLArchiElementInterface, TMLArchiElementWithArtifactList {
 
     // Issue #31
     private static final int DERIVATION_X = 2;
diff --git a/src/main/java/ui/tmldd/TMLArchiPortArtifact.java b/src/main/java/ui/tmldd/TMLArchiPortArtifact.java
index 47d17bf8d5..ecc0ba86a4 100644
--- a/src/main/java/ui/tmldd/TMLArchiPortArtifact.java
+++ b/src/main/java/ui/tmldd/TMLArchiPortArtifact.java
@@ -463,6 +463,11 @@ public class TMLArchiPortArtifact extends TGCWithoutInternalComponent implements
         return portName;
     }
 
+    public void setPortName(String _portName) {
+        portName = _portName;
+        makeFullValue();
+    }
+
     public String getFullValue() {
         String tmp = getValue();
         tmp += " (" + getTypeName() + ")";
diff --git a/src/main/java/ui/window/JDialogMultiStringAndTabs.java b/src/main/java/ui/window/JDialogMultiStringAndTabs.java
index 277c28aa6d..cdb201cde2 100644
--- a/src/main/java/ui/window/JDialogMultiStringAndTabs.java
+++ b/src/main/java/ui/window/JDialogMultiStringAndTabs.java
@@ -50,14 +50,8 @@ import java.util.List;
 import java.util.Map;
 import ui.util.IconManager;
 
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JTabbedPane;
-import javax.swing.JTextField;
-import javax.swing.Icon;
+import javax.swing.*;
+
 import ui.MainGUI;
 import ui.TGHelpButton;
 import help.HelpManager;
@@ -179,7 +173,13 @@ public class JDialogMultiStringAndTabs extends JDialogBase implements ActionList
                     if (i < tab.help.size()) {
                         String[] tmp = tab.help.get(i);
                         if (tmp != null) {
-                            helps.put(totalIndex, new JComboBox<>(tmp));
+                            DefaultComboBoxModel<String> model = new DefaultComboBoxModel<String>(tmp);
+                            JComboBox<String> tmpComboBox = new JComboBox<>(model);
+                            int indexValue = model.getIndexOf(tab.values[i]);
+                            if (indexValue != -1) {
+                                tmpComboBox.setSelectedIndex(indexValue);
+                            }
+                            helps.put(totalIndex, tmpComboBox);
                             panel1.add(helps.get(totalIndex), c1);
                             if (tab.helpButtom == null || mgui == null || tab.helpButtom[i] == null) {
                                 c1.gridwidth = GridBagConstraints.REMAINDER; //end row
-- 
GitLab