diff --git a/prism/src/userinterface/simulator/GUISimulator.java b/prism/src/userinterface/simulator/GUISimulator.java index 3efbccd4..fc81af25 100644 --- a/prism/src/userinterface/simulator/GUISimulator.java +++ b/prism/src/userinterface/simulator/GUISimulator.java @@ -2700,8 +2700,36 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect if (view.showTime() || view.showCumulativeTime()) { groupCount++; } - if (view.getVisibleVariables().size() > 0) - { groupCount++; } + ArrayList vars = view.getVisibleVariables(); + Set varNames = new HashSet(); + + for (Object var : vars) + { + Variable variable = (Variable)var; + varNames.add(variable.getName()); + } + + for (int g = 0; g < parsedModel.getNumGlobals(); g++) + { + if (varNames.contains(parsedModel.getGlobal(g).getName())) + { + groupCount++; + break; + } + } + + for (int m = 0; m < parsedModel.getNumModules(); m++) + { + Module module = parsedModel.getModule(m); + for (int v = 0; v < module.getNumDeclarations(); v++) + { + if (varNames.contains(module.getDeclaration(v).getName())) + { + groupCount++; + break; + } + } + } if (view.getVisibleRewardColumns().size() > 0) { groupCount++; } @@ -2734,7 +2762,7 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect if (view.showSteps()) { if (groupCount == groupIndex) - { return "Step"; } + { return "[ Step ]"; } groupCount++; } @@ -2742,24 +2770,56 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect if (view.showTime() || view.showCumulativeTime()) { if (groupCount == groupIndex) - { return "Time"; } + { return "[ Time ]"; } groupCount++; } if (view.getVisibleVariables().size() > 0) - { - if (groupCount == groupIndex) - { return "Variables"; } + { + ArrayList vars = view.getVisibleVariables(); + Set varNames = new HashSet(); - groupCount++; + for (Object var : vars) + { + Variable variable = (Variable)var; + varNames.add(variable.getName()); + } + + for (int g = 0; g < parsedModel.getNumGlobals(); g++) + { + if (varNames.contains(parsedModel.getGlobal(g).getName())) + { + if (groupCount == groupIndex) + { return "globals"; } + + groupCount++; + break; + } + } + + for (int m = 0; m < parsedModel.getNumModules(); m++) + { + Module module = parsedModel.getModule(m); + for (int v = 0; v < module.getNumDeclarations(); v++) + { + if (varNames.contains(module.getDeclaration(v).getName())) + { + if (groupCount == groupIndex) + { return "" + parsedModel.getModuleName(m) + ""; } + + groupCount++; + break; + } + } + } } // Add state and transitions rewards for each reward structure. if (view.getVisibleRewardColumns().size() > 0) { if (groupCount == groupIndex) - { return "Rewards"; } + { return "[ Rewards ]"; } groupCount++; } @@ -2840,10 +2900,65 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect if (view.getVisibleVariables().size() > 0) { - if (groupCount == groupIndex) - { return varStart + view.getVisibleVariables().size() -1; } + int visVarCount = 0; - groupCount++; + ArrayList vars = view.getVisibleVariables(); + Set varNames = new HashSet(); + + for (Object var : vars) + { + Variable variable = (Variable)var; + varNames.add(variable.getName()); + } + + boolean atLeastOneGlobal = false; + + for (int g = 0; g < parsedModel.getNumGlobals(); g++) + { + boolean contained = varNames.contains(parsedModel.getGlobal(g).getName()); + + if (!atLeastOneGlobal && contained) + { + atLeastOneGlobal = true; + } + + if (contained) + visVarCount++; + } + + if (atLeastOneGlobal && groupCount == groupIndex) + { return varStart + visVarCount -1; } + + if (atLeastOneGlobal) + { + groupCount++; + } + + for (int m = 0; m < parsedModel.getNumModules(); m++) + { + Module module = parsedModel.getModule(m); + boolean atLeastOne = false; + + for (int v = 0; v < module.getNumDeclarations(); v++) + { + boolean contained = varNames.contains(module.getDeclaration(v).getName()); + if (!atLeastOne && contained) + { + atLeastOne = true; + } + + if (contained) + visVarCount++; + } + + if (atLeastOne && groupCount == groupIndex) + { return varStart + visVarCount -1; } + + if (atLeastOne) + { + groupCount++; + } + } } // Add state and transitions rewards for each reward structure.