From ed5fe0ae5826a8b7bf6acbdcfb3edd7e20cae560 Mon Sep 17 00:00:00 2001
From: Ludovic Apvrille <ludovic.apvrille@telecom-paristech.fr>
Date: Wed, 26 Sep 2018 10:58:04 +0200
Subject: [PATCH] Adding simulation traces for avatar simulations

---
 src/main/java/ui/GTURTLEModeling.java         | 19 ++++++++++++++++-
 src/main/java/ui/SimulationTrace.java         |  6 +++++-
 .../JFrameAvatarInteractiveSimulation.java    | 21 ++++++++++++++++---
 3 files changed, 41 insertions(+), 5 deletions(-)

diff --git a/src/main/java/ui/GTURTLEModeling.java b/src/main/java/ui/GTURTLEModeling.java
index c4a5307bf1..3f91f804a9 100644
--- a/src/main/java/ui/GTURTLEModeling.java
+++ b/src/main/java/ui/GTURTLEModeling.java
@@ -139,6 +139,7 @@ import java.util.List;
 // AVATAR
 // AVATAR
 
+//Communication Pattern javaCC parser
 //Communication Pattern javaCC parser
 //import compiler.tmlCPparser.*;
 
@@ -299,8 +300,24 @@ public class GTURTLEModeling {
     }
 
     public void addSimulationTrace(SimulationTrace newTrace) {
-        TraceManager.addDev("Adding new simulation trace " + newTrace);
+        //TraceManager.addDev("Adding new simulation trace " + newTrace);
+        if (newTrace.hasFile()) {
+            // We have to remove identical traces
+            LinkedList<SimulationTrace> ll = new LinkedList<>();
+            for(SimulationTrace trace: simulationTraces) {
+                if (trace.hasFile()) {
+                    if (trace.getFullPath().compareTo(newTrace.getFullPath()) == 0) {
+                        ll.add(trace);
+                    }
+                }
+            }
+            for(SimulationTrace trace: ll) {
+                simulationTraces.remove(trace);
+            }
+        }
+
         simulationTraces.add(newTrace);
+
     }
 
     public void removeSimulationTrace(SimulationTrace oldTrace) {
diff --git a/src/main/java/ui/SimulationTrace.java b/src/main/java/ui/SimulationTrace.java
index 07c46b87bf..1ec22620d2 100644
--- a/src/main/java/ui/SimulationTrace.java
+++ b/src/main/java/ui/SimulationTrace.java
@@ -47,7 +47,11 @@ public class SimulationTrace {
     public static final int TXT_DIPLO = 1;
     public static final int HTML_DIPLO = 2;
 
-	private static String[] TYPES = {"VCD DIPLO", "TXT DIPLO", "HTML DIPLO"};
+    public static final int PNG_AVATAR = 3;
+    public static final int TXT_AVATAR = 4;
+    public static final int SVG_AVATAR = 5;
+
+	private static String[] TYPES = {"VCD DIPLO", "TXT DIPLO", "HTML DIPLO", "PNG AVATAR", "TXT AVATAR", "SVG AVATAR"};
 
     public SimulationTrace(String name, int type) {
         this(name, type, null);
diff --git a/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java b/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java
index 7e38b4192f..3095b7498f 100755
--- a/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java
+++ b/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java
@@ -1803,10 +1803,16 @@ public class JFrameAvatarInteractiveSimulation extends JFrame implements AvatarS
             return;
         }
 
-        JOptionPane.showMessageDialog(this,
+        /*JOptionPane.showMessageDialog(this,
                 "Simulation trace was saved in " + fileName,
                 "Error",
-                JOptionPane.INFORMATION_MESSAGE);
+                JOptionPane.INFORMATION_MESSAGE);*/
+
+        String shortFileName;
+        File f = new File(fileName);
+        shortFileName = f.getName();
+        SimulationTrace st = new SimulationTrace(shortFileName, SimulationTrace.TXT_AVATAR, fileName);
+        mgui.addSimulationTrace(st);
 
         //ass.printExecutedTransactions();
     }
@@ -1853,6 +1859,12 @@ public class JFrameAvatarInteractiveSimulation extends JFrame implements AvatarS
         gen.saveInSVG(sdpanel, fileName);
         //newSVGSave(fileName);
 
+        String shortFileName;
+        File f = new File(fileName);
+        shortFileName = f.getName();
+        SimulationTrace st = new SimulationTrace(shortFileName, SimulationTrace.SVG_AVATAR, fileName);
+        mgui.addSimulationTrace(st);
+
 
         /*StringBuffer sb = new StringBuffer("<?xml version=\"1.0\" standalone=\"no\"?>\n");
         sb.append("<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n");
@@ -1950,7 +1962,10 @@ public class JFrameAvatarInteractiveSimulation extends JFrame implements AvatarS
 
         file = new File(filePath);
 
-        mgui.writeImageCapture(bi, file, true);
+        mgui.writeImageCapture(bi, file, false);
+
+        SimulationTrace st = new SimulationTrace(file.getName(), SimulationTrace.PNG_AVATAR, file.getAbsolutePath());
+        mgui.addSimulationTrace(st);
     }
 
     public void deleteAsyncMsg() {
-- 
GitLab