Browse Source

Some preliminary code to add parametric model checking to GUI.

git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@9386 bbc10eb1-c90d-0410-af57-cb519fbb1720
master
Dave Parker 11 years ago
parent
commit
acc8a65b4f
  1. 44
      prism/src/userinterface/properties/GUIMultiProperties.java

44
prism/src/userinterface/properties/GUIMultiProperties.java

@ -79,6 +79,9 @@ import javax.swing.event.ListSelectionListener;
import org.jfree.data.xy.XYDataItem; import org.jfree.data.xy.XYDataItem;
import param.BigRational;
import param.Function;
import param.RegionValues;
import parser.Values; import parser.Values;
import parser.ast.Expression; import parser.ast.Expression;
import parser.ast.ModulesFile; import parser.ast.ModulesFile;
@ -160,7 +163,7 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
private JScrollPane expScroller; private JScrollPane expScroller;
private JTextField fileTextField; private JTextField fileTextField;
private Action newProps, openProps, saveProps, savePropsAs, insertProps, verifySelected, newProperty, editProperty, newConstant, removeConstant, newLabel, private Action newProps, openProps, saveProps, savePropsAs, insertProps, verifySelected, newProperty, editProperty, newConstant, removeConstant, newLabel,
removeLabel, newExperiment, deleteExperiment, stopExperiment, viewResults, plotResults, exportResultsListText, exportResultsListCSV,
removeLabel, newExperiment, deleteExperiment, stopExperiment, parametric, viewResults, plotResults, exportResultsListText, exportResultsListCSV,
exportResultsMatrixText, exportResultsMatrixCSV, simulate, details, exportLabelsPlain, exportLabelsMatlab;; exportResultsMatrixText, exportResultsMatrixCSV, simulate, details, exportLabelsPlain, exportLabelsMatlab;;
// Current properties // Current properties
@ -639,6 +642,8 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
// newExperiment: enabled if there is exactly one prop selected and it is valid // newExperiment: enabled if there is exactly one prop selected and it is valid
newExperiment.setEnabled(propList.getNumSelectedProperties() == 1 && propList.getValidSelectedProperties().size() == 1); newExperiment.setEnabled(propList.getNumSelectedProperties() == 1 && propList.getValidSelectedProperties().size() == 1);
// parametric: enabled if there is exactly one prop selected and it is valid
parametric.setEnabled(propList.getNumSelectedProperties() == 1 && propList.getValidSelectedProperties().size() == 1);
// deleteExperiments: enabled if one or more experiments selected // deleteExperiments: enabled if one or more experiments selected
deleteExperiment.setEnabled(experiments.getSelectedRowCount() > 0); deleteExperiment.setEnabled(experiments.getSelectedRowCount() > 0);
// viewResults: enabled if at least one experiment is selected // viewResults: enabled if at least one experiment is selected
@ -893,6 +898,24 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
} }
} }
// How to plot a parametric result...
/*if (selected.length == 1) {
GUIProperty gp = propList.getProperty(selected[0]);
if (gp.getResult().getResult() instanceof RegionValues) {
Graph graph = new Graph("Param");
SeriesKey sk = graph.addSeries("param");
RegionValues vals = (RegionValues) gp.getResult().getResult();
param.Function f = vals.getResult(0).getInitStateValueAsFunction();
int n = 100;
for (int i = 0; i < n; i++) {
BigRational br = f.evaluate(new param.Point(new BigRational[] {new BigRational(i, n)}));
XYDataItem di = new XYDataItem(((double)i)/n, br.doubleValue());
graph.addPointToSeries(sk, di);
}
this.getGraphHandler().addGraph(graph);
}
}*/
// For a single property with a displayable counterexample, offer to do show it // For a single property with a displayable counterexample, offer to do show it
if (selected.length == 1) { if (selected.length == 1) {
GUIProperty gp = propList.getProperty(selected[0]); GUIProperty gp = propList.getProperty(selected[0]);
@ -1415,6 +1438,7 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
editProperty.setEnabled(propList.getSelectedProperties().size() > 0); editProperty.setEnabled(propList.getSelectedProperties().size() > 0);
newExperiment.setEnabled(propList.getNumSelectedProperties() == 1 && propList.getValidSelectedProperties().size() == 1); newExperiment.setEnabled(propList.getNumSelectedProperties() == 1 && propList.getValidSelectedProperties().size() == 1);
parametric.setEnabled(propList.getNumSelectedProperties() == 1 && propList.getValidSelectedProperties().size() == 1);
if (showDeleters == false) { if (showDeleters == false) {
simulate.setEnabled(false); simulate.setEnabled(false);
@ -1422,6 +1446,7 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
details.setEnabled(false); details.setEnabled(false);
editProperty.setEnabled(false); editProperty.setEnabled(false);
newExperiment.setEnabled(false); newExperiment.setEnabled(false);
parametric.setEnabled(false);
} }
propertiesPopup.show(e.getComponent(), e.getX(), e.getY()); propertiesPopup.show(e.getComponent(), e.getX(), e.getY());
@ -1508,6 +1533,7 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
details.setEnabled(propList.existsValidSelectedProperties()); details.setEnabled(propList.existsValidSelectedProperties());
editProperty.setEnabled(propList.getSelectedProperties().size() > 0); editProperty.setEnabled(propList.getSelectedProperties().size() > 0);
newExperiment.setEnabled(propList.getNumSelectedProperties() == 1 && propList.getValidSelectedProperties().size() == 1); newExperiment.setEnabled(propList.getNumSelectedProperties() == 1 && propList.getValidSelectedProperties().size() == 1);
parametric.setEnabled(propList.getNumSelectedProperties() == 1 && propList.getValidSelectedProperties().size() == 1);
if (showDeleters == false) { if (showDeleters == false) {
simulate.setEnabled(false); simulate.setEnabled(false);
@ -1515,6 +1541,7 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
details.setEnabled(false); details.setEnabled(false);
editProperty.setEnabled(false); editProperty.setEnabled(false);
newExperiment.setEnabled(false); newExperiment.setEnabled(false);
parametric.setEnabled(false);
} }
propertiesPopup.show(e.getComponent(), e.getX(), e.getY()); propertiesPopup.show(e.getComponent(), e.getX(), e.getY());
@ -1743,6 +1770,7 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
propMenu.add(verifySelected); propMenu.add(verifySelected);
propMenu.add(simulate); propMenu.add(simulate);
propMenu.add(newExperiment); propMenu.add(newExperiment);
//propMenu.add(parametric);
JMenu exportlabelsMenu = new JMenu("Export labels"); JMenu exportlabelsMenu = new JMenu("Export labels");
exportlabelsMenu.setMnemonic('E'); exportlabelsMenu.setMnemonic('E');
exportlabelsMenu.setIcon(GUIPrism.getIconFromImage("smallExport.png")); exportlabelsMenu.setIcon(GUIPrism.getIconFromImage("smallExport.png"));
@ -1782,8 +1810,8 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
propertiesPopup.add(new JSeparator()); propertiesPopup.add(new JSeparator());
propertiesPopup.add(verifySelected); propertiesPopup.add(verifySelected);
propertiesPopup.add(simulate); propertiesPopup.add(simulate);
//experiment
propertiesPopup.add(newExperiment); propertiesPopup.add(newExperiment);
//propertiesPopup.add(parametric);
propertiesPopup.add(details); propertiesPopup.add(details);
propertiesPopup.add(new JSeparator()); propertiesPopup.add(new JSeparator());
propertiesPopup.add(GUIPrism.getClipboardPlugin().getCutAction()); propertiesPopup.add(GUIPrism.getClipboardPlugin().getCutAction());
@ -2061,6 +2089,18 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
plotResults.putValue(Action.NAME, "Plot results"); plotResults.putValue(Action.NAME, "Plot results");
plotResults.putValue(Action.SMALL_ICON, GUIPrism.getIconFromImage("smallFileGraph.png")); plotResults.putValue(Action.SMALL_ICON, GUIPrism.getIconFromImage("smallFileGraph.png"));
parametric = new AbstractAction()
{
public void actionPerformed(ActionEvent e)
{
a_newExperiment();
}
};
parametric.putValue(Action.LONG_DESCRIPTION, "Perform parametric model checking");
parametric.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_P));
parametric.putValue(Action.NAME, "Parametric");
parametric.putValue(Action.SMALL_ICON, GUIPrism.getIconFromImage("smallFileGraph.png"));
exportResultsListText = new AbstractAction() exportResultsListText = new AbstractAction()
{ {
public void actionPerformed(ActionEvent e) public void actionPerformed(ActionEvent e)

Loading…
Cancel
Save