Browse Source

Added export results to matrix functionality (-exportresultsmatrix from CL, experiment popup menu from GUI).

git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@4136 bbc10eb1-c90d-0410-af57-cb519fbb1720
master
Dave Parker 14 years ago
parent
commit
8ba7caed26
  1. 19
      prism/src/prism/PrismCL.java
  2. 41
      prism/src/userinterface/properties/GUIMultiProperties.java
  3. 20
      prism/src/userinterface/properties/computation/ExportResultsThread.java

19
prism/src/prism/PrismCL.java

@ -61,6 +61,7 @@ public class PrismCL
private boolean exporttransdotstates = false;
private boolean exportbsccs = false;
private boolean exportresults = false;
private boolean exportresultsmatrix = false;
private boolean exportprism = false;
private boolean exportprismconst = false;
private boolean exportPlainDeprecated = false;
@ -492,6 +493,8 @@ public class PrismCL
if (exportresults) {
mainLog.print("\nExporting results ");
if (exportresultsmatrix)
mainLog.print("in matrix form ");
if (!exportResultsFilename.equals("stdout"))
mainLog.println("to file \"" + exportResultsFilename + "\"...");
else
@ -503,7 +506,11 @@ public class PrismCL
for (i = 0; i < numPropertiesToCheck; i++) {
if (i > 0)
tmpLog.println();
tmpLog.print(propertiesToCheck.get(i) + ":\n" + results[i].toString(false, " ", " "));
if (exportresultsmatrix) {
tmpLog.print(results[i].toStringMatrix("\t"));
} else {
tmpLog.print(propertiesToCheck.get(i) + ":\n" + results[i].toString(false, " ", " "));
}
}
tmpLog.close();
}
@ -1242,6 +1249,16 @@ public class PrismCL
errorAndExit("No file specified for -" + sw + " switch");
}
}
// export results, in matrix form
else if (sw.equals("exportresultsmatrix")) {
if (i < args.length - 1) {
exportresults = true;
exportresultsmatrix = true;
exportResultsFilename = args[++i];
} else {
errorAndExit("No file specified for -" + sw + " switch");
}
}
// export transition matrix to file
else if (sw.equals("exporttrans")) {
if (i < args.length - 1) {

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

@ -92,7 +92,7 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
private JLabel fileLabel;
private Vector clipboardVector;
private Action newProps, openProps, saveProps, savePropsAs, insertProps, verifySelected, newProperty, editProperty, newConstant, removeConstant, newLabel,
removeLabel, newExperiment, deleteExperiment, stopExperiment, viewResults, plotResults, exportResults, simulate, details;
removeLabel, newExperiment, deleteExperiment, stopExperiment, viewResults, plotResults, exportResultsText, exportResultsMatrix,simulate, details;
// Current properties
private GUIPropertiesList propList;
@ -603,7 +603,8 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
plotResults.setEnabled(false);
}
// exportResults: enabled if at least one experiment is selected
exportResults.setEnabled(experiments.getSelectedRowCount() > 0);
exportResultsText.setEnabled(experiments.getSelectedRowCount() > 0);
exportResultsMatrix.setEnabled(experiments.getSelectedRowCount() > 0);
}
public int doModificationCheck()
@ -998,7 +999,7 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
}
public void a_exportResults()
public void a_exportResults(boolean exportMatrix)
{
GUIExperiment exps[];
int i, n, inds[];
@ -1014,7 +1015,7 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
// get filename to save
if (showSaveFileDialog(textFilter, textFilter[0]) == JFileChooser.APPROVE_OPTION) {
File file = getChooserFile();
Thread t = new ExportResultsThread(this, exps, file);
Thread t = new ExportResultsThread(this, exps, file, exportMatrix);
t.setPriority(Thread.NORM_PRIORITY);
t.start();
}
@ -1601,8 +1602,12 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
experimentPopup.add(new JSeparator());
experimentPopup.add(viewResults);
experimentPopup.add(plotResults);
experimentPopup.add(exportResults);
JMenu exportResultsMenu = new JMenu("Export results");
exportResultsMenu.setMnemonic('E');
exportResultsMenu.setIcon(GUIPrism.getIconFromImage("smallExport.png"));
exportResultsMenu.add(exportResultsText);
exportResultsMenu.add(exportResultsMatrix);
experimentPopup.add(exportResultsMenu);
}
private void setupActions()
@ -1841,17 +1846,29 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
plotResults.putValue(Action.NAME, "Plot results");
plotResults.putValue(Action.SMALL_ICON, GUIPrism.getIconFromImage("smallFileGraph.png"));
exportResults = new AbstractAction()
exportResultsText = new AbstractAction()
{
public void actionPerformed(ActionEvent e)
{
a_exportResults(false);
}
};
exportResultsText.putValue(Action.LONG_DESCRIPTION, "Export the results of this experiment to a text file");
exportResultsText.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_T));
exportResultsText.putValue(Action.NAME, "Text");
exportResultsText.putValue(Action.SMALL_ICON, GUIPrism.getIconFromImage("smallFileText.png"));
exportResultsMatrix = new AbstractAction()
{
public void actionPerformed(ActionEvent e)
{
a_exportResults();
a_exportResults(true);
}
};
exportResults.putValue(Action.LONG_DESCRIPTION, "Export the results of this experiment to a file");
exportResults.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_E));
exportResults.putValue(Action.NAME, "Export results");
exportResults.putValue(Action.SMALL_ICON, GUIPrism.getIconFromImage("smallExport.png"));
exportResultsMatrix.putValue(Action.LONG_DESCRIPTION, "Export the results of this experiment to a file in matrix form");
exportResultsMatrix.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_M));
exportResultsMatrix.putValue(Action.NAME, "Matrix");
exportResultsMatrix.putValue(Action.SMALL_ICON, GUIPrism.getIconFromImage("smallFileText.png"));
stopExperiment = new AbstractAction()
{

20
prism/src/userinterface/properties/computation/ExportResultsThread.java

@ -38,6 +38,7 @@ public class ExportResultsThread extends Thread
private GUIExperiment exps[];
private File f;
private Exception saveError;
private boolean exportMatrix; // export in matrix form?
/** Creates a new instance of ExportResultsThread */
public ExportResultsThread(GUIMultiProperties parent, GUIExperiment exp, File f)
@ -46,6 +47,7 @@ public class ExportResultsThread extends Thread
this.exps = new GUIExperiment[1];
this.exps[0] = exp;
this.f = f;
this.exportMatrix = false;
}
/** Creates a new instance of ExportResultsThread */
@ -54,6 +56,16 @@ public class ExportResultsThread extends Thread
this.parent = parent;
this.exps = exps;
this.f = f;
this.exportMatrix = false;
}
/** Creates a new instance of ExportResultsThread */
public ExportResultsThread(GUIMultiProperties parent, GUIExperiment exps[], File f, boolean exportMatrix)
{
this.parent = parent;
this.exps = exps;
this.f = f;
this.exportMatrix = exportMatrix;
}
public void run()
@ -74,8 +86,12 @@ public class ExportResultsThread extends Thread
n = exps.length;
for (i = 0; i < n; i++) {
if (i > 0) out.print("\n");
out.print(exps[i].getPropertyString() + ":\n");
out.print(exps[i].getResults().toString(false, " ", " "));
if (!exportMatrix) {
out.print(exps[i].getPropertyString() + ":\n");
out.print(exps[i].getResults().toString(false, " ", " "));
} else {
out.print(exps[i].getResults().toStringMatrix("\t"));
}
}
out.flush();
out.close();

Loading…
Cancel
Save