diff --git a/src/avatartranslator/AvatarBlock.java b/src/avatartranslator/AvatarBlock.java index d5e2f79045a93cbfa07589bbd695bf23bf6b9721..06b58536bec08a190052e05886f5cfc7873ff19f 100644 --- a/src/avatartranslator/AvatarBlock.java +++ b/src/avatartranslator/AvatarBlock.java @@ -179,6 +179,14 @@ public class AvatarBlock extends AvatarElement { return attributes.size(); } + public int stateNb() { + return asm.stateNb(); + } + + public AvatarState getState(int index) { + return asm.getState(index); + } + public void putAllTimers(ArrayList<AvatarAttribute> timers) { for(AvatarAttribute attribute: attributes) { if (attribute.getType() == AvatarType.TIMER) { @@ -429,8 +437,8 @@ public class AvatarBlock extends AvatarElement { } } - value = new AvatarAttribute("__timerValue", AvatarType.INTEGER, this, getReferenceObject()); - addAttribute(value); + value = new AvatarAttribute("__timerValue", AvatarType.INTEGER, this, getReferenceObject()); + addAttribute(value); // Modify the state machine if (asm.removeTimers(this, "__timerValue")) { diff --git a/src/avatartranslator/AvatarStateMachine.java b/src/avatartranslator/AvatarStateMachine.java index 8cbdd568f27621d597610be41620fced1a73056a..eeae2aabaed23039c7d2fc76948733745b781ec5 100644 --- a/src/avatartranslator/AvatarStateMachine.java +++ b/src/avatartranslator/AvatarStateMachine.java @@ -58,6 +58,8 @@ public class AvatarStateMachine extends AvatarElement { private static int ID_ELT = 0; + protected LinkedList<AvatarStateMachineElement> states; + public AvatarStateMachine(String _name, Object _referenceObject) { super(_name, _referenceObject); @@ -74,16 +76,47 @@ public class AvatarStateMachine extends AvatarElement { public void addElement(AvatarStateMachineElement _element) { elements.add(_element); + states = null; } public void removeElement(AvatarStateMachineElement _element) { elements.remove(_element); + states = null; } public LinkedList<AvatarStateMachineElement> getListOfElements() { return elements; } + private void makeStates() { + states = new LinkedList<AvatarStateMachineElement>(); + for(AvatarStateMachineElement asme: elements) { + if (asme instanceof AvatarState) { + states.add(asme); + } + } + } + + public int stateNb() { + if (states == null) { + makeStates(); + } + + return states.size(); + } + + public AvatarState getState(int index) { + if (states == null) { + makeStates(); + } + + try { + return (AvatarState)(states.get(index)); + } catch (Exception e) { + } + return null; + } + private int getSimplifiedElementsAux (HashMap<AvatarStateMachineElement, Integer> simplifiedElements, HashSet<AvatarStateMachineElement> visited, AvatarStateMachineElement root, int counter) { if (visited.contains (root)) { Integer name = simplifiedElements.get (root); diff --git a/src/ui/TGComponent.java b/src/ui/TGComponent.java index 035c0b8656b00fb7b2004c976b28ac3602721b31..b144c5d353c76388bf55e3dea4536c8a62df9450 100755 --- a/src/ui/TGComponent.java +++ b/src/ui/TGComponent.java @@ -653,6 +653,10 @@ public abstract class TGComponent implements CDElement, GenericTree { AVATAR_met = _metNb; } + public int getAVATARMet() { + return AVATAR_met; + } + public void setInternalAvatarMet(int _metNb) { for(int i=0; i<nbInternalTGComponent; i++) { tgcomponent[i].setAVATARMet(_metNb); diff --git a/src/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java b/src/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java index a1c74ab8674c8d6830704a9190d19163ce8910e7..8f63f5d31891ff10c44f1effa7f9f62b954da03c 100755 --- a/src/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java +++ b/src/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java @@ -151,6 +151,12 @@ public class JFrameAvatarInteractiveSimulation extends JFrame implements Avatar private TransactionTableModel transactiontm; private JScrollPane jspTransactionInfo; + // Met elements + private JPanel metElementsPanel; + private MetElementsTableModel metelementstm; + private JScrollPane jspMetElementsInfo; + + // DisplayedBlocks private JPanel displayedBlockPanel; private JScrollPane jspDisplayedBlocks; @@ -767,6 +773,26 @@ public class JFrameAvatarInteractiveSimulation extends JFrame implements Avatar transactionPanel.add(jspTransactionInfo, BorderLayout.CENTER); + // Met elements + metElementsPanel = new JPanel(); + metElementsPanel.setLayout(new BorderLayout()); + infoTab.addTab("Met states", IconManager.imgic1202, metElementsPanel, "Met states"); + metelementstm = new MetElementsTableModel(ass); + + sorterPI = new TableSorter(metelementstm); + jtablePI = new JTable(sorterPI); + sorterPI.setTableHeader(jtablePI.getTableHeader()); + ((jtablePI.getColumnModel()).getColumn(0)).setPreferredWidth(100); + ((jtablePI.getColumnModel()).getColumn(1)).setPreferredWidth(100); + ((jtablePI.getColumnModel()).getColumn(2)).setPreferredWidth(100); + jtablePI.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + jspMetElementsInfo = new JScrollPane(jtablePI); + jspMetElementsInfo.setWheelScrollingEnabled(true); + jspMetElementsInfo.getVerticalScrollBar().setUnitIncrement(10); + jspMetElementsInfo.setPreferredSize(new Dimension(250, 300)); + metElementsPanel.add(jspMetElementsInfo, BorderLayout.CENTER); + + // Displayed blocks displayedBlockPanel = new JPanel(); displayedBlockPanel.setLayout(new GridBagLayout()); @@ -1237,6 +1263,7 @@ public class JFrameAvatarInteractiveSimulation extends JFrame implements Avatar tgc = (TGComponent)oo; //TraceManager.addDev("TGComponent: " + tgc); tgc.setAVATARMet(hashOfAllElements.get(o).intValue()); + } }