diff --git a/src/ddtranslator/DDStructLink.java b/src/ddtranslator/DDStructLink.java
new file mode 100755
index 0000000000000000000000000000000000000000..6d00a089d84be8c9fe12c2016007dce4920dab2c
--- /dev/null
+++ b/src/ddtranslator/DDStructLink.java
@@ -0,0 +1,62 @@
+/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille
+
+ludovic.apvrille AT enst.fr
+
+This software is a computer program whose purpose is to allow the 
+edition of TURTLE analysis, design and deployment diagrams, to 
+allow the generation of RT-LOTOS or Java code from this diagram, 
+and at last to allow the analysis of formal validation traces 
+obtained from external tools, e.g. RTL from LAAS-CNRS and CADP 
+from INRIA Rhone-Alpes.
+
+This software is governed by the CeCILL  license under French law and
+abiding by the rules of distribution of free software.  You can  use, 
+modify and/ or redistribute the software under the terms of the CeCILL
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info". 
+
+As a counterpart to the access to the source code and  rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty  and the software's author,  the holder of the
+economic rights,  and the successive licensors  have only  limited
+liability. 
+
+In this respect, the user's attention is drawn to the risks associated
+with loading,  using,  modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean  that it is complicated to manipulate,  and  that  also
+therefore means  that it is reserved for developers  and  experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or 
+data to be ensured and,  more generally, to use and operate it in the 
+same conditions as regards security. 
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL license and that you accept its terms.
+
+/**
+ * Class DDStructLink
+ * Creation: 31/05/2005
+ * version 1.0 31/05/2005
+ * @author Ludovic APVRILLE
+ * @see
+ */
+
+package ddtranslator;
+
+import translator.*;
+
+public class DDStructLink  {
+    public Gate lgate;
+    public Gate rgate;
+    public Gate linklg;
+    public Gate linkrg;
+    public boolean added;
+    
+    public DDStructLink() {
+    }
+    
+ 
+    
+} // Class
\ No newline at end of file
diff --git a/src/ddtranslator/DDStructSynchro.java b/src/ddtranslator/DDStructSynchro.java
new file mode 100755
index 0000000000000000000000000000000000000000..26eff0b8f0be2fe550468aa39595248f627b0170
--- /dev/null
+++ b/src/ddtranslator/DDStructSynchro.java
@@ -0,0 +1,207 @@
+/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille
+
+ludovic.apvrille AT enst.fr
+
+This software is a computer program whose purpose is to allow the 
+edition of TURTLE analysis, design and deployment diagrams, to 
+allow the generation of RT-LOTOS or Java code from this diagram, 
+and at last to allow the analysis of formal validation traces 
+obtained from external tools, e.g. RTL from LAAS-CNRS and CADP 
+from INRIA Rhone-Alpes.
+
+This software is governed by the CeCILL  license under French law and
+abiding by the rules of distribution of free software.  You can  use, 
+modify and/ or redistribute the software under the terms of the CeCILL
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info". 
+
+As a counterpart to the access to the source code and  rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty  and the software's author,  the holder of the
+economic rights,  and the successive licensors  have only  limited
+liability. 
+
+In this respect, the user's attention is drawn to the risks associated
+with loading,  using,  modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean  that it is complicated to manipulate,  and  that  also
+therefore means  that it is reserved for developers  and  experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or 
+data to be ensured and,  more generally, to use and operate it in the 
+same conditions as regards security. 
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL license and that you accept its terms.
+
+/**
+ * Class DDStructSynchro
+ * Creation: 03/06/2005
+ * version 1.0 03/06/2005
+ * @author Ludovic APVRILLE
+ * @see
+ */
+
+package ddtranslator;
+
+import java.util.*;
+
+import translator.*;
+
+public class DDStructSynchro  {
+    private LinkedList list;
+    
+    public DDStructSynchro() {
+        list = new LinkedList();
+    }
+    
+    public DDStructSynchro(String actionValue, TClass t) {
+        list = new LinkedList();
+        constructList(actionValue, t);
+    }
+    
+    // assumes that it contains no "!" operator
+    public void constructList(String actionValue, TClass t) {
+        String stmp, paramName;
+        Param p;
+        char c = '?';
+        
+        int index, index1, index2, index3, index4, index5;
+        String s = actionValue;
+        
+        if ((s == null) || (s.length() == 0))
+            return;
+        
+        while ( (index = s.indexOf(c)) != -1) {
+            stmp = s.substring(index+1, s.length());
+            index1 = stmp.indexOf('!');
+            index2 = stmp.indexOf('?');
+            index3 = stmp.length();
+            if (index1 == -1) {
+                index1 = index3;
+            }
+            if (index2 == -1) {
+                index2 = index3;
+            }
+            index4 = Math.min(index1, index2);
+            index4 = Math.min(index4, index3);
+            
+            if (index4 > 0) {
+                paramName = s.substring(index+1, index4+index+1);
+                paramName = paramName.trim();
+                index5 = paramName.indexOf(":");
+                if (index5>0) {
+                    paramName = paramName.substring(0, index5);
+                }
+                p = t.getParamByName(paramName);
+                //System.out.println("Param=" + paramName);
+                if (p != null) {
+                    list.add(p.getType());
+                } else {
+                    return;
+                }         
+            }
+            s = s.substring(index4+index+1, s.length());
+        }
+    }
+    
+    public String getRegularCall() {
+        
+        //System.out.println("synchro size=" + list.size());
+        
+        String call = "";
+        int x = 0;
+        int b = 0;
+        String type;
+        
+        ListIterator iterator = list.listIterator();
+        
+        while(iterator.hasNext()) {
+            type = (String)(iterator.next());
+            if (type.compareTo(Param.NAT) ==0) {
+                call += "?x" + x + ":nat";
+                x ++;
+            } else {
+                call += "?b" + b + ":nat";
+                b ++;
+            }
+        }
+        
+        return call;
+    }
+    
+    public int nbNat() {
+        int nb = 0;
+        ListIterator iterator = list.listIterator();
+        String type;
+        
+        while(iterator.hasNext()) {
+            type = (String)(iterator.next());
+            if (type.compareTo(Param.NAT) ==0) {
+                nb ++;
+            }
+        }
+        
+        return nb;
+    }
+    
+    public int nbBool() {
+        int nb = 0;
+        ListIterator iterator = list.listIterator();
+        String type;
+        while(iterator.hasNext()) {
+            type = (String)(iterator.next());
+            if (type.compareTo(Param.BOOL) ==0) {
+                nb ++;
+            }
+        }
+        
+        return nb;
+    }
+    
+    public int compareTo(Object o) {
+        if (o instanceof DDStructSynchro) {
+            DDStructSynchro ddss = (DDStructSynchro)o;
+            LinkedList listd = ddss.getList();
+            if (list.size() == listd.size()) {
+                ListIterator li1 = list.listIterator();
+                ListIterator li2 = listd.listIterator();
+                String s1, s2;
+                while(li1.hasNext()) {
+                    s1 = (String)(li1.next());
+                    s2 = (String)(li2.next());
+                    if (s1.compareTo(s2) != 0) {
+                        return -1;
+                    }
+                }
+                return 0;
+            }
+            return -1;
+        }
+        return -1;
+    }
+    
+    public LinkedList getList() {
+        return list;
+    }
+    
+    public int size() {
+        return list.size();
+    }
+    
+    public boolean isInList(LinkedList _list) {
+        ListIterator iterator = _list.listIterator();
+        DDStructSynchro ddss;
+        while(iterator.hasNext()) {
+            ddss = (DDStructSynchro)(iterator.next());
+            if (compareTo(ddss) == 0) {
+                return true;
+            }
+        }
+        return false;
+    }
+    
+    
+    
+} // Class
\ No newline at end of file
diff --git a/src/ddtranslator/DDSyntaxException.java b/src/ddtranslator/DDSyntaxException.java
new file mode 100755
index 0000000000000000000000000000000000000000..558b9fd2b4cdb4e8feb1e615578325b092da6ccf
--- /dev/null
+++ b/src/ddtranslator/DDSyntaxException.java
@@ -0,0 +1,59 @@
+/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille
+
+ludovic.apvrille AT enst.fr
+
+This software is a computer program whose purpose is to allow the 
+edition of TURTLE analysis, design and deployment diagrams, to 
+allow the generation of RT-LOTOS or Java code from this diagram, 
+and at last to allow the analysis of formal validation traces 
+obtained from external tools, e.g. RTL from LAAS-CNRS and CADP 
+from INRIA Rhone-Alpes.
+
+This software is governed by the CeCILL  license under French law and
+abiding by the rules of distribution of free software.  You can  use, 
+modify and/ or redistribute the software under the terms of the CeCILL
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info". 
+
+As a counterpart to the access to the source code and  rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty  and the software's author,  the holder of the
+economic rights,  and the successive licensors  have only  limited
+liability. 
+
+In this respect, the user's attention is drawn to the risks associated
+with loading,  using,  modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean  that it is complicated to manipulate,  and  that  also
+therefore means  that it is reserved for developers  and  experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or 
+data to be ensured and,  more generally, to use and operate it in the 
+same conditions as regards security. 
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL license and that you accept its terms.
+
+/**
+ * Class DDSyntaxException
+ * Creation: 31/05/2005
+ * version 1.0 31/05/2005
+ * @author Ludovic APVRILLE
+ * @see
+ */
+
+package ddtranslator;
+
+
+public	class DDSyntaxException extends Exception {
+    
+    public DDSyntaxException() {
+        super("DD does not follows the restricted format");
+    }
+    
+    public DDSyntaxException(String msg) {
+        super("DD does not follows the restricted format: " + msg);
+    }
+    
+} // Class
\ No newline at end of file
diff --git a/src/ddtranslator/DDTranslator.java b/src/ddtranslator/DDTranslator.java
new file mode 100755
index 0000000000000000000000000000000000000000..110531abcfe493a503a761d1e04b8e3c573c5477
--- /dev/null
+++ b/src/ddtranslator/DDTranslator.java
@@ -0,0 +1,276 @@
+/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille
+
+ludovic.apvrille AT enst.fr
+
+This software is a computer program whose purpose is to allow the 
+edition of TURTLE analysis, design and deployment diagrams, to 
+allow the generation of RT-LOTOS or Java code from this diagram, 
+and at last to allow the analysis of formal validation traces 
+obtained from external tools, e.g. RTL from LAAS-CNRS and CADP 
+from INRIA Rhone-Alpes.
+
+This software is governed by the CeCILL  license under French law and
+abiding by the rules of distribution of free software.  You can  use, 
+modify and/ or redistribute the software under the terms of the CeCILL
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info". 
+
+As a counterpart to the access to the source code and  rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty  and the software's author,  the holder of the
+economic rights,  and the successive licensors  have only  limited
+liability. 
+
+In this respect, the user's attention is drawn to the risks associated
+with loading,  using,  modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean  that it is complicated to manipulate,  and  that  also
+therefore means  that it is reserved for developers  and  experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or 
+data to be ensured and,  more generally, to use and operate it in the 
+same conditions as regards security. 
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL license and that you accept its terms.
+
+/**
+ * Class DDTranslator
+ * Creation: 31/05/2004
+ * @version 1.0 31/05/2004
+ * @author Ludovic APVRILLE
+ * @see
+ */
+
+package ddtranslator;
+
+
+import java.util.*;
+
+
+import translator.*;
+import ui.*;
+import ui.cd.*;
+import ui.dd.*;
+
+public class DDTranslator {
+    
+    private TURTLEModeling tm;
+    private DeploymentPanel dp;
+    private CorrespondanceTGElement listE;
+    
+    public DDTranslator(DeploymentPanel _dp, TURTLEModeling _tm, CorrespondanceTGElement _listE) {
+        dp = _dp;
+        tm = _tm;
+        listE = _listE;
+    }
+    
+    
+    public void translateLinks() throws DDSyntaxException {
+        
+        // We go throughout links
+        LinkedList ll;
+        ListIterator iterator;
+        TDDNode node;
+        TGConnectorLinkNode link;
+        VectorLRArtifactTClassGate assocs;
+        LRArtifactTClassGate lratg;
+        TClassLinkNode t;
+        TClass tcl;
+        int i;
+        
+        ll = dp.tddp.getListOfLinks();
+        iterator = ll.listIterator();
+        
+        TClassLinkNode.reinitName();
+        
+        // Loop on links
+        while(iterator.hasNext()) {
+            link = (TGConnectorLinkNode)(iterator.next());
+            assocs = link.getList();
+            System.out.println("assocs=" + assocs);
+            if (assocs.size() > 0) {
+                System.out.println("translateLinks : assocs > 0");
+                t = new TClassLinkNode(TClassLinkNode.generateName());
+                t.setDelay(link.getDelay());
+                tm.addTClass(t);
+                t.prepareTClass();
+                for(i=0; i<assocs.size(); i++) {
+                    lratg = assocs.getElementAt(i);
+                    makeSynchro(link, lratg, t, link.getOriginNode(), link.getDestinationNode());
+                }
+                t.finishTClass();
+            }
+        }
+        
+        // Loop on TClassLinkNode
+       /* for(i=0; i<tm.classNb(); i++) {
+            tcl = getTClassAtIndex(i);
+            if (tcl instanceof TClassLinkNode) {
+                t = (TClassLinkNode)tcl;
+        
+            }
+        }*/
+    }
+    
+    private void makeSynchro(TGConnectorLinkNode link, LRArtifactTClassGate lratg, TClassLinkNode t, TDDNode node1, TDDNode node2) {
+        // Find all possible receiving at destination side
+        TCDTClass gtclass, gtclass2;
+        DDStructSynchro synchro;
+        ActivityDiagram ad;
+        int i;
+        ADComponent adc;
+        Gate g = null;
+        String actionOnGate = null;
+        int maxBool = 0;
+        int maxNat = 0;
+        int id;
+        
+        System.out.println("Making synchro");
+
+        // Prepare struct
+        DDStructLink ddsl = new DDStructLink();
+        
+        gtclass = findTClass(lratg.left.art, lratg.left.tcl);
+        TClass tclass1 = listE.getTClass(gtclass);
+        
+        gtclass2 = findTClass(lratg.right.art, lratg.right.tcl);
+        TClass tclass2 = listE.getTClass(gtclass2);
+        
+        System.out.println("Making synchro: step 1 gtclass="+ gtclass.getClassName() + "gtclass2="+ gtclass2.getClassName());
+        
+        if ((tclass1 == null) || (tclass2 == null)) {
+            return;
+        }
+        
+        System.out.println("Making synchro: step 1 tclass1="+ tclass1.getName() + "tclass2="+ tclass2.getName());
+        
+        
+        ddsl.lgate = tclass1.getGateByName(lratg.left.gat);
+        ddsl.rgate = tclass2.getGateByName(lratg.right.gat);
+        
+        if ((ddsl.lgate == null) || (ddsl.rgate == null)) {
+            return;
+        }
+        
+        System.out.println("Making synchro: step 2");
+        
+        // Create gates for the link;
+        id = t.getIdGate();
+        ddsl.linklg = t.addNewGateIfApplicable("g_l_" + id);
+        ddsl.linkrg = t.addNewGateIfApplicable("g_r_" + id);
+        
+        // Set the right protocol on gates
+        ddsl.lgate.setProtocolJava(link.getImplementation());
+        ddsl.lgate.setLocalPortJava(link.getOriginPort());
+        ddsl.lgate.setDestPortJava(link.getDestinationPort());
+        ddsl.lgate.setDestHostJava(tclass2.getName().substring(0, tclass2.getName().indexOf('_')));
+        ddsl.lgate.setLocalHostJava(tclass1.getName().substring(0, tclass1.getName().indexOf('_')));
+        ddsl.rgate.setProtocolJava(link.getImplementation());
+        ddsl.rgate.setLocalPortJava(link.getDestinationPort());
+        ddsl.rgate.setDestPortJava(link.getOriginPort());
+        ddsl.rgate.setDestHostJava(tclass1.getName().substring(0, tclass1.getName().indexOf('_')));
+        ddsl.rgate.setLocalHostJava(tclass2.getName().substring(0, tclass2.getName().indexOf('_')));
+        
+        System.out.println("*** -> Protocol = " + link.getImplementation());
+        System.out.println("*** -> hosts = host1=" + ddsl.lgate.getDestHostJava() + " host2=" +  ddsl.rgate.getDestHostJava());
+        
+        System.out.println("Toto01 -> looking for gate " + lratg.left.gat);
+  
+        // Analyse Tclass1
+        
+        System.out.println("Toto02");
+        LinkedList synchros = new LinkedList();
+        ad = tclass1.getActivityDiagram();
+        
+        for(i=0; i<ad.size(); i++) {
+            adc = (ADComponent)(ad.elementAt(i));
+            g = null;
+            if (adc instanceof ADActionStateWithGate) {
+                g = ((ADActionStateWithGate)adc).getGate();
+                actionOnGate = ((ADActionStateWithGate)adc).getActionValue();
+            }
+            if (adc instanceof ADTLO) {
+                g = ((ADTLO)adc).getGate();
+                actionOnGate = ((ADTLO)adc).getAction();
+            }
+            if (g != null) {
+                if (g.getName().compareTo(lratg.left.gat) == 0) {
+                    System.out.println("Gate=" + g.getName() + " action on gate=" + actionOnGate);
+                    synchro = new DDStructSynchro(actionOnGate, tclass1);
+                    if ((!(synchro.isInList(synchros))) && (synchro.size() > 0)) {
+                        synchros.add(synchro);
+                        
+                        maxBool = Math.max(synchro.nbBool(), maxBool);
+                        maxNat = Math.max(synchro.nbNat(), maxNat);
+                        
+                        System.out.println("Adding gate management");
+                        ddsl.added = true;
+                        t.addGateManagement(ddsl.linkrg, synchro.getRegularCall(), ddsl.linklg);
+                    }
+                }
+            }
+        }
+        
+        // Do the same at receiving side
+        
+        //System.out.println("Toto03");
+        synchros = new LinkedList();
+        ad = tclass2.getActivityDiagram();
+        
+        for(i=0; i<ad.size(); i++) {
+            adc = (ADComponent)(ad.elementAt(i));
+            g = null;
+            if (adc instanceof ADActionStateWithGate) {
+                g = ((ADActionStateWithGate)adc).getGate();
+                actionOnGate = ((ADActionStateWithGate)adc).getActionValue();
+            }
+            if (adc instanceof ADTLO) {
+                g = ((ADTLO)adc).getGate();
+                actionOnGate = ((ADTLO)adc).getAction();
+            }
+            if (g != null) {
+                if (g.getName().compareTo(lratg.right.gat) == 0) {
+                    synchro = new DDStructSynchro(actionOnGate, tclass2);
+                    if ((!(synchro.isInList(synchros))) && (synchro.size() > 0)) {
+                        synchros.add(synchro);
+                        
+                        maxBool = Math.max(synchro.nbBool(), maxBool);
+                        maxNat = Math.max(synchro.nbNat(), maxNat);
+                        
+                        ddsl.added = true;
+                        //System.out.println("Adding gate management");
+                        t.addGateManagement(ddsl.linklg, synchro.getRegularCall(), ddsl.linkrg);
+                    }
+                }
+            }
+        }
+        
+        
+        // Add necessary parameters to the tclass
+        t.makeBoolParameters(maxBool);
+        t.makeNatParameters(maxNat);
+        
+        // Add synchro relations
+        if (ddsl.added == true) {
+            //System.out.println("Adding synchro relation g1_save = " + g1_save + " g1=" + g1);
+            //System.out.println("Adding synchro relation g1_save = " + g2_save + " g3=" + g3);
+            tm.addSynchroRelation(tclass1, ddsl.lgate, t, ddsl.linklg);
+            tm.addSynchroRelation(t, ddsl.linkrg, tclass2, ddsl.rgate);
+        }      
+    }
+    
+    private TCDTClass findTClass(String artifact, String tclass) {
+        DesignPanel dpan = dp.tddp.getGUI().getDesignPanel(artifact);
+        if (dpan == null) {
+            return null;
+        }
+        
+        return dpan.getTCDTClass(tclass);
+    }
+    
+    
+    
+    
+}
\ No newline at end of file
diff --git a/src/ddtranslator/TClassLinkNode.java b/src/ddtranslator/TClassLinkNode.java
new file mode 100755
index 0000000000000000000000000000000000000000..449e31a4fdb74fa341d524fd8e1423e1ee3bf023
--- /dev/null
+++ b/src/ddtranslator/TClassLinkNode.java
@@ -0,0 +1,161 @@
+/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille
+
+ludovic.apvrille AT enst.fr
+
+This software is a computer program whose purpose is to allow the 
+edition of TURTLE analysis, design and deployment diagrams, to 
+allow the generation of RT-LOTOS or Java code from this diagram, 
+and at last to allow the analysis of formal validation traces 
+obtained from external tools, e.g. RTL from LAAS-CNRS and CADP 
+from INRIA Rhone-Alpes.
+
+This software is governed by the CeCILL  license under French law and
+abiding by the rules of distribution of free software.  You can  use, 
+modify and/ or redistribute the software under the terms of the CeCILL
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info". 
+
+As a counterpart to the access to the source code and  rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty  and the software's author,  the holder of the
+economic rights,  and the successive licensors  have only  limited
+liability. 
+
+In this respect, the user's attention is drawn to the risks associated
+with loading,  using,  modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean  that it is complicated to manipulate,  and  that  also
+therefore means  that it is reserved for developers  and  experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or 
+data to be ensured and,  more generally, to use and operate it in the 
+same conditions as regards security. 
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL license and that you accept its terms.
+
+ /**
+ * Class TClassLinkNode
+ * Creation: 01/06/2005
+ * @version 1.0 01/06/2005
+ * @author Ludovic APVRILLE
+ * @see 
+ */
+
+package ddtranslator;
+ 
+
+
+import myutil.*;
+import translator.*;
+
+public class TClassLinkNode extends TClass {
+    private static int id = 0;
+    
+    private String delay = "10";
+    
+    private ADParallel mainpar;
+    private int idGate = 0;
+    
+    public TClassLinkNode(String name) {
+	super(name, true);
+    }
+    
+    public static String generateName() {
+        id ++;
+        return "Link__" + (id-1);
+    }
+    
+    public int getIdGate() {
+        int ret = idGate;
+        idGate ++;
+        return (idGate - 1);
+    }
+    
+    public static void reinitName() {
+        id = 0;
+    }
+
+    public void prepareTClass() {
+        ActivityDiagram ad = new ActivityDiagram();
+        mainpar = new ADParallel();
+        ad.getStartState().addNext(mainpar);
+        ad.add(mainpar);
+        setActivityDiagram(ad);
+    }
+    
+    /*public Gate addInputGate(String name) {
+        
+    }
+    
+    public Gate addOutputGate(String name) {
+        
+    }*/
+    
+    public void addGateManagement(Gate g1, String call, Gate g2) {
+        addGateManagement(g1, call, g2, delay);
+    }
+    
+    public void addGateManagement(Gate g1, String call, Gate g2, String delay) {
+        ActivityDiagram ad = getActivityDiagram();
+        ADJunction adj1 = new ADJunction();
+        
+        //System.out.println("Call=" + call);
+        ADActionStateWithGate ad1 = new ADActionStateWithGate(g1);
+        ad1.setActionValue(call);
+        
+        ADParallel para = new ADParallel();
+        
+        ADDelay addelay = new ADDelay();
+        addelay.setValue(delay);
+        
+        ADActionStateWithGate ad2 = new ADActionStateWithGate(g2);
+        call = Conversion.replaceAllChar(call, '?', "!");
+        call = Conversion.replaceOp(call, ":nat", "");
+        //System.out.println("Call=" + call);
+        ad2.setActionValue(call);
+        
+        ADStop adstop = new ADStop();
+        
+        mainpar.addNext(adj1);
+        adj1.addNext(ad1);
+        ad1.addNext(para);
+        para.addNext(adj1);
+        para.addNext(addelay);
+        addelay.addNext(ad2);
+        ad2.addNext(adstop);
+        
+        ad.add(adj1);
+        ad.add(ad1);
+        ad.add(para);
+        ad.add(addelay);
+        ad.add(ad2);
+        ad.add(adstop);
+    }
+    
+    public void finishTClass() {
+        // Parallel with more than 5 nexts -> manage it !
+       
+    }
+    
+    public int getNbNext() {
+        return mainpar.getNbNext();
+    }
+    
+    public void makeBoolParameters(int nb) {
+        for(int i=0; i<nb; i++) {
+            addNewParamIfApplicable("b" + i, Param.BOOL, "false");
+        }
+    }
+    
+    public void makeNatParameters(int nb) {
+        for(int i=0; i<nb; i++) {
+            addNewParamIfApplicable("x" + i, Param.NAT, "0");
+        }
+    }
+    
+    public void setDelay(String _delay) {
+        delay = _delay;
+    }
+}  
\ No newline at end of file