From 34a7cac92b2d259d937cda459dff8a0fe0e967c5 Mon Sep 17 00:00:00 2001
From: Ludovic Apvrille <ludovic.apvrille@telecom-paristech.fr>
Date: Tue, 26 Jun 2018 15:41:15 +0200
Subject: [PATCH] Edition of fork operators

---
 src/main/java/tmltranslator/TMLChannel.java  |  2 ++
 src/main/java/tmltranslator/TMLModeling.java |  4 +--
 src/main/java/ui/tmlcompd/TMLCFork.java      | 34 ++++++++++++++++++--
 3 files changed, 35 insertions(+), 5 deletions(-)

diff --git a/src/main/java/tmltranslator/TMLChannel.java b/src/main/java/tmltranslator/TMLChannel.java
index bea849ea9e..6969fa4751 100755
--- a/src/main/java/tmltranslator/TMLChannel.java
+++ b/src/main/java/tmltranslator/TMLChannel.java
@@ -181,6 +181,8 @@ public class TMLChannel extends TMLCommunicationElement {
         this.nbOfSamples = nbOfSamples;
     }
 
+    public int getNumberOfSamples() { return nbOfSamples;}
+
     public TMLTask getDestinationTask(int index) {
         return destinationTasks.get(index);
     }
diff --git a/src/main/java/tmltranslator/TMLModeling.java b/src/main/java/tmltranslator/TMLModeling.java
index fb9f007a73..cc2357492d 100755
--- a/src/main/java/tmltranslator/TMLModeling.java
+++ b/src/main/java/tmltranslator/TMLModeling.java
@@ -2205,14 +2205,14 @@ public class TMLModeling<E> {
         TMLReadChannel read = new TMLReadChannel("ReadOfFork", null);
         forkActivity.addElement(read);
         read.addChannel(_ch);
-        read.setNbOfSamples("1");
+        read.setNbOfSamples("" + _ch.getNumberOfSamples());
 
         TMLWriteChannel []writes = new TMLWriteChannel[nb];
 
         for(i=0; i<nb; i++) {
             writes[i] = new TMLWriteChannel("WriteOfFork" + SEP1 + i, null);
             writes[i].addChannel(chans[i]);
-            writes[i].setNbOfSamples("1");
+            writes[i].setNbOfSamples("" + _ch.getNumberOfSamples());
             forkActivity.addElement(writes[i]);
         }
 
diff --git a/src/main/java/ui/tmlcompd/TMLCFork.java b/src/main/java/ui/tmlcompd/TMLCFork.java
index 16cb170bba..d1fc0ee9fc 100755
--- a/src/main/java/ui/tmlcompd/TMLCFork.java
+++ b/src/main/java/ui/tmlcompd/TMLCFork.java
@@ -45,6 +45,7 @@ import myutil.GraphicLib;
 import ui.*;
 import ui.util.IconManager;
 
+import javax.swing.*;
 import java.awt.*;
 
 /**
@@ -57,7 +58,7 @@ import java.awt.*;
 public class TMLCFork extends TMLCChannelFacility implements WithAttributes {
     protected int radius = 11;
 
-    protected int numberOfSamples = 1; // Indicates the number of samples being read before they
+     // value Indicates the number of samples being read before they
     // are written to destination. The default is 1.
 
 
@@ -83,8 +84,9 @@ public class TMLCFork extends TMLCChannelFacility implements WithAttributes {
 
         nbInternalTGComponent = 0;
 
-        value = "F";
+        value = "1";
         name = "Composite port";
+        editable = true;
 
         //insides = new ArrayList<TMLCPrimitivePort>();
         //outsides = new ArrayList<TMLCPrimitivePort>();
@@ -92,6 +94,9 @@ public class TMLCFork extends TMLCChannelFacility implements WithAttributes {
         myImageIcon = IconManager.imgic1204;
     }
 
+
+
+
     public void internalDrawing(Graphics g) {
 
 	radius = width / 2;
@@ -128,13 +133,36 @@ public class TMLCFork extends TMLCChannelFacility implements WithAttributes {
 
     }
 
+    public boolean editOndoubleClick(JFrame frame) {
+        String oldValue = value;
+
+        String s = (String) JOptionPane.showInputDialog(frame, "Number of samples per round",
+                "setting value", JOptionPane.PLAIN_MESSAGE, IconManager.imgic101, null,
+                getValue());
+        if ((s != null) && (s.length() > 0) && (!s.equals(oldValue))) {
+            try {
+                int testI = Integer.decode(value).intValue();
+            } catch (Exception e) {
+                JOptionPane.showMessageDialog(frame,
+                        "Could not change the number of samples: invalid value",
+                        "Error",
+                        JOptionPane.INFORMATION_MESSAGE);
+                value = oldValue;
+                return false;
+            }
+
+        }
+        return true;
+
+    }
+
 
     public int getType() {
         return TGComponentManager.TMLCTD_FORK;
     }
 
     public int getNumberOfSamples() {
-        return numberOfSamples;
+        return Integer.decode(value).intValue();
     }
 
 
-- 
GitLab