From cfeb5b92b21c9805be798d15d705a3db64d0bfe7 Mon Sep 17 00:00:00 2001 From: Le Van Truong <le.truong@telecom-paris.fr> Date: Thu, 12 Mar 2020 10:46:19 +0100 Subject: [PATCH] Add Remove transaction button --- .../FormalVerificationToolBar.java | 4 ++ .../InteractiveSimulationActions.java | 4 +- .../JFrameInteractiveSimulation.java | 57 +++++++++++++++++++ .../JPanelTaskTransactions.java | 28 +++++---- .../JPanelTransactions.java | 6 ++ .../MainCommandsToolBar.java | 6 +- .../TransactionTableModel.java | 12 ++-- src/main/java/ui/tmldd/TMLArchiCPUNode.java | 16 +++++- 8 files changed, 114 insertions(+), 19 deletions(-) diff --git a/src/main/java/ui/interactivesimulation/FormalVerificationToolBar.java b/src/main/java/ui/interactivesimulation/FormalVerificationToolBar.java index f9e99c078e..325e5f381a 100755 --- a/src/main/java/ui/interactivesimulation/FormalVerificationToolBar.java +++ b/src/main/java/ui/interactivesimulation/FormalVerificationToolBar.java @@ -66,6 +66,7 @@ public class FormalVerificationToolBar extends InteractiveSimulationBar { jfis.actions[InteractiveSimulationActions.ACT_RUN_EXPLORATION].setEnabled(b); jfis.actions[InteractiveSimulationActions.ACT_ANALYSIS_RG].setEnabled(b); jfis.actions[InteractiveSimulationActions.ACT_VIEW_RG].setEnabled(b); + jfis.actions[InteractiveSimulationActions.ACT_REMOVE_ALL_TRANS].setEnabled(b); } protected void setButtons() { @@ -74,6 +75,9 @@ public class FormalVerificationToolBar extends InteractiveSimulationBar { button = this.add(jfis.actions[InteractiveSimulationActions.ACT_RESET_SIMU]); button.addMouseListener(jfis.mouseHandler); + button = this.add(jfis.actions[InteractiveSimulationActions.ACT_REMOVE_ALL_TRANS]); + button.addMouseListener(jfis.mouseHandler); + this.addSeparator(); button = this.add(jfis.actions[InteractiveSimulationActions.ACT_STOP_SIMU]); diff --git a/src/main/java/ui/interactivesimulation/InteractiveSimulationActions.java b/src/main/java/ui/interactivesimulation/InteractiveSimulationActions.java index 753e691fc2..a8f1487f8e 100755 --- a/src/main/java/ui/interactivesimulation/InteractiveSimulationActions.java +++ b/src/main/java/ui/interactivesimulation/InteractiveSimulationActions.java @@ -111,7 +111,8 @@ public class InteractiveSimulationActions extends AbstractAction { public static final int ACT_SAVE_SD_SVG = 38; public static final int ACT_SAVE_SD_PNG = 39; - public static final int NB_ACTION = 41; + public static final int ACT_REMOVE_ALL_TRANS = 41; + public static final int NB_ACTION = 42; private static final TAction [] actions = new TAction[NB_ACTION]; @@ -158,6 +159,7 @@ public class InteractiveSimulationActions extends AbstractAction { actions[ACT_RUN_TO_TIME] = new TAction("run-to-time", "Run to time x", IconManager.imgic1304, IconManager.imgic1304, "Run to time x", "Run simulation until time x is reached. Works only if the simulator is \"ready\"", 'R'); actions[ACT_RUN_X_TRANSACTIONS] = new TAction("run-x-transactions", "Run x transactions", IconManager.imgic1306, IconManager.imgic1306, "Run x transactions", "Run simulation for x transactions. Works only if the simulator is \"ready\"", 'R'); actions[ACT_RUN_X_COMMANDS] = new TAction("run-x-commands", "Run x commands", IconManager.imgic1308, IconManager.imgic1308, "Run x commands", "Run simulation for x commands. Works only if the simulator is \"ready\"", 'R'); + actions[ACT_REMOVE_ALL_TRANS] = new TAction("remove-all-trans","Remove all transactions",IconManager.imgic337, IconManager.imgic337,"Remove all transactions", "Remove all the transactions stored before", 'R'); actions[ACT_RUN_EXPLORATION] = new TAction("run-exploration", "Run exploration", IconManager.imgic1326, IconManager.imgic1326, "Run exploration", "Explore branches of the simulation", 'R'); actions[ACT_RUN_TO_NEXT_BUS_TRANSFER] = new TAction("run-until-bus-transfer", "Run until bus transfer", IconManager.imgic1316, IconManager.imgic1316, "Run until transfer on bus", "Run until a transfer on the indicated bus is performed. Works only if the simulator is \"ready\"", 'R'); diff --git a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java index 6867d4ab52..de314c73b8 100644 --- a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java +++ b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java @@ -53,6 +53,8 @@ import remotesimulation.RemoteConnection; import remotesimulation.RemoteConnectionException; import tmltranslator.*; import ui.*; +import ui.tmldd.TMLArchiCPUNode; +import ui.tmldd.TMLArchiDiagramPanel; import ui.window.JDialogSelectTasks; import ui.util.IconManager; @@ -2346,6 +2348,31 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene if (latencyPanel !=null){ processLatency(); } + for(TURTLEPanel _tab : mgui.getTabs()) { + if(_tab instanceof TMLArchiPanel) { + for (TDiagramPanel tdp : _tab.getPanels()) { + if (tdp instanceof TMLArchiDiagramPanel) { + mgui.selectTab(tdp); + for (TGComponent tg : tdp.getComponentList()) { + if (tg instanceof TMLArchiCPUNode) { + Vector <SimulationTransaction> _trans = new Vector<SimulationTransaction>(); + TMLArchiCPUNode tmpcpu = (TMLArchiCPUNode) tg; + for (int i = 0; i < trans.size(); i++) { + String temp = trans.get(i).deviceName; + temp = temp.substring(0, temp.indexOf("_")); + if (tg.getName().equals(temp)) { + _trans.add(trans.elementAt(i)); + } + } + tmpcpu.transferList(_trans); + } + } + break; + } + } + break; + } + } //ttm.setData(trans); } } catch (Exception e) { @@ -2559,6 +2586,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene actions[InteractiveSimulationActions.ACT_RESET_SIMU].setEnabled(b); actions[InteractiveSimulationActions.ACT_STOP_SIMU].setEnabled(b); actions[InteractiveSimulationActions.ACT_RUN_EXPLORATION].setEnabled(b); + actions[InteractiveSimulationActions.ACT_REMOVE_ALL_TRANS].setEnabled(b); if (jpsv != null) { jpsv.setVariableButton(b); @@ -3451,6 +3479,35 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene transTimes=new HashMap<String, List<String>>(); processLatency(); askForUpdate(); + } else if (command.equals(actions[InteractiveSimulationActions.ACT_REMOVE_ALL_TRANS].getActionCommand())) { + sendCommand("rmat 1"); + updateTransactions(); + + if(taskTransactionPanel != null) { + taskTransactionPanel.resetTable(); + } + if(taskTransactionPanel != null) { + transactionPanel.resetTable(); + } + + for(TURTLEPanel _tab : mgui.getTabs()) { + if(_tab instanceof TMLArchiPanel) { + for (TDiagramPanel tdp : _tab.getPanels()) { + if (tdp instanceof TMLArchiDiagramPanel) { + mgui.selectTab(tdp); + for (TGComponent tg : tdp.getComponentList()) { + if (tg instanceof TMLArchiCPUNode) { + TMLArchiCPUNode tmpcpu = (TMLArchiCPUNode) tg; + tmpcpu.resetTransactionsList(); + } + } + break; + } + } + break; + } + } + } else if (command.equals(actions[InteractiveSimulationActions.ACT_STOP_SIMU].getActionCommand())) { sendCommand("stop"); } else if (command.equals(actions[InteractiveSimulationActions.ACT_UPDATE_VARIABLES].getActionCommand())) { diff --git a/src/main/java/ui/interactivesimulation/JPanelTaskTransactions.java b/src/main/java/ui/interactivesimulation/JPanelTaskTransactions.java index 8a64791598..3752218e5d 100644 --- a/src/main/java/ui/interactivesimulation/JPanelTaskTransactions.java +++ b/src/main/java/ui/interactivesimulation/JPanelTaskTransactions.java @@ -98,15 +98,15 @@ public class JPanelTaskTransactions extends JPanel { add(tasks, c2); updateTransactionInformationButton = new JButton(jfis.actions[InteractiveSimulationActions.ACT_UPDATE_TRANSACTIONS]); add(updateTransactionInformationButton, c2); - clearAllOldTransactions = new JButton(); - clearAllOldTransactions.setText("Clear all old transactions"); - clearAllOldTransactions.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent actionEvent) { - jfis.sendCommand("rmat 1"); - } - }); - add(clearAllOldTransactions, c2); +// clearAllOldTransactions = new JButton(); +// clearAllOldTransactions.setText("Clear all old transactions"); +// clearAllOldTransactions.addActionListener(new ActionListener() { +// @Override +// public void actionPerformed(ActionEvent actionEvent) { +// jfis.sendCommand("rmat 1"); +// } +// }); +// add(clearAllOldTransactions, c2); tasks.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { @@ -133,6 +133,12 @@ public class JPanelTaskTransactions extends JPanel { return ttm; } + public void resetTable() { + if (ttm != null) { + ttm.setData(_trans,"----"); + } + } + public int getNbOfTransactions() { try { @@ -147,7 +153,9 @@ public class JPanelTaskTransactions extends JPanel { public void setData(Vector<SimulationTransaction> _trans) { - this._trans = _trans; + this._trans = _trans; + ttm.setData(_trans,tasks.getSelectedItem().toString()); + } } diff --git a/src/main/java/ui/interactivesimulation/JPanelTransactions.java b/src/main/java/ui/interactivesimulation/JPanelTransactions.java index b09a920c92..b344b60162 100755 --- a/src/main/java/ui/interactivesimulation/JPanelTransactions.java +++ b/src/main/java/ui/interactivesimulation/JPanelTransactions.java @@ -143,6 +143,12 @@ public class JPanelTransactions extends JPanel { return ttm; } + public void resetTable() { + if (ttm != null) { + ttm.setData(null); + } + } + public int getNbOfTransactions() { try { diff --git a/src/main/java/ui/interactivesimulation/MainCommandsToolBar.java b/src/main/java/ui/interactivesimulation/MainCommandsToolBar.java index cf7f616bc4..1ee63bf1e3 100755 --- a/src/main/java/ui/interactivesimulation/MainCommandsToolBar.java +++ b/src/main/java/ui/interactivesimulation/MainCommandsToolBar.java @@ -74,6 +74,7 @@ public class MainCommandsToolBar extends InteractiveSimulationBar { jfis.actions[InteractiveSimulationActions.ACT_RUN_UNTIL_CHANNEL_ACCESS].setEnabled(b); jfis.actions[InteractiveSimulationActions.ACT_STOP_SIMU].setEnabled(b); jfis.actions[InteractiveSimulationActions.ACT_RESET_SIMU].setEnabled(b); + jfis.actions[InteractiveSimulationActions.ACT_REMOVE_ALL_TRANS].setEnabled(b); } protected void setButtons() { @@ -81,7 +82,10 @@ public class MainCommandsToolBar extends InteractiveSimulationBar { button = this.add(jfis.actions[InteractiveSimulationActions.ACT_RESET_SIMU]); button.addMouseListener(jfis.mouseHandler); - + + button = this.add(jfis.actions[InteractiveSimulationActions.ACT_REMOVE_ALL_TRANS]); + button.addMouseListener(jfis.mouseHandler); + this.addSeparator(); button = this.add(jfis.actions[InteractiveSimulationActions.ACT_STOP_SIMU]); diff --git a/src/main/java/ui/interactivesimulation/TransactionTableModel.java b/src/main/java/ui/interactivesimulation/TransactionTableModel.java index 64205a920c..f9803392ee 100755 --- a/src/main/java/ui/interactivesimulation/TransactionTableModel.java +++ b/src/main/java/ui/interactivesimulation/TransactionTableModel.java @@ -126,11 +126,13 @@ public class TransactionTableModel extends AbstractTableModel { } public synchronized void setData(Vector<SimulationTransaction> _trans) { - data = new SimulationTransaction[_trans.size()]; - for(int i=0; i<_trans.size(); i++) { - data[i] = _trans.get(i); - } - fireTableStructureChanged(); + if(_trans != null){ + data = new SimulationTransaction[_trans.size()]; + for(int i=0; i<_trans.size(); i++) { + data[i] = _trans.get(i); + } + fireTableStructureChanged(); + } } } diff --git a/src/main/java/ui/tmldd/TMLArchiCPUNode.java b/src/main/java/ui/tmldd/TMLArchiCPUNode.java index 20bc76b997..d7232cdf84 100755 --- a/src/main/java/ui/tmldd/TMLArchiCPUNode.java +++ b/src/main/java/ui/tmldd/TMLArchiCPUNode.java @@ -45,11 +45,14 @@ import org.w3c.dom.NodeList; import tmltranslator.HwCPU; import tmltranslator.modelcompiler.ArchUnitMEC; import ui.*; +import ui.interactivesimulation.SimulationTransaction; import ui.util.IconManager; import ui.window.JDialogCPUNode; import javax.swing.*; import java.awt.*; +import java.util.ArrayList; +import java.util.List; import java.util.Vector; /** @@ -83,6 +86,7 @@ public class TMLArchiCPUNode extends TMLArchiNode implements SwallowTGComponent, private int cacheMiss = HwCPU.DEFAULT_CACHE_MISS; private int encryption = HwCPU.ENCRYPTION_NONE; private String operation = ""; + private List<SimulationTransaction> transactionsTemp; public TMLArchiCPUNode(int _x, int _y, int _minX, int _maxX, int _minY, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp) { super(_x, _y, _minX, _maxX, _minY, _maxY, _pos, _father, _tdp); @@ -195,6 +199,15 @@ public class TMLArchiCPUNode extends TMLArchiNode implements SwallowTGComponent, } + public void resetTransactionsList() { + if(transactionsTemp != null) + transactionsTemp.removeAll(transactionsTemp); + } + + public void transferList(Vector <SimulationTransaction> _trans) { + transactionsTemp = new ArrayList<SimulationTransaction>(_trans); + } + public String getNodeName() { return name; } @@ -205,8 +218,7 @@ public class TMLArchiCPUNode extends TMLArchiNode implements SwallowTGComponent, String errors = ""; int tmp; String tmpName; - - JDialogCPUNode dialog = new JDialogCPUNode(getTDiagramPanel().getMainGUI(), frame, "Setting CPU attributes", this, MECType, transactions); + JDialogCPUNode dialog = new JDialogCPUNode(getTDiagramPanel().getMainGUI(), frame, "Setting CPU attributes", this, MECType, transactionsTemp); dialog.setSize(500, 450); GraphicLib.centerOnParent(dialog, 500, 450); // dialog.show(); // blocked until dialog has been closed -- GitLab