From 235b1ee0a39d9c181f4a03baee4a55ca5baba811 Mon Sep 17 00:00:00 2001
From: apvrille <ludovic.apvrille@eurecom.fr>
Date: Tue, 21 Nov 2017 16:28:08 +0100
Subject: [PATCH] Reworking of simulation window

---
 .../JFrameAvatarInteractiveSimulation.java    | 214 +++++++++---------
 1 file changed, 109 insertions(+), 105 deletions(-)

diff --git a/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java b/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java
index 0a7b75d49f..11b0b717f4 100755
--- a/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java
+++ b/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java
@@ -224,21 +224,20 @@ public  class JFrameAvatarInteractiveSimulation extends JFrame implements Avatar
     private boolean simulationRunning;
 
     // Async messages
-    Vector<AvatarSimulationAsynchronousTransaction> lastAsyncmsgs;
+    private Vector<AvatarSimulationAsynchronousTransaction> lastAsyncmsgs;
 
     //Latency
-    JPanel latencyPanel;
-    JComboBox<String> transaction1;
-    JComboBox<String> transaction2;
-    JButton addLatencyCheckButton;
-    JButton updateLatencyButton;
-    LatencyTableModel latm;
-//    public Vector<String> checkedTransactions = new Vector<String>();
+    private JPanel latencyPanel;
+    private JComboBox<String> transaction1;
+    private JComboBox<String> transaction2;
+    private JButton addLatencyCheckButton;
+    private JButton updateLatencyButton;
+    private LatencyTableModel latm;
+    //    public Vector<String> checkedTransactions = new Vector<String>();
     private Vector<SimulationLatency> latencies = new Vector<SimulationLatency>();
     //List<String> toCheck = new ArrayList<String>();
-	Map<String, SimulationLatency> nameLatencyMap = new HashMap<String, SimulationLatency>();
-    Map<String, List<String>> transTimes = new HashMap<String, List<String>>(); //Map of each checked element: all transaction times
-
+    private Map<String, SimulationLatency> nameLatencyMap = new HashMap<String, SimulationLatency>();
+    private Map<String, List<String>> transTimes = new HashMap<String, List<String>>(); //Map of each checked element: all transaction times
     private JScrollPane jspLatency;
 
     public JFrameAvatarInteractiveSimulation(/*Frame _f,*/ MainGUI _mgui, String _title, AvatarSpecification _avspec) {
@@ -263,28 +262,28 @@ public  class JFrameAvatarInteractiveSimulation extends JFrame implements Avatar
 
         initSimulation();
         for (String id: _avspec.checkedIDs){
-           // checkedTransactions.add(id);
+            // checkedTransactions.add(id);
             transTimes.put(id, new ArrayList<String>());
         }
-		for (AvatarPragmaLatency latencyPragma: _avspec.getLatencyPragmas()){
-			for (String id1: latencyPragma.getId1()){
-				for (String id2: latencyPragma.getId2()){
-					if (!nameLatencyMap.containsKey(id1 + "--"+id2)){
-						SimulationLatency sl = new SimulationLatency();
-						sl.setTransaction1(id1);
-						sl.setTransaction2(id2);
-						sl.addPragma(latencyPragma);
-						nameLatencyMap.put(id1 + "--"+id2, sl);
-						latencies.add(sl);
-						//toCheck.add(latencyPragma.getId1().get(0) + "--"+latencyPragma.getId2().get(0));
-						updateTransactionsTable();
-					}
-					else {
-						nameLatencyMap.get(id1 + "--"+id2).addPragma(latencyPragma);
-					}
-				}
-			}
-		}
+        for (AvatarPragmaLatency latencyPragma: _avspec.getLatencyPragmas()){
+            for (String id1: latencyPragma.getId1()){
+                for (String id2: latencyPragma.getId2()){
+                    if (!nameLatencyMap.containsKey(id1 + "--"+id2)){
+                        SimulationLatency sl = new SimulationLatency();
+                        sl.setTransaction1(id1);
+                        sl.setTransaction2(id2);
+                        sl.addPragma(latencyPragma);
+                        nameLatencyMap.put(id1 + "--"+id2, sl);
+                        latencies.add(sl);
+                        //toCheck.add(latencyPragma.getId1().get(0) + "--"+latencyPragma.getId2().get(0));
+                        updateTransactionsTable();
+                    }
+                    else {
+                        nameLatencyMap.get(id1 + "--"+id2).addPragma(latencyPragma);
+                    }
+                }
+            }
+        }
         makeComponents();
         setComponents();
     }
@@ -611,21 +610,25 @@ public  class JFrameAvatarInteractiveSimulation extends JFrame implements Avatar
           jp01.add(latex, c01);*/
         /*debug = new JCheckBox("Print messages received from server");
           jp01.add(debug, c01);*/
+        c01.gridwidth = 1;
         animate = new JCheckBox("Animate UML diagrams");
         jp01.add(animate, c01);
-        diploids = new JCheckBox("Show AVATAR IDs on UML diagrams");
+        c01.gridwidth = GridBagConstraints.REMAINDER; //end row
+        diploids = new JCheckBox("Show AVATAR IDs on diagrams");
         jp01.add(diploids, c01);
         diploids.addItemListener(this);
         diploids.setSelected(false);
+        c01.gridwidth = 1;
         hidden = new JCheckBox("Show hidden state in sequence diagram");
         jp01.add(hidden, c01);
         hidden.addItemListener(this);
         hidden.setSelected(false);
+        c01.gridwidth = GridBagConstraints.REMAINDER; //end row
         animateWithInfo = new JCheckBox("Show transaction progression on UML diagrams");
         //jp01.add(animateWithInfo, c01);
         animateWithInfo.addItemListener(this);
         animateWithInfo.setSelected(true);
-        openDiagram = new JCheckBox("Automatically open active state machine diagram");
+        openDiagram = new JCheckBox("Auto open active state machines");
         jp01.add(openDiagram, c01);
         openDiagram.setSelected(true);
         //update = new JCheckBox("Automatically update information (variables)");
@@ -675,7 +678,7 @@ public  class JFrameAvatarInteractiveSimulation extends JFrame implements Avatar
                     statuss.setText("Unknown / bad number: " + displayedTransactionsText.getText());
                 }
             });
-        jp01.add(new JLabel("Index of last transaction:"), c01);
+        jp01.add(new JLabel("Index of last trans.:"), c01);
         c01.gridwidth = GridBagConstraints.REMAINDER; //end row
         lastTransactionsText = new JTextField(""+LAST_TRANSACTIONS, 10);
         jp01.add(lastTransactionsText, c01);
@@ -712,14 +715,15 @@ public  class JFrameAvatarInteractiveSimulation extends JFrame implements Avatar
 
 
 
-
-        executeEmptyTransition = new JCheckBox("Automatically execute empty transitions");
+        c01.gridwidth = 1;
+        executeEmptyTransition = new JCheckBox("Auto execute empty transitions");
         jp01.add(executeEmptyTransition, c01);
         executeEmptyTransition.setSelected(true);
         executeEmptyTransition.addItemListener(this);
         ass.setExecuteEmptyTransition(executeEmptyTransition.isSelected());
 
-        executeStateEntering = new JCheckBox("Automatically enter states");
+        c01.gridwidth = GridBagConstraints.REMAINDER; //end row
+        executeStateEntering = new JCheckBox("Auto enter states");
         jp01.add(executeStateEntering, c01);
         executeStateEntering.setSelected(true);
         executeStateEntering.addItemListener(this);
@@ -863,7 +867,7 @@ public  class JFrameAvatarInteractiveSimulation extends JFrame implements Avatar
         jspDisplayedBlocks = new JScrollPane(displayedBlockPanel);
         jspDisplayedBlocks.setWheelScrollingEnabled(true);
         jspDisplayedBlocks.getVerticalScrollBar().setUnitIncrement(10);
-        jspDisplayedBlocks.setPreferredSize(new Dimension(250, 300));
+        jspDisplayedBlocks.setPreferredSize(new Dimension(200, 300));
         infoTab.addTab("Displayed blocks", IconManager.imgic1202, jspDisplayedBlocks, "Displayed blocks");
 
 
@@ -874,13 +878,13 @@ public  class JFrameAvatarInteractiveSimulation extends JFrame implements Avatar
         GridBagConstraints c0 = new GridBagConstraints();
         latencyPanel.setLayout(gridbag0);
         c0.gridwidth = GridBagConstraints.REMAINDER;
-        latencyPanel.add(new JLabel("Latencies shown in number of cycles relative to the main clock"), c0);
+        latencyPanel.add(new JLabel("Latencies shown in number of cycles w.r.t. the main clock"), c0);
 
         c0.gridwidth=1;
         c0.gridheight=1;
         latencyPanel.add(new JLabel("Checkpoint 1:"),c0);
         c0.gridwidth = GridBagConstraints.REMAINDER;
-		Vector<String> transactions = new Vector<String>(transTimes.keySet());
+        Vector<String> transactions = new Vector<String>(transTimes.keySet());
         transaction1 = new JComboBox<String>(transactions);
         latencyPanel.add(transaction1, c0);
 
@@ -923,8 +927,8 @@ public  class JFrameAvatarInteractiveSimulation extends JFrame implements Avatar
         jspLatency = new JScrollPane(latTable);
         jspLatency.setWheelScrollingEnabled(true);
         jspLatency.getVerticalScrollBar().setUnitIncrement(10);
-        jspLatency.setMinimumSize(new Dimension(400, 250));
-        jspLatency.setPreferredSize(new Dimension(1400, 250));
+        jspLatency.setMinimumSize(new Dimension(250, 50));
+        jspLatency.setPreferredSize(new Dimension(250, 50));
         latencyPanel.add(jspLatency, c0);
 
 
@@ -1351,7 +1355,7 @@ public  class JFrameAvatarInteractiveSimulation extends JFrame implements Avatar
 
     public void resetMetElements() {
         if (avspec.getReferenceObject() instanceof AvatarDesignPanel) {
-            ((AvatarDesignPanel)(avspec.getReferenceObject())).resetMetElements();		
+            ((AvatarDesignPanel)(avspec.getReferenceObject())).resetMetElements();
 
         } else if (avspec.getReferenceObject() instanceof AttackTreePanel) {
             ((AttackTreePanel)(avspec.getReferenceObject())).resetMetElements();
@@ -1449,23 +1453,23 @@ public  class JFrameAvatarInteractiveSimulation extends JFrame implements Avatar
     }
 
     public void addLatency(){
-		SimulationLatency sl = new SimulationLatency();
-		sl.setTransaction1(transaction1.getSelectedItem().toString());
-		sl.setTransaction2(transaction2.getSelectedItem().toString());
-		nameLatencyMap.put(transaction1.getSelectedItem().toString()+"--"+transaction2.getSelectedItem().toString(), sl);
-		latencies.add(sl);
-//        toCheck.add(transaction1.getSelectedItem().toString()+"--"+transaction2.getSelectedItem().toString());
+        SimulationLatency sl = new SimulationLatency();
+        sl.setTransaction1(transaction1.getSelectedItem().toString());
+        sl.setTransaction2(transaction2.getSelectedItem().toString());
+        nameLatencyMap.put(transaction1.getSelectedItem().toString()+"--"+transaction2.getSelectedItem().toString(), sl);
+        latencies.add(sl);
+        //        toCheck.add(transaction1.getSelectedItem().toString()+"--"+transaction2.getSelectedItem().toString());
         updateTransactionsTable();
     }
 
-	public void resetLatencies(){
-		for (SimulationLatency latency: latencies){
-			latency.setMinTime("N/A");
-			latency.setMaxTime("N/A");
-			latency.setAverageTime("N/A");
-			latency.setStDev("N/A");
-		}
-	}
+    public void resetLatencies(){
+        for (SimulationLatency latency: latencies){
+            latency.setMinTime("N/A");
+            latency.setMaxTime("N/A");
+            latency.setAverageTime("N/A");
+            latency.setStDev("N/A");
+        }
+    }
 
     public void updateTransactionsTable() {
         if (transactiontm != null) {
@@ -1476,17 +1480,17 @@ public  class JFrameAvatarInteractiveSimulation extends JFrame implements Avatar
             if (ass.getAllTransactions()!=null){
                 for (AvatarSimulationTransaction trans: ass.getAllTransactions()){
                     if ((trans.executedElement != null) && (trans.executedElement.getReferenceObject() != null)) {
-//                        String id = ((TGComponent)trans.executedElement.getReferenceObject()).getName() + ":"+Integer.toString(trans.executedElement.getID());
-					String id = Integer.toString(trans.executedElement.getID());
+                        //                        String id = ((TGComponent)trans.executedElement.getReferenceObject()).getName() + ":"+Integer.toString(trans.executedElement.getID());
+                        String id = Integer.toString(trans.executedElement.getID());
                         //  System.out.println(id + " " + transTimes.keySet());
                         //  System.out.println("transaction " + trans.executedElement.getID() + " " + trans.initialClockValue);
-						String key="";
-						for (String s: transTimes.keySet()){
-							String tmpid = s.split(":")[1];
-							if (id.equals(tmpid)){
-								key=s;
-							}
-						}
+                        String key="";
+                        for (String s: transTimes.keySet()){
+                            String tmpid = s.split(":")[1];
+                            if (id.equals(tmpid)){
+                                key=s;
+                            }
+                        }
                         if (transTimes.containsKey(key)){
                             if (!transTimes.get(key).contains(Long.toString(trans.initialClockValue))){
                                 transTimes.get(key).add(Long.toString(trans.initialClockValue));
@@ -1499,46 +1503,46 @@ public  class JFrameAvatarInteractiveSimulation extends JFrame implements Avatar
             for (String st1:transTimes.keySet()){
                 for (String st2:transTimes.keySet()){
                     if (st1!=st2 && nameLatencyMap.containsKey(st1 +"--"+st2)){
-						SimulationLatency sl = nameLatencyMap.get(st1 +"--"+st2);
-                    	if (transTimes.get(st1) !=null && transTimes.get(st2)!=null){
-							ArrayList<Integer> minTimes = new ArrayList<Integer>();
-							/*SimulationLatency sl = new SimulationLatency();
-							sl.setTransaction1(st1);
-							sl.setTransaction2(st2);*/
-							for(String time1: transTimes.get(st1)){
-								//Find the first subsequent transaction
- 								int time = Integer.MAX_VALUE;
-								for (String time2: transTimes.get(st2)){
-									int diff = Integer.valueOf(time2) - Integer.valueOf(time1);
-									if (diff < time && diff >=0){
-										time=diff;
-									}
-								}
-								if (time!=Integer.MAX_VALUE){
-									minTimes.add(time);
-								}
-							}
-						//	System.out.println(transTimes.get(st1) + " " + transTimes.get(st2) + " " + minTimes);
-							if (minTimes.size()>0){
-                                    int sum=0;
-                                    sl.setMinTime(Integer.toString(Collections.min(minTimes)));
-                                    sl.setMaxTime(Integer.toString(Collections.max(minTimes)));
-                                    for (int time: minTimes){
-                                        sum+=time;
-                                    }
-                                    double average = (double) sum/ (double) minTimes.size();
-                                    double stdev =0.0;
-                                    for (int time:minTimes){
-                                        stdev +=(time - average)*(time-average);
+                        SimulationLatency sl = nameLatencyMap.get(st1 +"--"+st2);
+                        if (transTimes.get(st1) !=null && transTimes.get(st2)!=null){
+                            ArrayList<Integer> minTimes = new ArrayList<Integer>();
+                            /*SimulationLatency sl = new SimulationLatency();
+                              sl.setTransaction1(st1);
+                              sl.setTransaction2(st2);*/
+                            for(String time1: transTimes.get(st1)){
+                                //Find the first subsequent transaction
+                                int time = Integer.MAX_VALUE;
+                                for (String time2: transTimes.get(st2)){
+                                    int diff = Integer.valueOf(time2) - Integer.valueOf(time1);
+                                    if (diff < time && diff >=0){
+                                        time=diff;
                                     }
-                                    stdev= stdev/minTimes.size();
-                                    stdev = Math.sqrt(stdev);
-                                    sl.setAverageTime(String.format("%.1f",average));
-                                    sl.setStDev(String.format("%.1f",stdev));
-									mgui.addLatencyVals(Integer.valueOf(st2.split(":")[1]), new String[]{st1, Integer.toString(Collections.max(minTimes))});
+                                }
+                                if (time!=Integer.MAX_VALUE){
+                                    minTimes.add(time);
+                                }
+                            }
+                            //  System.out.println(transTimes.get(st1) + " " + transTimes.get(st2) + " " + minTimes);
+                            if (minTimes.size()>0){
+                                int sum=0;
+                                sl.setMinTime(Integer.toString(Collections.min(minTimes)));
+                                sl.setMaxTime(Integer.toString(Collections.max(minTimes)));
+                                for (int time: minTimes){
+                                    sum+=time;
+                                }
+                                double average = (double) sum/ (double) minTimes.size();
+                                double stdev =0.0;
+                                for (int time:minTimes){
+                                    stdev +=(time - average)*(time-average);
+                                }
+                                stdev= stdev/minTimes.size();
+                                stdev = Math.sqrt(stdev);
+                                sl.setAverageTime(String.format("%.1f",average));
+                                sl.setStDev(String.format("%.1f",stdev));
+                                mgui.addLatencyVals(Integer.valueOf(st2.split(":")[1]), new String[]{st1, Integer.toString(Collections.max(minTimes))});
                             }
-   //                         	latencies.add(sl);
-							
+                            //                          latencies.add(sl);
+
 
                         }
 
@@ -1549,7 +1553,7 @@ public  class JFrameAvatarInteractiveSimulation extends JFrame implements Avatar
 
             if (latm !=null && latencies.size()>0){
                 latm.setData(latencies);
-	            ((AvatarDesignPanel)(avspec.getReferenceObject())).modelBacktracingLatency(latencies);	
+                ((AvatarDesignPanel)(avspec.getReferenceObject())).modelBacktracingLatency(latencies);
             }
         }
     }
-- 
GitLab