diff --git a/src/main/java/simulationtraceanalysis/CompareSimulationTrace.java b/src/main/java/simulationtraceanalysis/CompareSimulationTrace.java
index 00f959a7f830d17e43c4277fc06e3b0cd3ead209..2962157484dd2218c49bcaa3cc8fd3ad9e7df9a7 100644
--- a/src/main/java/simulationtraceanalysis/CompareSimulationTrace.java
+++ b/src/main/java/simulationtraceanalysis/CompareSimulationTrace.java
@@ -62,6 +62,10 @@ public class CompareSimulationTrace extends JPanel implements TableModelListener
     private static JTable table;
     private String[] columnNames;
     private Object[][] data;
+    private static final String DEVICE_NAME = "Device Name";
+    private static final String TRACE_NAME = "Trace Name";
+    private static final String TRANS_FILE_2 = "transFile 2";
+    private static final String TRANS_FILE_1 = "transFile 1";
 
     public TableModel JPanelCompareXmlGraph(Vector<SimulationTransaction> transFile1, Vector<SimulationTransaction> transFile2) {
         // super(new GridLayout(1, 0));
@@ -101,8 +105,8 @@ public class CompareSimulationTrace extends JPanel implements TableModelListener
             }
             columnNames = new String[maxTime + 2];
             data = new Object[deviceNames1.size() + deviceNames2.size()][maxTime + 2];
-            columnNames[0] = "Device Name";
-            columnNames[1] = "Trace Name";
+            columnNames[0] = DEVICE_NAME;
+            columnNames[1] = TRACE_NAME;
             for (SimulationTransaction st : transFile1) {
                 for (String dName : deviceNames1) {
                     if (st.deviceName.equals(dName)) {
@@ -118,7 +122,7 @@ public class CompareSimulationTrace extends JPanel implements TableModelListener
                             }
                             data[allDevices.indexOf(dName.concat("1"))][Integer.parseInt(st.startTime) + i + 2] = st.command;
                             ;
-                            data[allDevices.indexOf(dName.concat("1"))][1] = "transFile 1";
+                            data[allDevices.indexOf(dName.concat("1"))][1] = TRANS_FILE_1;
                         }
                     }
                 }
@@ -137,7 +141,7 @@ public class CompareSimulationTrace extends JPanel implements TableModelListener
                                 st.command = writeCommand[0] + " " + sentences2[1];
                             }
                             data[allDevices.indexOf(dName.concat("2"))][Integer.parseInt(st.startTime) + i + 2] = st.command;
-                            data[allDevices.indexOf(dName.concat("2"))][1] = "transFile 2";
+                            data[allDevices.indexOf(dName.concat("2"))][1] = TRANS_FILE_2;
                         }
                     }
                 }
diff --git a/src/main/java/simulationtraceanalysis/DependencyGraphTranslator.java b/src/main/java/simulationtraceanalysis/DependencyGraphTranslator.java
index 0992fec333c39ea59a993737cf23695bef857bac..a9f763ae8c1e2e187272eba71c00d20972da97ac 100644
--- a/src/main/java/simulationtraceanalysis/DependencyGraphTranslator.java
+++ b/src/main/java/simulationtraceanalysis/DependencyGraphTranslator.java
@@ -210,6 +210,7 @@ public class DependencyGraphTranslator extends SwingWorker {
     private static final String GET_REQ_ARG_LABEL = "getReqArg";
     private static final String WAIT_ST = "Wait: ";
     private static final String WAIT_EVENT = "Wait event: ";
+    private static final String SEND_EVENT = "Send event: ";
     private static final String STOP_AFTER_INFINITE_LOOP = "Stop after infinite loop";
     private static final String START_OF_FORK = "startOfFork";
     private static final String START_OF_JOIN = "startOfJoin";
@@ -1094,12 +1095,12 @@ public class DependencyGraphTranslator extends SwingWorker {
             String receiveDataPortdetails = "";
             if (sendingPortdetails != null && receivePortdetails != null) {
                 TMLEvent event = waitEvent.getEvent();
-                String nameW = taskAc.getName() + "__" + "Wait event: " + event.getName();
+                String nameW = taskAc.getName() + "__" + WAIT_EVENT + event.getName();
                 dependencyGraphRelations.getWaitEvt().put(nameW, new ArrayList<String>());
                 TMLTask originTasks = waitEvent.getEvent().getOriginTask();
                 for (TMLSendEvent wait_sendEvent : originTasks.getSendEvents()) {
                     event = wait_sendEvent.getEvent();
-                    String nameS = originTasks.getName() + "__" + "Send event: " + event.getName();
+                    String nameS = originTasks.getName() + "__" + SEND_EVENT + event.getName();
                     dependencyGraphRelations.getWaitEvt().get(nameW).add(nameS);
                 }
             } else {
@@ -1165,12 +1166,12 @@ public class DependencyGraphTranslator extends SwingWorker {
                             .add(SENDEVENT + sendingDataPortdetails + "(" + sendingPortparams + ")");
                 } else {
                     TMLEvent event = waitEvent.getEvent();
-                    String nameW = taskAc.getName() + "__" + "Wait event: " + event.getName();
+                    String nameW = taskAc.getName() + "__" + WAIT_EVENT + event.getName();
                     dependencyGraphRelations.getWaitEvt().put(nameW, new ArrayList<String>());
                     TMLTask originTasks = waitEvent.getEvent().getOriginTask();
                     for (TMLSendEvent wait_sendEvent : originTasks.getSendEvents()) {
                         event = wait_sendEvent.getEvent();
-                        String nameS = originTasks.getName() + "__" + "Send event: " + event.getName();
+                        String nameS = originTasks.getName() + "__" + SEND_EVENT + event.getName();
                         dependencyGraphRelations.getWaitEvt().get(nameW).add(nameS);
                     }
                 }
@@ -1317,11 +1318,11 @@ public class DependencyGraphTranslator extends SwingWorker {
         for (TMLSendEvent sendEvent : taskAc.getSendEvents()) {
             TMLTask destinationTasks = sendEvent.getEvent().getDestinationTask();
             TMLEvent event = sendEvent.getEvent();
-            String nameS = taskAc.getName() + "__" + "Send event: " + event.getName();
+            String nameS = taskAc.getName() + "__" + SEND_EVENT + event.getName();
             dependencyGraphRelations.getSendEvt().put(nameS, new ArrayList<String>());
             for (TMLWaitEvent wait_sendEvent : destinationTasks.getWaitEvents()) {
                 event = wait_sendEvent.getEvent();
-                String nameW = destinationTasks.getName() + "__" + "Wait event: " + event.getName();
+                String nameW = destinationTasks.getName() + "__" + WAIT_EVENT + event.getName();
                 dependencyGraphRelations.getSendEvt().get(nameS).add(nameW);
             }
         }
@@ -1906,10 +1907,10 @@ public class DependencyGraphTranslator extends SwingWorker {
         String name = "";
         if (currentElement2 instanceof TMLWaitEvent) {
             TMLEvent event = ((TMLWaitEvent) currentElement2).getEvent();
-            name = taskName + "__" + "Wait event: " + event.getName() + "__" + currentElement2.getID();
+            name = taskName + "__" + WAIT_EVENT + event.getName() + "__" + currentElement2.getID();
         } else if (currentElement2 instanceof TMLSendEvent) {
             TMLEvent event = ((TMLSendEvent) currentElement2).getEvent();
-            name = taskName + "__" + "Send event: " + event.getName() + "__" + currentElement2.getID();
+            name = taskName + "__" + SEND_EVENT + event.getName() + "__" + currentElement2.getID();
         } else {
             name = taskName + "__" + currentElement2.getName().replace(" ", "") + "__" + currentElement2.getID();
         }
diff --git a/src/main/java/ui/simulationtraceanalysis/JFrameCompareLatencyDetail.java b/src/main/java/ui/simulationtraceanalysis/JFrameCompareLatencyDetail.java
index e970d28a58efb57ec1b8d18e1f69b428a74f8da5..86522027ea000e8a7b49d1b783dfc0c69f332dd9 100644
--- a/src/main/java/ui/simulationtraceanalysis/JFrameCompareLatencyDetail.java
+++ b/src/main/java/ui/simulationtraceanalysis/JFrameCompareLatencyDetail.java
@@ -84,7 +84,7 @@ public class JFrameCompareLatencyDetail extends JFrame implements ActionListener
     private Object[][] tableData2MinMax, tableData1MinMax, tableData2, tableData = null;
     private JScrollPane scrollPane11, scrollPane12, scrollPane21, scrollPane22;
     private MainGUI mainGUI;
-    private latencyDetailedAnalysisMain latencyDetailedAnalysisMain;
+    private LatencyDetailedAnalysisMain LatencyDetailedAnalysisMain;
     private JFrameLatencyDetailedAnalysis jFrameLatencyDetailedAnalysis;
     private JFrameCompareLatencyDetail jFrameCompareLatencyDetail;
     private JProgressBar pbar;
@@ -101,7 +101,7 @@ public class JFrameCompareLatencyDetail extends JFrame implements ActionListener
     private static final String OP_B_COLNAME = "OPERATOR B ";
 
     // private DirectedGraphTranslator dgraph;
-    public JFrameCompareLatencyDetail(latencyDetailedAnalysisMain latencyDetailedAnaly, MainGUI mgui, final Vector<String> checkedTransactionsFile1,
+    public JFrameCompareLatencyDetail(LatencyDetailedAnalysisMain latencyDetailedAnaly, MainGUI mgui, final Vector<String> checkedTransactionsFile1,
             TMLMapping<TGComponent> map1, List<TMLComponentDesignPanel> cpanels1, final SimulationTrace selectedST1, boolean b,
             LatencyAnalysisParallelAlgorithms tc1) throws InterruptedException {
         super("Latency Comparison");
@@ -110,7 +110,7 @@ public class JFrameCompareLatencyDetail extends JFrame implements ActionListener
         mainGUI = mgui;
         map = map1;
         cpanels = cpanels1;
-        latencyDetailedAnalysisMain = latencyDetailedAnaly;
+        LatencyDetailedAnalysisMain = latencyDetailedAnaly;
         // dgraph2 = graph2;
         file1 = new File(selectedST1.getFullPath());
         // file2 = new File(selectedST2.getFullPath());
@@ -483,20 +483,20 @@ public class JFrameCompareLatencyDetail extends JFrame implements ActionListener
                 int returnVal = fc.showOpenDialog(mainGUI.frame);
                 if (returnVal == JFileChooser.APPROVE_OPTION) {
                     File filefc = fc.getSelectedFile();
-                    latencyDetailedAnalysisMain.setCheckedTransactionsFile(new Vector<String>());
+                    LatencyDetailedAnalysisMain.setCheckedTransactionsFile(new Vector<String>());
                     SimulationTrace STfile2 = new SimulationTrace(filefc.getName(), 6, filefc.getAbsolutePath());
                     secondFile.setText(filefc.getAbsolutePath());
                     if (STfile2 instanceof SimulationTrace) {
                         file2 = new File(STfile2.getFullPath());
                         try {
-                            latencyDetailedAnalysisMain.latencyDetailedAnalysisForXML(mainGUI, STfile2, false, true, 2);
+                            LatencyDetailedAnalysisMain.latencyDetailedAnalysisForXML(mainGUI, STfile2, false, true, 2);
                         } catch (XPathExpressionException | ParserConfigurationException | SAXException | IOException e) {
                             // TODO Auto-generated catch block
                             e.printStackTrace();
                         }
-                        checkedTransactionsFile2 = latencyDetailedAnalysisMain.getCheckedTransactionsFile();
-                        map = latencyDetailedAnalysisMain.getMap1();
-                        cpanels = latencyDetailedAnalysisMain.getCpanels1();
+                        checkedTransactionsFile2 = LatencyDetailedAnalysisMain.getCheckedTransactionsFile();
+                        map = LatencyDetailedAnalysisMain.getMap1();
+                        cpanels = LatencyDetailedAnalysisMain.getCpanels1();
                         this.toFront();
                         this.requestFocus();
                         this.pack();
diff --git a/src/main/java/ui/simulationtraceanalysis/JFrameCompareSimulationTraces.java b/src/main/java/ui/simulationtraceanalysis/JFrameCompareSimulationTraces.java
index 7682c76bea42f6d6f160af3b48ed1581625382b0..276786f90b89eee934b4efa952d8fbd71157e8b8 100644
--- a/src/main/java/ui/simulationtraceanalysis/JFrameCompareSimulationTraces.java
+++ b/src/main/java/ui/simulationtraceanalysis/JFrameCompareSimulationTraces.java
@@ -35,112 +35,108 @@
  * The fact that you are presently reading this means that you have had
  * knowledge of the CeCILL license and that you accept its terms.
  */
+package ui.simulationtraceanalysis;
 
-package ui.interactivesimulation;
-
+import java.awt.BorderLayout;
 import java.awt.Color;
+import java.awt.Container;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
-import java.awt.GridLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.io.File;
 import java.io.IOException;
 import java.util.Vector;
-
-import javax.swing.DefaultComboBoxModel;
 import javax.swing.JButton;
 import javax.swing.JComboBox;
 import javax.swing.JFileChooser;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
 import javax.swing.JTextField;
 import javax.swing.border.LineBorder;
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
 import javax.swing.filechooser.FileNameExtensionFilter;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
-
 import org.xml.sax.SAXException;
-
 import common.ConfigurationTTool;
+import simulationtraceanalysis.CompareSimulationTrace;
 import ui.MainGUI;
 import ui.SimulationTrace;
+import ui.interactivesimulation.InteractiveSimulationActions;
+import ui.interactivesimulation.SimulationTransaction;
+import ui.interactivesimulation.SimulationTransactionParser;
 
-public class JFrameCompareSimulationTraces extends JFrame implements ActionListener {
-
-    private JButton browse, parse, difference, latencyDetails, latencyAnalysis;
+public class JFrameCompareSimulationTraces extends JFrame implements ActionListener, TableModelListener {
+    private JButton browse, parse, difference, latencyDetails, latencyAnalysis, close;
     private JFileChooser fc, fc2;
     private File file;
-    private SimulationTrace selectedST, secondSelectedST;
+    private SimulationTrace selectedST;
     private static Vector<SimulationTransaction> transFile1;
-    Vector<String> dropDown1, dropDown2 = new Vector<String>();
-    private JFrame  JFrameTest;
-
-    MainGUI _mgui;
-
-    public Vector<SimulationTransaction> getTransFile1() {
-        return transFile1;
-    }
-
-    public void setTransFile1(Vector<SimulationTransaction> transFile1) {
-        this.transFile1 = transFile1;
-    }
-
-    public Vector<SimulationTransaction> getTransFile2() {
-        return transFile2;
-    }
-
-    public void setTransFile2(Vector<SimulationTransaction> transFile2) {
-        this.transFile2 = transFile2;
-    }
+    private Vector<String> dropDown1, dropDown2 = new Vector<String>();
+    private JFrame JFrameTest;
+    private GridBagConstraints mainConstraint = new GridBagConstraints();
+    private JTable table11;
+    private static final String FIRST_SIMULATION_TRACE_FILE = "First Simulation Trace File ";
+    private static final String Second_SIMULATION_TRACE_FILE = "Second Simulation Trace File ";
+    private static final String XML_FILES = "XML files";
+    private static final String XML = "XML";
+    private static final String NAME_REQUIRED = "The name of the XML file is required!";
+    private MainGUI _mgui;
 
     private Vector<SimulationTransaction> transFile2;
     private SimulationTransaction st = new SimulationTransaction();
     private JTextField file2 = new JTextField();
-    private boolean panelAdded = false;
     private boolean latencyPanelAdded = false;
-    private static JPanelCompareXmlGraph newContentPane;
-
+    private static CompareSimulationTrace newContentPane;
     JPanel latencyPanel = new JPanel(new GridBagLayout());;
-    private JComboBox<String> devicesDropDownCombo1 = new JComboBox<String>();
-    private JComboBox<String> devicesDropDownCombo2 = new JComboBox<String>();
     private JComboBox<String> tracesCombo1, tracesCombo2;
-
     private Thread t, t1;
+    private InteractiveSimulationActions[] actions;
+    private JScrollPane scrollPane11;
 
     public JFrameCompareSimulationTraces(MainGUI mgui, String _title, SimulationTrace sST, boolean visible) {
-
         super(_title);
-        
-       
-
+        initActions();
         this.selectedST = sST;
-        GridLayout myLayout = new GridLayout(3, 1);
+        // GridLayout myLayout = new GridLayout(3, 1);
         _mgui = mgui;
         // this.setBackground(Color.RED);
-        this.setLayout(myLayout);
-
-        //addWindowListener(this);
+        GridBagLayout gridbagmain = new GridBagLayout();
+        Container framePanel = getContentPane();
+        framePanel.setLayout(gridbagmain);
+        mainConstraint.gridx = 0;
+        mainConstraint.gridy = 0;
+        mainConstraint.fill = GridBagConstraints.BOTH;
+        // addWindowListener(this);
         setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
-
+        close = new JButton(actions[LatencyDetailedAnalysisActions.ACT_COMPARE_CLOSE]);
+        parse = new JButton(actions[LatencyDetailedAnalysisActions.ACT_COMPARE_PARSE]);
+        difference = new JButton(actions[LatencyDetailedAnalysisActions.ACT_COMPARE_DIFF]);
+        JPanel jp = new JPanel();
+        jp.add(close);
+        jp.add(parse);
+        jp.add(difference);
+        framePanel.add(jp, mainConstraint);
         if (ConfigurationTTool.SystemCCodeDirectory.length() > 0) {
             fc = new JFileChooser(ConfigurationTTool.SystemCCodeDirectory);
         } else {
             fc = new JFileChooser();
         }
-
-        FileNameExtensionFilter filter = new FileNameExtensionFilter("XML files", "xml");
+        FileNameExtensionFilter filter = new FileNameExtensionFilter(XML_FILES, XML);
         fc.setFileFilter(filter);
-
         JPanel buttonPanel = new JPanel(new GridBagLayout());
         GridBagConstraints c = new GridBagConstraints();
         c.fill = GridBagConstraints.NORTHWEST;
-
         JTextField file1 = new JTextField();
-
-        JLabel lab1 = new JLabel("First Simulation Traces File ", JLabel.LEFT);
+        JLabel lab1 = new JLabel(FIRST_SIMULATION_TRACE_FILE, JLabel.LEFT);
         c.fill = GridBagConstraints.NORTHWEST;
         c.gridx = 0;
         c.gridy = 0;
@@ -148,9 +144,7 @@ public class JFrameCompareSimulationTraces extends JFrame implements ActionListe
         c.weighty = 1;
         c.anchor = GridBagConstraints.WEST;
         buttonPanel.add(lab1, c);
-
-        JLabel lab2 = new JLabel("Secound Simulation Traces File ", JLabel.LEFT);
-
+        JLabel lab2 = new JLabel(Second_SIMULATION_TRACE_FILE, JLabel.LEFT);
         c.fill = GridBagConstraints.NORTHWEST;
         c.gridx = 0;
         c.gridy = 1;
@@ -158,372 +152,171 @@ public class JFrameCompareSimulationTraces extends JFrame implements ActionListe
         c.weighty = 1;
         c.anchor = GridBagConstraints.WEST;
         buttonPanel.add(lab2, c);
-
         file1.setEditable(false);
         file1.setBorder(new LineBorder(Color.BLACK));
         file1.setText(selectedST.getFullPath());
-
         c.fill = GridBagConstraints.NORTHWEST;
         c.gridx = 1;
         c.gridy = 0;
         c.weightx = 2;
         c.weighty = 1;
         buttonPanel.add(file1, c);
-
         file2.setEditable(false);
         file2.setText("file 2 name");
         file2.setBorder(new LineBorder(Color.BLACK));
-
         c.fill = GridBagConstraints.NORTHWEST;
         c.gridx = 1;
         c.gridy = 1;
-        c.weightx = 1;
-        c.weighty = 1;
         buttonPanel.add(file2, c);
-
         browse = new JButton("Browse");
         browse.addActionListener(this);
         c.fill = GridBagConstraints.NORTHWEST;
-        c.gridx = 1;
-        c.gridy = 3;
+        c.gridx = 4;
+        c.gridy = 1;
         c.weightx = 1;
         c.weighty = 1;
         buttonPanel.add(browse, c);
-
-        parse = new JButton("parse");
-        parse.addActionListener(this);
-        c.fill = GridBagConstraints.NORTHWEST;
-        c.gridx = 3;
-        c.gridy = 3;
-        c.weightx = 5;
-        c.weighty = 1;
-        buttonPanel.add(parse, c);
-
-        /*latencyAnalysis = new JButton("latencyAnalysis");
-        latencyAnalysis.addActionListener(this);
-        c.fill = GridBagConstraints.NORTHWEST;
-        c.gridx = 1;
-        c.gridy = 4;
-        c.weightx = 5;
-        c.weighty = 1;
-        buttonPanel.add(latencyAnalysis, c);*/
-
-        difference = new JButton("difference");
-        difference.addActionListener(this);
-        c.fill = GridBagConstraints.NORTHWEST;
-        c.gridx = 3;
-        c.gridy = 4;
-        c.weightx = 5;
-        c.weighty = 1;
-        buttonPanel.add(difference, c);
-
-        this.add(buttonPanel);
-
+        mainConstraint.gridx = 0;
+        mainConstraint.gridy = 1;
+        this.add(buttonPanel, mainConstraint);
+        JPanel jp03 = new JPanel(new BorderLayout());
+        table11 = new JTable();
+        scrollPane11 = new JScrollPane(table11, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
+        scrollPane11.setVisible(true);
+        jp03.add(scrollPane11, BorderLayout.CENTER);
+        mainConstraint.weighty = 1.0;
+        mainConstraint.weightx = 1.0;
+        mainConstraint.gridx = 0;
+        mainConstraint.gridy = 2;
+        this.add(jp03, mainConstraint);
         this.pack();
         this.setVisible(visible);
-        JFrameTest= this;
-
+        JFrameTest = this;
     }
 
     @Override
     public void actionPerformed(ActionEvent e) {
-
+        String command = e.getActionCommand();
         if (e.getSource() == browse) {
-
-            FileNameExtensionFilter filter = new FileNameExtensionFilter("XML files", "xml");
+            FileNameExtensionFilter filter = new FileNameExtensionFilter(XML_FILES, XML);
             fc.setFileFilter(filter);
-
             int returnVal = fc.showOpenDialog(JFrameCompareSimulationTraces.this);
-
             if (returnVal == JFileChooser.APPROVE_OPTION) {
                 file = fc.getSelectedFile();
                 file2.setText(file.getPath());
-
             }
-        } else if (e.getSource() == parse) {
-
+        } else if ((command.equals(actions[LatencyDetailedAnalysisActions.ACT_COMPARE_PARSE].getActionCommand()))) {
             try {
                 parseXML(selectedST.getFullPath(), file.getPath());
                 DrawSimulationResults(transFile1, transFile2);
-
             } catch (SAXException e1) {
-
                 e1.printStackTrace();
             } catch (IOException e1) {
-
                 e1.printStackTrace();
             } catch (ParserConfigurationException e1) {
-
                 e1.printStackTrace();
             }
-
-        } else if (e.getSource() == latencyDetails) {
-            newContentPane.getTable();
-
-            new JFrameShowLatencyDetails(transFile1, transFile2, devicesDropDownCombo1.getSelectedItem(), tracesCombo1.getSelectedItem(),
-                    devicesDropDownCombo2.getSelectedItem(), tracesCombo2.getSelectedItem(), true);
-
-        } else if (e.getSource() == difference) {
-
-            newContentPane.showDifference();
-
-            this.pack();
-            this.setVisible(true);
-        } else if (e.getSource() == devicesDropDownCombo1) {
-            Vector<Object> transacationsDropDown1 = newContentPane.loadTransacationsDropDown(devicesDropDownCombo1.getSelectedItem());
-
-            final DefaultComboBoxModel<Object> model = new DefaultComboBoxModel<Object>(transacationsDropDown1);
-
-            // tracesCombo1.setModel(model);
-
-        } else if (e.getSource() == devicesDropDownCombo2) {
-            Vector<Object> transacationsDropDown2 = newContentPane.loadTransacationsDropDown(devicesDropDownCombo2.getSelectedItem());
-
-            final DefaultComboBoxModel<Object> model = new DefaultComboBoxModel<Object>(transacationsDropDown2);
-
-            // tracesCombo2.setModel(model);
-
-        } /*else if (e.getSource() == latencyAnalysis) {
-
-            t = new Thread() {
-                public void run() {
-                    try {
-                        _mgui.latencyDetailedAnalysisForXML(selectedST, true, false,1);
-                    } catch (XPathExpressionException | ParserConfigurationException | SAXException | IOException e) {
-                        // TODO Auto-generated catch block
-                        e.printStackTrace();
+        } else if (command.equals(actions[LatencyDetailedAnalysisActions.ACT_COMPARE_DIFF].getActionCommand())) {
+            int numRows = table11.getRowCount();
+            int numCols = table11.getColumnCount();
+            for (int j = 2; j < numCols; j++) {
+                for (int i = 0; i < numRows; i++) {
+                    for (int k = 0; k < numRows; k++) {
+                        if (table11.getValueAt(i, 0).equals(table11.getValueAt(k, 0))) {
+                            if (i != k && table11.getValueAt(i, j) != null && table11.getValueAt(k, j) != null
+                                    && table11.getValueAt(i, j).equals(table11.getValueAt(k, j))) {
+                                table11.setValueAt(null, k, j);
+                                table11.setValueAt(null, i, j);
+                            }
+                        }
                     }
                 }
-            };
-
-            t.start();
-
-            try {
-                t.join();
-            } catch (InterruptedException e1) {
-                // TODO Auto-generated catch block
-                e1.printStackTrace();
-            }
-
-            if (t.getState() == Thread.State.TERMINATED) {
-                dropDown1 = _mgui.getLatencyDetailedAnalysis().getCheckedTransactions();
             }
-
-            secondSelectedST = new SimulationTrace("file2", SimulationTrace.XML_DIPLO, file2.getText());
-
-            System.out.println("load drop down1: " + _mgui.getLatencyDetailedAnalysis().getCheckedTransactions().size());
-
-            t1 = new Thread() {
-                public void run() {
-                    try {
-                        _mgui.latencyDetailedAnalysisForXML(secondSelectedST, true,false,2);
-                    } catch (XPathExpressionException | ParserConfigurationException | SAXException | IOException e) {
-                        // TODO Auto-generated catch block
-                        e.printStackTrace();
-                    }
-                }
-            };
-
-            t1.start();
-
-            try {
-                t1.join();
-            } catch (InterruptedException e1) {
-                // TODO Auto-generated catch block
-                e1.printStackTrace();
-            }
-
-            if (t1.getState() == Thread.State.TERMINATED) {
-
-                dropDown2 = _mgui.getLatencyDetailedAnalysis().getCheckedTransactions();
-            }
-            System.out.println("load drop down2: " + _mgui.getLatencyDetailedAnalysis().getCheckedTransactions().size());
-
-            if (!latencyPanelAdded) {
-                DrawLatencyPanel();
-
-                latencyPanelAdded = true;
-                latencyPanel.revalidate();
-                latencyPanel.repaint();
-                latencyPanel.setVisible(true);
-                this.add(latencyPanel);
-                this.pack();
-
-            } else {
-                this.revalidate();
-                latencyPanel.revalidate();
-                latencyPanel.repaint();
-
-            }
-
-            this.revalidate();
-            this.repaint();
+            numRows = table11.getRowCount();
+            numCols = table11.getColumnCount();
+            table11.repaint();
+            table11.revalidate();
+            scrollPane11.setViewportView(table11);
+            scrollPane11.setVisible(true);
+            scrollPane11.revalidate();
+            scrollPane11.repaint();
             this.pack();
-            this.revalidate();
-            this.repaint();
-
             this.setVisible(true);
-        }*/
-
+        } else if (command.equals(actions[LatencyDetailedAnalysisActions.ACT_COMPARE_CLOSE].getActionCommand())) {
+            dispose();
+            setVisible(false);
+        }
     }
 
-    /*
-     * else if (e.getSource() == graph) {
-     * 
-     * if (ConfigurationTTool.SystemCCodeDirectory.length() > 0) { fc2 = new
-     * JFileChooser(ConfigurationTTool.SystemCCodeDirectory); } else { fc2 = new
-     * JFileChooser(); }
-     * 
-     * FileNameExtensionFilter filter = new FileNameExtensionFilter("graphml files",
-     * "graphml"); fc2.setFileFilter(filter);
-     * 
-     * int returnVal = fc2.showOpenDialog(JFrameCompareSimulationTraces.this);
-     * 
-     * if (returnVal == JFileChooser.APPROVE_OPTION) { file = fc2.getSelectedFile();
-     * // file2.setText(file.getPath());
-     * 
-     * }
-     * 
-     * FileReader ps = null; try { ps = new FileReader(file); } catch
-     * (FileNotFoundException e1) { // TODO Auto-generated catch block
-     * e1.printStackTrace(); }
-     * 
-     * VertexProvider<String> vertexProvider = (id, attributes) -> { String cv = new
-     * String(id); cv.replaceAll("\\s+", ""); cv.replaceAll("(", "");
-     * cv.replaceAll(")", ""); return cv;
-     * 
-     * };
-     * 
-     * EdgeProvider<String, DefaultEdge> edgeProvider = (from, to, label,
-     * attributes) -> new DefaultEdge();
-     * 
-     * GraphMLImporter<String, DefaultEdge> importer = new GraphMLImporter<String,
-     * DefaultEdge>(vertexProvider, edgeProvider);
-     * 
-     * try { Graph<String, DefaultEdge> importedGraph = new
-     * DefaultDirectedGraph<>(DefaultEdge.class); ;
-     * importer.importGraph(importedGraph, ps);
-     * System.out.print(importedGraph.vertexSet().size()); } catch (ImportException
-     * e1) { // TODO Auto-generated catch block e1.printStackTrace(); }
-     * 
-     * }
-     */
-
-    // }
-
     public int parseXML(String file1Path, String file2Path) throws SAXException, IOException, ParserConfigurationException {
-
         if (file1Path.length() == 0 || file2Path.length() == 0)
-            throw new RuntimeException("The name of the XML file is required!");
-
+            throw new RuntimeException(NAME_REQUIRED);
         SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
         SAXParser saxParser = saxParserFactory.newSAXParser();
         SimulationTransactionParser handler = new SimulationTransactionParser();
-
         saxParser.parse(new File(file1Path), handler);
         transFile1 = handler.getStList();
-
         handler = new SimulationTransactionParser();
-
         saxParser.parse(new File(file2Path), handler);
         transFile2 = handler.getStList();
-
         return 1;
-
     }
 
     private void DrawSimulationResults(Vector<SimulationTransaction> transFile1, Vector<SimulationTransaction> transFile2) {
-
-        if (panelAdded == true) {
-
-            newContentPane = new JPanelCompareXmlGraph(transFile1, transFile2);
-            newContentPane.setOpaque(true);
-
-            newContentPane.updateTable();
-
-        } else {
-
-            newContentPane = new JPanelCompareXmlGraph(transFile1, transFile2);
-            newContentPane.setOpaque(true);
-
-            newContentPane.drawTable();
-
-            this.add(newContentPane);
-
-            panelAdded = true;
+        newContentPane = new CompareSimulationTrace();
+        table11.setModel(newContentPane.JPanelCompareXmlGraph(transFile1, transFile2));
+        table11.setFillsViewportHeight(true);
+        table11.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+        SimulationTraceTableRenderer tr = new SimulationTraceTableRenderer();
+        int ncols = table11.getColumnCount();
+        table11.getModel().addTableModelListener(this);
+        TableColumnModel tcm = table11.getColumnModel();
+        for (int c = 0; c < ncols; c++) {
+            TableColumn tc = tcm.getColumn(c);
+            tc.setCellRenderer(tr);
         }
-
+        // newContentPane.setOpaque(true);
+        table11.repaint();
+        table11.revalidate();
+        scrollPane11.setViewportView(table11);
+        scrollPane11.setVisible(true);
+        scrollPane11.revalidate();
+        scrollPane11.repaint();
         this.pack();
         this.setVisible(true);
     }
 
-    private void DrawLatencyPanel() {
-
-        latencyPanel = new JPanel(new GridBagLayout()); // use FlowLayout
-        GridBagConstraints c = new GridBagConstraints();
-        latencyPanel.setBorder(new javax.swing.border.TitledBorder("Latency for Simulation Traces File"));
-        c.fill = GridBagConstraints.NORTHWEST;
-
-        new JTextField();
-
-        devicesDropDownCombo1 = new JComboBox<String>(dropDown1);
-
-        tracesCombo1 = new JComboBox<String>(dropDown1);
-
-        c.fill = GridBagConstraints.NORTHWEST;
-        c.gridx = 0;
-        c.gridy = 0;
-        c.weightx = 1;
-        c.weighty = 1;
-        c.anchor = GridBagConstraints.WEST;
-        latencyPanel.add(devicesDropDownCombo1, c);
-
-        c.fill = GridBagConstraints.NORTHWEST;
-        c.gridx = 0;
-        c.gridy = 1;
-        c.weightx = 1;
-        c.weighty = 1;
-        latencyPanel.add(tracesCombo1, c);
-
-        devicesDropDownCombo1.addActionListener(this);
-
-        devicesDropDownCombo2 = new JComboBox<String>(dropDown2);
-
-        tracesCombo2 = new JComboBox<String>(dropDown2);
-
-        c.fill = GridBagConstraints.NORTHWEST;
-        c.gridx = 1;
-        c.gridy = 0;
-
-        latencyPanel.add(devicesDropDownCombo2, c);
-
-        c.fill = GridBagConstraints.NORTHWEST;
-        c.gridx = 1;
-        c.gridy = 1;
-
-        latencyPanel.add(tracesCombo2, c);
-
-        devicesDropDownCombo2.addActionListener(this);
-
-        latencyDetails = new JButton("latency Details");
-        latencyDetails.addActionListener(this);
-        c.fill = GridBagConstraints.NORTHWEST;
-        c.gridx = 1;
-        c.gridy = 3;
-        c.weightx = 1;
-        c.weighty = 1;
-        latencyPanel.add(latencyDetails, c);
-        latencyPanel.setVisible(true);
-
+    private void initActions() {
+        actions = new InteractiveSimulationActions[InteractiveSimulationActions.NB_ACTION];
+        for (int i = 0; i < InteractiveSimulationActions.NB_ACTION; i++) {
+            actions[i] = new InteractiveSimulationActions(i);
+            actions[i].addActionListener(this);
+            // actions[i].addKeyListener(this);
+        }
     }
 
-
-
     public void close() {
-
         dispose();
         setVisible(false);
+    }
+
+    @Override
+    public void tableChanged(TableModelEvent e) {
+    }
 
+    public Vector<SimulationTransaction> getTransFile1() {
+        return transFile1;
     }
 
+    public void setTransFile1(Vector<SimulationTransaction> transFile1) {
+        this.transFile1 = transFile1;
+    }
+
+    public Vector<SimulationTransaction> getTransFile2() {
+        return transFile2;
+    }
+
+    public void setTransFile2(Vector<SimulationTransaction> transFile2) {
+        this.transFile2 = transFile2;
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/ui/simulationtraceanalysis/LatencyAnalysisParallelAlgorithms.java b/src/main/java/ui/simulationtraceanalysis/LatencyAnalysisParallelAlgorithms.java
index a2af5cf6a6790592767f8dd979c9c574564b3200..0b7095ff491aa353c2d96fe6e82c38a661e58993 100644
--- a/src/main/java/ui/simulationtraceanalysis/LatencyAnalysisParallelAlgorithms.java
+++ b/src/main/java/ui/simulationtraceanalysis/LatencyAnalysisParallelAlgorithms.java
@@ -25,7 +25,7 @@ public class LatencyAnalysisParallelAlgorithms implements Runnable {
     private DependencyGraphTranslator dgraph, dgraph1, dgraph2;
     private int row, row1, row2, row3, row4, selectedIndex;
     private Object[][] dataDetailedByTask, dataDetailedByTask2;
-    private latencyDetailedAnalysisMain main;
+    private LatencyDetailedAnalysisMain main;
     private MainGUI mainGUI;
     private SimulationTrace selectedST;
     private boolean b;
@@ -35,8 +35,8 @@ public class LatencyAnalysisParallelAlgorithms implements Runnable {
     private Vector<SimulationTransaction> transFile1, transFile2;
     private String task1, task2, task3, task4;
 
-    public LatencyAnalysisParallelAlgorithms(latencyDetailedAnalysisMain latencyDetailedAnalysisMain) {
-        main = latencyDetailedAnalysisMain;
+    public LatencyAnalysisParallelAlgorithms(LatencyDetailedAnalysisMain LatencyDetailedAnalysisMain) {
+        main = LatencyDetailedAnalysisMain;
     }
 
     public void run() {