diff --git a/src/main/java/avatartranslator/AvatarBlock.java b/src/main/java/avatartranslator/AvatarBlock.java index 58c022392b7f233bad0b25d68b7c8219068692a1..b159cc322356be4a354bedf4374b634ae6872058 100644 --- a/src/main/java/avatartranslator/AvatarBlock.java +++ b/src/main/java/avatartranslator/AvatarBlock.java @@ -232,6 +232,14 @@ public class AvatarBlock extends AvatarElement implements AvatarStateMachineOwne return attributes.get(_index); } + public boolean setAttributeValue(int _index, String _value) { + AvatarAttribute aa = attributes.get(_index); + if (aa == null) { + return false; + } + aa.setInitialValue(_value); + return true; + } public int getIndexOfAvatarAttributeWithName(String _name) { int cpt = 0; diff --git a/src/main/java/avatartranslator/directsimulation/AvatarSimulationBlock.java b/src/main/java/avatartranslator/directsimulation/AvatarSimulationBlock.java index c5c5564faf23285ed974b40e7a0868ba1db67752..453287db787ec8025fc88510eb9f9f90dc2336f2 100644 --- a/src/main/java/avatartranslator/directsimulation/AvatarSimulationBlock.java +++ b/src/main/java/avatartranslator/directsimulation/AvatarSimulationBlock.java @@ -135,6 +135,15 @@ public class AvatarSimulationBlock { return lastTransaction.attributeValues.get(_index); } + public boolean setAttributeValue(int _index, String _value) { + if (lastTransaction == null) { + return block.setAttributeValue(_index, _value); + } + + + return lastTransaction.setAttributeValue(_index, _value); + } + public Vector<AvatarSimulationTransaction> getTransactions() { return transactions; } diff --git a/src/main/java/avatartranslator/directsimulation/AvatarSimulationTransaction.java b/src/main/java/avatartranslator/directsimulation/AvatarSimulationTransaction.java index f806ac5dc4286c9f7b256a57c174efedb90bc0ca..38b52722c0916277adadb4c6c7681a6522f8d94e 100644 --- a/src/main/java/avatartranslator/directsimulation/AvatarSimulationTransaction.java +++ b/src/main/java/avatartranslator/directsimulation/AvatarSimulationTransaction.java @@ -169,4 +169,13 @@ public class AvatarSimulationTransaction { } return res; } + + public boolean setAttributeValue(int _index, String _value) { + if (_index >= attributeValues.size()) { + return false; + } + attributeValues.set(_index, _value); + return true; + + } } diff --git a/src/main/java/avatartranslator/directsimulation/AvatarSpecificationSimulation.java b/src/main/java/avatartranslator/directsimulation/AvatarSpecificationSimulation.java index ead12d0a8bacbbb664e4ef73d620160be721638e..6f45749f49355327c61b2517ad2395594007f234 100644 --- a/src/main/java/avatartranslator/directsimulation/AvatarSpecificationSimulation.java +++ b/src/main/java/avatartranslator/directsimulation/AvatarSpecificationSimulation.java @@ -98,12 +98,12 @@ public class AvatarSpecificationSimulation { private boolean executeStateEntering; private boolean silentTransactionExecuted; - private IntExpressionEvaluator iee; + //private IntExpressionEvaluator iee; public AvatarSpecificationSimulation(AvatarSpecification _avspec, AvatarSimulationInteraction _asi) { avspec = _avspec; asi = _asi; - iee = new IntExpressionEvaluator(); + //iee = new IntExpressionEvaluator(); executeEmptyTransition = true; executeStateEntering = true; diff --git a/src/main/java/tmltranslator/TMLArchitecture.java b/src/main/java/tmltranslator/TMLArchitecture.java index 466aef7eeeb565a55185fe755e2f431048fb8a76..1804f6ee9b422b143a58ae9d9243528384312abf 100755 --- a/src/main/java/tmltranslator/TMLArchitecture.java +++ b/src/main/java/tmltranslator/TMLArchitecture.java @@ -260,7 +260,7 @@ public class TMLArchitecture { } return cpt; } - + public int getNbOfMem() { int cpt = 0; diff --git a/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java b/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java index 08b1adc069e68dd827f39e49f2c3404bacfd4929..26b722873b67a8974fd87d667edaa0577616aa49 100755 --- a/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java +++ b/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java @@ -42,10 +42,7 @@ package ui.avatarinteractivesimulation; import avatartranslator.*; import avatartranslator.directsimulation.*; import common.ConfigurationTTool; -import myutil.FileUtils; -import myutil.GraphicLib; -import myutil.TableSorter; -import myutil.TraceManager; +import myutil.*; import myutilsvg.SVGGeneration; import ui.*; import ui.avatarbd.AvatarBDPortConnector; @@ -811,12 +808,12 @@ public class JFrameAvatarInteractiveSimulation extends JFrame implements AvatarS JTablejtablePIV.clearSelection(); } - int selectedRow = JTablejtablePIV.getSelectedRow(); + selectedRow = JTablejtablePIV.getSelectedRow(); if (selectedRow < 0) return; if (e.getComponent() instanceof JTable) { - TraceManager.addDev("Popup at x=" + e.getX() + " y=" + e.getY()); + TraceManager.addDev("Popup at x=" + e.getX() + " y=" + e.getY() + " row=" + selectedRow); JPopupMenu popup = createVariablePopup(); popup.show(e.getComponent(), e.getX(), e.getY()); } @@ -2164,6 +2161,7 @@ public class JFrameAvatarInteractiveSimulation extends JFrame implements AvatarS downAsyncMsg(); } else if (evt.getSource() == edit) { TraceManager.addDev("Edit variable at index: " + selectedRow); + editVariableValue(selectedRow); } // Check for source of jcheckbox @@ -2288,6 +2286,52 @@ public class JFrameAvatarInteractiveSimulation extends JFrame implements AvatarS return menu; } + + private void editVariableValue(int rowIndex) { + // Show dialog + String variableValue = (String)(variabletm.getValueAt(rowIndex, 3)); + String blockName = (String)(variabletm.getValueAt(rowIndex, 0)); + String variableName = (String)(variabletm.getValueAt(rowIndex, 2)); + String type = ((String)(variabletm.getValueAt(rowIndex, 1))).toLowerCase(); + String s = (String)JOptionPane.showInputDialog(this, "Block: " + blockName + ". Value of " + variableName, + "Variable modification", JOptionPane.PLAIN_MESSAGE, IconManager.imgic101, + null, + variableValue); + s = s.trim(); + + boolean ret; + + try { + // Verifie the value is correct + if (type.startsWith("int")) { + int value = Integer.parseInt(s); + } else { + // We assume this is a boolean + boolean b = Boolean.parseBoolean(s); + } + + ret = variabletm.setAttributeValueByRow(rowIndex, s); + variablePanel.repaint(); + + } catch (Exception e) { + // Not a correct value: show an error + TraceManager.addDev("Error in new variable value:" + e.getMessage()); + ret = false; + } + + if (!ret) { + // Show error on value change + JOptionPane.showMessageDialog(this, + "Could not change the value of " + variableName + ": the new value is incorrect", + "Error", + JOptionPane.INFORMATION_MESSAGE); + + } + + + } + + public void windowClosing(WindowEvent e) { TraceManager.addDev("Windows closed!"); close(); diff --git a/src/main/java/ui/avatarinteractivesimulation/VariableTableModel.java b/src/main/java/ui/avatarinteractivesimulation/VariableTableModel.java index 66b7a0624d80690d12bb4ce1e4819fe3c9f84431..713411a16922a1b09a3dac7ff54895da3b15e611 100755 --- a/src/main/java/ui/avatarinteractivesimulation/VariableTableModel.java +++ b/src/main/java/ui/avatarinteractivesimulation/VariableTableModel.java @@ -169,6 +169,27 @@ public class VariableTableModel extends AbstractTableModel { return ERROR_STRING; } + + public boolean setAttributeValueByRow(int _row, String _value) { + int indexBlock = 0; + Vector<AvatarSimulationBlock> blocks = ass.getSimulationBlocks(); + if (blocks.size() == 0) { + return false; + } + + + AvatarSimulationBlock block; + while(_row >= 0) { + block = blocks.get(indexBlock); + if (_row < block.getBlock().attributeNb()) { + return block.setAttributeValue(_row, _value); + } + _row = _row - block.getBlock().attributeNb(); + indexBlock ++; + } + + return false; + } // Assumes tmlm != null private String getBlockName(int row) { @@ -195,26 +216,7 @@ public class VariableTableModel extends AbstractTableModel { private String getVariableValue(int row) { return getAttributeValueByRow(row); } - - public String getBlockStatus(int row) { - int status = ass.getSimulationBlocks().get(row).getStatus(); - - switch(status) { - case AvatarSimulationBlock.NOT_STARTED: - return "not started"; - case AvatarSimulationBlock.STARTED: - return "running"; - case AvatarSimulationBlock.COMPLETED: - return "terminated"; - } - return "unknown"; - - } - - public String getBlockNbOfTransactions(int row) { - return ""+ ass.getSimulationBlocks().get(row).getTransactions().size(); - } - + private void computeData() { nbOfRows = 0; if (ass == null) {