Support close on stop functionality for headless output execution.
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/META-INF/MANIFEST.MF b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/META-INF/MANIFEST.MF
index 2ebce8b..d0f322b 100644
--- a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/META-INF/MANIFEST.MF
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/META-INF/MANIFEST.MF
@@ -30,3 +30,4 @@
  org.eclipse.amp.escape.view
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
+Import-Package: org.apache.commons.lang.time
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteAMFEMFOutputHandler.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteAMFEMFOutputHandler.java
index 220826a..f8cb52e 100644
--- a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteAMFEMFOutputHandler.java
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteAMFEMFOutputHandler.java
@@ -15,10 +15,10 @@
  */

 package org.eclipse.amp.escape.amf.ide;

 

-import org.ascape.runtime.Runner;

 import org.eclipse.amp.escape.ide.EclipseEscapeRunner;

 import org.eclipse.amp.escape.view.EMFDataOutputView;

-import org.eclipse.core.resources.IResource;

+

+import org.ascape.runtime.Runner;

 

 // TODO: Auto-generated Javadoc

 /**

@@ -26,8 +26,6 @@
  */

 public class ExecuteAMFEMFOutputHandler extends ExecuteAMFHeadlessHandler {

 

-    protected IResource modelResource;

-

     /**

      * Instantiates a new execute parameter handler.

      */

@@ -41,6 +39,12 @@
      */

     protected EclipseEscapeRunner createRunner() {

         Runner.setDisplayGraphics(!isHeadless());

+        // if (modelResource.getFileExtension().equals("apar")) {

+        // // a bit awkward..

+        // setInterpreter((AParInterpreter) AParFactory.create(null).getInterpreter(modelResource));

+        // eclipseRunner.open(project, getInterpreter().getRootContext().getImplementation().getQualifiedName(),

+        // getInterpreter().getRunName(), getInterpreter().getArgs());

+        // }

         EclipseEscapeRunner runner = new EclipseEscapeRunner() {

             private static final long serialVersionUID = 1L;

 

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteAMFHandler.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteAMFHandler.java
index 41f2b55..67eeeb2 100644
--- a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteAMFHandler.java
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteAMFHandler.java
@@ -29,6 +29,8 @@
 

 public class ExecuteAMFHandler extends ExecuteHandler {

 

+    protected IResource modelResource;
+
     public ExecuteAMFHandler() {

         super(false);

     }

@@ -39,7 +41,7 @@
 

     protected void executeOpen(EclipseEscapeRunner eclipseRunner, Object executed, IProgressMonitor monitor) {

         if (executed instanceof IResource) {

-            IResource modelResource = (IResource) executed;

+            modelResource = (IResource) executed;

             File file = modelResource.getLocation().toFile();

             if (modelResource.getFileExtension().equals("metaabm")) {

                 try {

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteJavaEMFOutputHandler.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteJavaEMFOutputHandler.java
index 349bde7..26f2690 100644
--- a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteJavaEMFOutputHandler.java
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteJavaEMFOutputHandler.java
@@ -15,12 +15,13 @@
  */

 package org.eclipse.amp.escape.amf.ide;

 

-import org.ascape.runtime.Runner;

 import org.eclipse.amp.escape.command.ExecuteJavaHeadlessHandler;

 import org.eclipse.amp.escape.ide.EclipseEscapeRunner;

 import org.eclipse.amp.escape.view.EMFDataOutputView;

 import org.eclipse.core.resources.IResource;

 

+import org.ascape.runtime.Runner;

+

 // TODO: Auto-generated Javadoc

 /**

  * The Class ExecuteParameterHandler.

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteParamEMFOutputHandler.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteParamEMFOutputHandler.java
index 6d99e48..6327a15 100644
--- a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteParamEMFOutputHandler.java
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteParamEMFOutputHandler.java
@@ -15,10 +15,11 @@
  */

 package org.eclipse.amp.escape.amf.ide;

 

-import org.ascape.runtime.Runner;

 import org.eclipse.amp.escape.ide.EclipseEscapeRunner;

 import org.eclipse.amp.escape.view.EMFDataOutputView;

 

+import org.ascape.runtime.Runner;

+

 // TODO: Auto-generated Javadoc

 /**

  * The Class ExecuteParameterHandler.

@@ -54,6 +55,8 @@
             }

 

         };

+        runner.setCloseOnStop(true);

+        runner.setAutoRestart(false);

         return runner;

     }

 

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteParameterHandler.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteParameterHandler.java
index 8ec10ee..8b4494d 100644
--- a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteParameterHandler.java
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteParameterHandler.java
@@ -15,7 +15,6 @@
  */

 package org.eclipse.amp.escape.amf.ide;

 

-import org.ascape.runtime.Runner;

 import org.eclipse.amp.amf.parameters.AParFactory;

 import org.eclipse.amp.amf.parameters.AParInterpreter;

 import org.eclipse.amp.escape.command.ExecuteHandler;

@@ -24,6 +23,8 @@
 import org.eclipse.core.resources.IResource;

 import org.eclipse.core.runtime.IProgressMonitor;

 

+import org.ascape.runtime.Runner;

+

 // TODO: Auto-generated Javadoc

 /**

  * The Class ExecuteParameterHandler.

@@ -62,6 +63,7 @@
             if (modelResource.getFileExtension().equals("apar")) {

                 // a bit awkward..

                 setInterpreter((AParInterpreter) AParFactory.create(null).getInterpreter(modelResource));

+                eclipseRunner.setAutoRestart(false);

                 eclipseRunner.open(project, getInterpreter().getRootContext().getImplementation().getQualifiedName(),

                                    getInterpreter().getRunName(), getInterpreter().getArgs());

             }

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteParameterHeadlessHandler.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteParameterHeadlessHandler.java
index 1cab346..d81dc01 100644
--- a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteParameterHeadlessHandler.java
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteParameterHeadlessHandler.java
@@ -15,6 +15,8 @@
  */

 package org.eclipse.amp.escape.amf.ide;

 

+import org.eclipse.amp.escape.ide.EclipseEscapeRunner;

+

 // TODO: Auto-generated Javadoc

 /**

  * The Class ExecuteParameterHeadlessHandler.

@@ -27,4 +29,15 @@
     public ExecuteParameterHeadlessHandler() {

         super(true);

     }

+

+    /**

+     * @return

+     * @see org.eclipse.amp.escape.amf.ide.ExecuteParameterHandler#createRunner()

+     */

+    protected EclipseEscapeRunner createRunner() {

+        EclipseEscapeRunner runner = super.createRunner();

+        runner.setCloseOnStop(true);

+        runner.setAutoRestart(false);

+        return runner;

+    }

 }

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/view/EMFDataOutputView.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/view/EMFDataOutputView.java
index b97a41f..9640b55 100644
--- a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/view/EMFDataOutputView.java
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/view/EMFDataOutputView.java
@@ -24,10 +24,6 @@
 import java.util.Map;

 import java.util.TooManyListenersException;

 

-import org.ascape.model.event.ScapeEvent;

-import org.ascape.util.PropertyAccessor;

-import org.ascape.util.data.DataSeries;

-import org.ascape.view.nonvis.DataView;

 import org.eclipse.amp.amf.adata.Catalog;

 import org.eclipse.amp.amf.adata.DataPackage;

 import org.eclipse.amp.amf.adata.DataPoint;

@@ -37,6 +33,7 @@
 import org.eclipse.amp.amf.adata.Run;

 import org.eclipse.amp.amf.adata.ScaleType;

 import org.eclipse.amp.amf.adata.impl.DataFactoryImpl;

+import org.eclipse.core.resources.IFile;

 import org.eclipse.core.resources.IProject;

 import org.eclipse.core.resources.IResource;

 import org.eclipse.core.runtime.IPath;

@@ -47,6 +44,12 @@
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;

 import org.eclipse.emf.ecore.xmi.XMLResource;

 

+import org.apache.commons.lang.time.DateFormatUtils;

+import org.ascape.model.event.ScapeEvent;

+import org.ascape.util.PropertyAccessor;

+import org.ascape.util.data.DataSeries;

+import org.ascape.view.nonvis.DataView;

+

 /**

  * 

  * @author mparker

@@ -78,11 +81,19 @@
         IProject project = resource.getProject();

         IPath projectPath = RESULTS_FOLDER.append(

                                                   resource.getProjectRelativePath().removeFirstSegments(1)

-                                                  .removeLastSegments(1)).append(name + ".adata");

+                                                  .removeLastSegments(1)).append(

+                                                                                 getFileName(resource)

+                                                                                 + ".adata");

 

         dataFileURI = URI.createPlatformResourceURI(project.getName() + "/" + projectPath, true);

     }

 

+    private String getFileName(IResource resource) {

+        String name = ((IFile) resource).getProjectRelativePath().removeFileExtension().lastSegment();

+        name += DateFormatUtils.format(System.currentTimeMillis(), "MM-dd-yy_HH-mm-S");

+        return name;

+    }

+

     /**

      * @param scapeEvent

      * @throws TooManyListenersException

@@ -137,19 +148,19 @@
             measure.setAttribute(selectedSeries.getDataPoint().getName());

 

             if (selectedSeries.getMeasureName() == "Count") {

-                measure.setMeasure(ScaleType.COUNT);

+                measure.setType(ScaleType.COUNT);

             } else if (selectedSeries.getMeasureName() == "Sum") {

-                measure.setMeasure(ScaleType.SUM);

+                measure.setType(ScaleType.SUM);

             } else if (selectedSeries.getMeasureName() == "Average") {

-                measure.setMeasure(ScaleType.AVERAGE);

+                measure.setType(ScaleType.AVERAGE);

             } else if (selectedSeries.getMeasureName() == "Minimum") {

-                measure.setMeasure(ScaleType.MINIMUM);

+                measure.setType(ScaleType.MINIMUM);

             } else if (selectedSeries.getMeasureName() == "Maximum") {

-                measure.setMeasure(ScaleType.MAXIMUM);

+                measure.setType(ScaleType.MAXIMUM);

             } else if (selectedSeries.getMeasureName() == "Standard Deviation") {

-                measure.setMeasure(ScaleType.STANDARD_DEVIATION);

+                measure.setType(ScaleType.STANDARD_DEVIATION);

             } else if (selectedSeries.getMeasureName() == "Variance") {

-                measure.setMeasure(ScaleType.VARIANCE);

+                measure.setType(ScaleType.VARIANCE);

             }

             measureForSeries.put(selectedSeries, measure);

 

@@ -217,15 +228,6 @@
         super.scapeStopped(scapeEvent);

     }

 

-    /**

-     * @param scapeEvent

-     * @see org.ascape.model.event.DefaultScapeListener#scapeClosing(org.ascape.model.event.ScapeEvent)

-     */

-    public void scapeClosing(ScapeEvent scapeEvent) {

-        saveResults();

-        super.scapeClosing(scapeEvent);

-    }

-

     private synchronized void saveResults() {

         Map<Object, Object> saveOptions = new HashMap<Object, Object>();

         try {