|
|
|
@ -35,6 +35,7 @@ import java.util.TreeSet; |
|
|
|
import parser.ast.ModulesFile; |
|
|
|
import parser.ast.RewardStruct; |
|
|
|
import parser.type.Type; |
|
|
|
import prism.PrismException; |
|
|
|
import prism.PrismSettings; |
|
|
|
import userinterface.simulator.GUIViewDialog.RewardListItem; |
|
|
|
|
|
|
|
@ -48,6 +49,8 @@ public class SimulationView extends Observable |
|
|
|
private ArrayList<Variable> visibleVariables; |
|
|
|
private ArrayList<Variable> hiddenVariables; |
|
|
|
|
|
|
|
private ArrayList<Observ> visibleObservables; |
|
|
|
|
|
|
|
private ArrayList<RewardStructureColumn> visibleRewardColumns; |
|
|
|
private ArrayList<RewardStructure> rewards; |
|
|
|
|
|
|
|
@ -63,7 +66,7 @@ public class SimulationView extends Observable |
|
|
|
|
|
|
|
this.visibleVariables = new ArrayList<Variable>(); |
|
|
|
this.hiddenVariables = new ArrayList<Variable>(); |
|
|
|
|
|
|
|
this.visibleObservables = new ArrayList<>(); |
|
|
|
this.visibleRewardColumns = new ArrayList<RewardStructureColumn>(); |
|
|
|
this.rewards = new ArrayList<RewardStructure>(); |
|
|
|
|
|
|
|
@ -147,6 +150,11 @@ public class SimulationView extends Observable |
|
|
|
this.notifyObservers(); |
|
|
|
} |
|
|
|
|
|
|
|
public ArrayList<Observ> getVisibleObservables() |
|
|
|
{ |
|
|
|
return visibleObservables; |
|
|
|
} |
|
|
|
|
|
|
|
public ArrayList<RewardStructureColumn> getVisibleRewardColumns() |
|
|
|
{ |
|
|
|
return visibleRewardColumns; |
|
|
|
@ -202,6 +210,8 @@ public class SimulationView extends Observable |
|
|
|
simulator.setRenderer(useChangeRenderer); |
|
|
|
} |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
// Time-wise we have a problem. |
|
|
|
if (!parsedModel.getModelType().continuousTime() && (showTime || showCumulativeTime)) |
|
|
|
canUseCurrentView = false; |
|
|
|
@ -224,6 +234,22 @@ public class SimulationView extends Observable |
|
|
|
if (allVarNames.size() > 0) |
|
|
|
canUseCurrentView = false; |
|
|
|
|
|
|
|
// Make a set of all observable names. |
|
|
|
TreeSet<String> allObsNames = new TreeSet<String>(); |
|
|
|
for (Observ obs : visibleObservables) |
|
|
|
allObsNames.add(obs.getName()); |
|
|
|
|
|
|
|
// Cannot use current view if an observable is not there. |
|
|
|
for (int i = 0; i < parsedModel.getNumObservables(); i++) { |
|
|
|
if (!allObsNames.remove(parsedModel.getObservableName(i))) { |
|
|
|
canUseCurrentView = false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// Cannot use current view if we have too many observable. |
|
|
|
if (allObsNames.size() > 0) |
|
|
|
canUseCurrentView = false; |
|
|
|
|
|
|
|
// Make a list of all reward structures |
|
|
|
ArrayList<RewardStructure> allrew = new ArrayList<RewardStructure>(); |
|
|
|
for (RewardStructure rew : rewards) { |
|
|
|
@ -251,17 +277,29 @@ public class SimulationView extends Observable |
|
|
|
|
|
|
|
if (allrew.size() > 0) |
|
|
|
canUseCurrentView = false; |
|
|
|
|
|
|
|
} catch (PrismException e) { |
|
|
|
canUseCurrentView = false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (!canUseCurrentView && pathActive) { |
|
|
|
visibleVariables.clear(); |
|
|
|
hiddenVariables.clear(); |
|
|
|
visibleObservables.clear(); |
|
|
|
visibleRewardColumns.clear(); |
|
|
|
rewards.clear(); |
|
|
|
{ |
|
|
|
for (int i = 0; i < parsedModel.getNumVars(); i++) { |
|
|
|
visibleVariables.add(new Variable(i, parsedModel.getVarName(i), parsedModel.getVarType(i), parsedModel.getVarModuleIndex(i))); |
|
|
|
} |
|
|
|
for (int i = 0; i < parsedModel.getNumObservables(); i++) { |
|
|
|
try { |
|
|
|
visibleObservables.add(new Observ(i, parsedModel.getObservableName(i), parsedModel.getObservableType(i))); |
|
|
|
} catch (PrismException e) { |
|
|
|
// Don't add if error (should not happen) |
|
|
|
} |
|
|
|
} |
|
|
|
for (int r = 0; r < parsedModel.getNumRewardStructs(); r++) { |
|
|
|
RewardStruct rewardStruct = parsedModel.getRewardStruct(r); |
|
|
|
String rewardName = rewardStruct.getName(); |
|
|
|
@ -295,10 +333,10 @@ public class SimulationView extends Observable |
|
|
|
*/ |
|
|
|
public class Variable |
|
|
|
{ |
|
|
|
private int index; |
|
|
|
private String name; |
|
|
|
private Type type; |
|
|
|
private int moduleIndex; |
|
|
|
protected int index; |
|
|
|
protected String name; |
|
|
|
protected Type type; |
|
|
|
protected int moduleIndex; |
|
|
|
|
|
|
|
public Variable(int index, String name, Type type, int moduleIndex) |
|
|
|
{ |
|
|
|
@ -383,6 +421,19 @@ public class SimulationView extends Observable |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public class Observ extends Variable |
|
|
|
{ |
|
|
|
public Observ(int index, String name, Type type) |
|
|
|
{ |
|
|
|
super(index, name, type, -1); |
|
|
|
} |
|
|
|
|
|
|
|
public String toString() |
|
|
|
{ |
|
|
|
return "\"" + name + "\""; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public class ActionValue |
|
|
|
{ |
|
|
|
private String value; |
|
|
|
|