diff --git a/prism/src/userinterface/properties/GUIMultiProperties.java b/prism/src/userinterface/properties/GUIMultiProperties.java index 465b40ef..201cb45d 100644 --- a/prism/src/userinterface/properties/GUIMultiProperties.java +++ b/prism/src/userinterface/properties/GUIMultiProperties.java @@ -594,8 +594,8 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List newExperiment.setEnabled(propList.getNumSelectedProperties() == 1 && propList.getValidSelectedProperties().size() == 1); // deleteExperiments: enabled if one or more experiments selected deleteExperiment.setEnabled(experiments.getSelectedRowCount() > 0); - // viewResults: enabled if exactly one experiment is selected - viewResults.setEnabled(experiments.getSelectedRowCount() == 1); + // viewResults: enabled if at least one experiment is selected + viewResults.setEnabled(experiments.getSelectedRowCount() > 0); // plotResults: enabled if exactly one experiment is selected and its type is int/double if (experiments.getSelectedRowCount() == 1) { @@ -613,8 +613,8 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List { plotResults.setEnabled(false); } - // exportResults: enabled if exactly one experiment is selected - exportResults.setEnabled(experiments.getSelectedRowCount() == 1); + // exportResults: enabled if at least one experiment is selected + exportResults.setEnabled(experiments.getSelectedRowCount() > 0); } public int doModificationCheck() @@ -1004,11 +1004,17 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List public void a_viewResults() { GUIExperiment exp; + int i, n, inds[]; - // get experiment - if (experiments.getSelectedRowCount() != 1) return; - exp = experiments.getExperiment(experiments.getSelectedRow()); - new GUIResultsTable(this.getGUI(), this, exp).show(); + // get selected experiments + n = experiments.getSelectedRowCount(); + if (n < 1) return; + inds = experiments.getSelectedRows(); + // show results dialog for reach one + for (i = 0 ; i < n; i++) { + exp = experiments.getExperiment(inds[i]); + new GUIResultsTable(this.getGUI(), this, exp).show(); + } } public void a_plotResults() @@ -1048,16 +1054,20 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List public void a_exportResults() { - GUIExperiment exp; + GUIExperiment exps[]; + int i, n, inds[]; - // get experiment - if (experiments.getSelectedRowCount() != 1) return; - exp = experiments.getExperiment(experiments.getSelectedRow()); + // get selected experiments + n = experiments.getSelectedRowCount(); + if (n < 1) return; + exps = new GUIExperiment[n]; + inds = experiments.getSelectedRows(); + for (i = 0 ; i < n; i++) exps[i] = experiments.getExperiment(inds[i]); // get filename to save if (showSaveFileDialog(textFilter, textFilter[0]) == JFileChooser.APPROVE_OPTION) { File file = getChooserFile(); - Thread t = new ExportResultsThread(this, exp, file); + Thread t = new ExportResultsThread(this, exps, file); t.setPriority(Thread.NORM_PRIORITY); t.start(); } diff --git a/prism/src/userinterface/properties/GUIResultsTable.java b/prism/src/userinterface/properties/GUIResultsTable.java index efccf1b7..678f63f7 100644 --- a/prism/src/userinterface/properties/GUIResultsTable.java +++ b/prism/src/userinterface/properties/GUIResultsTable.java @@ -38,6 +38,8 @@ import userinterface.*; public class GUIResultsTable extends javax.swing.JDialog { + private static int noOpen = 0; + private GUIMultiProperties guiProps; private GUIExperiment exp; @@ -125,6 +127,19 @@ public class GUIResultsTable extends javax.swing.JDialog this.getContentPane().add(tmpPanel); } + public void show() + { + noOpen++; + setLocation(getX()+(noOpen*50), getY()+(noOpen*50)); + super.show(); + } + + public void dispose() + { + noOpen--; + super.dispose(); + } + private void closeDialog() { setVisible(false); diff --git a/prism/src/userinterface/properties/computation/ExportResultsThread.java b/prism/src/userinterface/properties/computation/ExportResultsThread.java index ee51b79a..cd6075bf 100644 --- a/prism/src/userinterface/properties/computation/ExportResultsThread.java +++ b/prism/src/userinterface/properties/computation/ExportResultsThread.java @@ -43,7 +43,7 @@ import userinterface.util.*; public class ExportResultsThread extends Thread { private GUIMultiProperties parent; - private GUIExperiment exp; + private GUIExperiment exps[]; private File f; private Exception saveError; @@ -51,7 +51,16 @@ public class ExportResultsThread extends Thread public ExportResultsThread(GUIMultiProperties parent, GUIExperiment exp, File f) { this.parent = parent; - this.exp = exp; + this.exps = new GUIExperiment[1]; + this.exps[0] = exp; + this.f = f; + } + + /** Creates a new instance of ExportResultsThread */ + public ExportResultsThread(GUIMultiProperties parent, GUIExperiment exps[], File f) + { + this.parent = parent; + this.exps = exps; this.f = f; } @@ -68,8 +77,14 @@ public class ExportResultsThread extends Thread }); try { + int i, n; PrintWriter out = new PrintWriter(new FileWriter(f)); - out.print(exp.getPropertyString() + ":\n" + exp.getResults().toString(false, " ", " ")); + 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, " ", " ")); + } out.flush(); out.close(); }