Fixing botched directory structure.
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/.classpath b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/.classpath
new file mode 100644
index 0000000..83a6aea
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src"/>

+	<classpathentry kind="src" path="res"/>

+	<classpathentry kind="output" path="bin"/>

+</classpath>

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/.project b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/.project
new file mode 100644
index 0000000..0d3849e
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.amp.escape.amf.ide</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
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
new file mode 100644
index 0000000..7406ebd
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Ide
+Bundle-SymbolicName: org.eclipse.amp.escape.amf.ide;singleton:=true
+Bundle-Version: 0.2.0.qualifier
+Bundle-Activator: org.eclipse.amp.escape.amf.ide.EscapeAMFPlugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources;bundle-version="3.5.0",
+ org.eclipse.jdt.core;bundle-version="3.5.0",
+ org.eclipse.amp.amf.acore,
+ org.eclipse.emf.ecore;bundle-version="2.5.0",
+ org.ascape.core;bundle-version="5.2.0",
+ org.eclipse.amp.escape.ide,
+ org.eclipse.amp.amf.gen;bundle-version="1.3.0",
+ org.eclipse.amp.amf.ide;bundle-version="1.3.0",
+ org.eclipse.amp.amf.gen.ascape;bundle-version="1.3.0",
+ org.eclipse.amp.amf.gen.escape;bundle-version="1.0.0"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/build.properties b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/icons/etool16/execute.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/icons/etool16/execute.gif
new file mode 100644
index 0000000..afb6fa9
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/icons/etool16/execute.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/icons/etool16/execute_headless.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/icons/etool16/execute_headless.gif
new file mode 100644
index 0000000..b7f03d5
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/icons/etool16/execute_headless.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/icons/etool16/generic_agent.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/icons/etool16/generic_agent.gif
new file mode 100644
index 0000000..0f07692
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/icons/etool16/generic_agent.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/plugin.xml b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/plugin.xml
new file mode 100644
index 0000000..d30ab67
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/plugin.xml
@@ -0,0 +1,276 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ <copyright>
+ </copyright>
+
+ $Id: plugin.xml,v 1.1 2009/06/26 07:25:03 mparker Exp $
+-->
+
+<plugin>
+<!--   <extension
+         point="org.eclipse.debug.core.launchConfigurationTypes">
+      <launchConfigurationType
+            id="org.eclipse.amp.escape.launching.ui.EscapeLaunchConfigType"
+            modes="run, debug"
+            name="Escape MetaABM Model"
+            delegate="org.eclipse.jdt.launching.JavaLaunchDelegate"/>
+   </extension>
+   
+   <extension
+         point="org.eclipse.debug.ui.launchConfigurationTabGroups">
+      <launchConfigurationTabGroup
+            class="org.eclipse.amp.escape.amf.ide.EscapeLaunchConfigTabGroup"
+            id="org.eclipse.amp.escape.launching.ui.EscapeLaunchConfigTabGroup"
+            type="org.eclipse.amp.escape.launching.ui.EscapeLaunchConfigType"/>
+   </extension>
+
+   <extension
+         point="org.eclipse.debug.ui.launchConfigurationTypeImages">
+      <launchConfigurationTypeImage
+            configTypeID="org.eclipse.amp.escape.launching.ui.EscapeLaunchConfigType"
+            icon="icons/etool16/Escape.gif"
+            id="org.eclipse.amp.escape.launching.ui.EscapeLaunchConfigTypeImage"/>
+   </extension>
+   <extension
+         point="org.eclipse.debug.ui.launchShortcuts">
+      <shortcut
+            label="Escape MetaABM Model"
+            icon="icons/etool16/MetaPerspective.gif"
+            category="org.eclipse.ui.externaltools"
+            class="org.eclipse.amp.escape.amf.ide.EscapeLaunchAction"
+            modes="run, debug"
+            id="org.eclipse.amp.escape.launching.ui.EscapeShortcut">
+        <contextualLaunch>
+           <enablement>
+             <with variable="selection">
+               <count value="1"/>
+               <iterate>
+                 <test property="org.eclipse.debug.ui.matchesPattern" value="*.metaabm"/>
+               </iterate>
+             </with>
+           </enablement>
+           <contextLabel
+         	  mode="run"
+         	  label="Escape Model"/>
+          <contextLabel
+         	  mode="debug"
+         	  label="Escape Model"/>
+  		 </contextualLaunch>
+      </shortcut>
+   </extension>-->

+    <extension

+          point="org.eclipse.ui.commands">
+       <command
+             categoryId="org.eclipse.amp.axf.ui"
+             id="org.eclipse.amp.escape.runtime.executeAMF"
+             name="Execute">
+       </command>
+       <command
+             categoryId="org.eclipse.amp.axf.ui"
+             id="org.eclipse.amp.escape.runtime.executeAMFHeadless"
+             name="Execute Headless">
+       </command>
+       <command
+             categoryId="org.metaabm.gen.category"
+             id="org.eclipse.amp.amf.gen.escape"
+             name="Generate Escape Model">
+       </command>
+       <command
+             categoryId="org.metaabm.gen.category"
+             id="org.eclipse.amp.amf.gen.escape.3D"
+             name="Generate Escape 3D Graphics">
+       </command>

+    </extension>

+    <extension

+          point="org.eclipse.ui.menus">
+       <menuContribution
+             locationURI="popup:org.metaabm.ide.generateMenuID">
+          <command
+                commandId="org.eclipse.amp.amf.gen.escape"
+                icon="icons/etool16/execute.gif"
+                label="Escape"
+                style="push"
+                tooltip="Manually generate Escape implementation. (It usually makes more sense to use a builder.)">
+             <visibleWhen
+                   checkEnabled="false">
+                <reference
+                      definitionId="org.metaabm.metaABMFile">
+                </reference>
+             </visibleWhen>
+          </command>
+       </menuContribution>

+		<menuContribution
+			locationURI="toolbar:org.eclipse.amp.escape.ide.launch?after=additions">
+			<command commandId="org.eclipse.amp.escape.runtime.executeAMF"
+				icon="icons/etool16/execute.gif" label="Execute" style="push"
+				tooltip="Load and start an Escape model.">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.amp.escape.amf.allowexecute">
+					</reference>
+				</visibleWhen>
+			</command>
+			<command commandId="org.eclipse.amp.escape.runtime.executeAMFHeadless"
+				icon="icons/etool16/execute_headless.gif" label="Execute Headless" style="push"
+				tooltip="Load and start an Escape model in non-graphical mode.">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.amp.escape.amf.allowexecute">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+		<menuContribution locationURI="menu:org.eclipse.amp.axf.ui.menu?after=additions">
+			<command commandId="org.eclipse.amp.escape.runtime.executeAMF"
+				icon="icons/etool16/execute.gif" label="Execute" style="push"
+				tooltip="Load and start an Escape model.">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.amp.escape.amf.allowexecute">
+					</reference>
+				</visibleWhen>
+			</command>
+			<command commandId="org.eclipse.amp.escape.runtime.executeAMFHeadless"
+				icon="icons/etool16/execute_headless.gif" label="Execute Headless" style="push"
+				tooltip="Load and start an Escape model in non-graphical mode.">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.amp.escape.amf.allowexecute">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+  <menuContribution
+        locationURI="popup:org.metaabm.ide.generateMenuID">
+     <command
+           commandId="org.eclipse.amp.amf.gen.escape.3D"
+           icon="icons/etool16/generic_agent.gif"
+           label="Escape 3D Styles"
+           style="push"
+           tooltip="Manually generate Escape implementation. (It usually makes more sense to use a builder.)">
+        <visibleWhen
+              checkEnabled="false">
+           <reference
+                 definitionId="org.metaabm.metaABMFile">
+           </reference>
+        </visibleWhen>
+     </command>
+  </menuContribution>
+    </extension>

+ <extension point="org.eclipse.core.expressions.definitions">

+      <definition

+            id="org.eclipse.amp.escape.amf.allowexecute">

+            <or>

+         <with

+               variable="selection">

+            <iterate

+                  ifEmpty="false">
+       <or>
+          <adapt
+                type="org.eclipse.core.resources.IResource">
+             <test
+                   property="org.eclipse.core.resources.name"
+                   value="*.metaabm">
+             </test>
+          </adapt></or>
+            </iterate>

+         </with>

+            </or>

+      </definition>

+   </extension> 
+    <extension

+          point="org.eclipse.ui.handlers">

+       <handler

+             class="org.eclipse.amp.escape.amf.ide.ExecuteAMFHandler"

+             commandId="org.eclipse.amp.escape.runtime.executeAMF">

+          <activeWhen>

+          <reference

+                definitionId="org.eclipse.amp.escape.amf.allowexecute">

+          </reference>

+          </activeWhen>

+          <enabledWhen>

+          <reference

+                definitionId="org.eclipse.amp.escape.amf.allowexecute">

+          </reference>

+          </enabledWhen>

+       </handler>
+       <handler
+             class="org.eclipse.amp.escape.amf.ide.ExecuteAMFHeadlessHandler"
+             commandId="org.eclipse.amp.escape.runtime.executeAMFHeadless">
+          <activeWhen>
+             <reference
+                   definitionId="org.eclipse.amp.escape.amf.allowexecute">
+             </reference>
+          </activeWhen>
+          <enabledWhen>
+             <reference
+                   definitionId="org.eclipse.amp.escape.amf.allowexecute">
+             </reference>
+          </enabledWhen>
+       </handler>
+       <handler
+             class="org.eclipse.amp.escape.amf.ide.GenerateEscapeHandler"
+             commandId="org.eclipse.amp.amf.gen.escape">
+       </handler>
+       <handler
+             class="org.eclipse.amp.escape.amf.ide.GenerateEscapeStyles3DHandler"
+             commandId="org.eclipse.amp.amf.gen.escape.3D">
+       </handler>

+    </extension>

+  <extension

+         point="org.eclipse.ui.bindings">

+      <key
+            commandId="org.eclipse.amp.amf.gen.escape"
+            contextId="org.eclipse.ui.contexts.window"
+            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+            sequence="M1+SHIFT+B E">
+      </key>

+    </extension>

+	<extension

+          id="escapeBuilder"

+          name="Escape MetaABM Builder"

+          point="org.eclipse.core.resources.builders">

+       <builder

+             hasNature="false">

+          <run class="org.eclipse.amp.escape.amf.ide.EscapeModelBuilder"/>

+       </builder>

+    </extension> 

+	<extension
+          id="escapeBuilder2"
+          name="Escape MetaABM Style Builder"
+          point="org.eclipse.core.resources.builders">
+       <builder
+             hasNature="false">
+          <run class="org.eclipse.amp.escape.amf.ide.EscapeModelStyles2Builder"/>
+       </builder>
+    </extension> 
+	<extension
+          id="escapeBuilder3"
+          name="Escape MetaABM Proxy Builder"
+          point="org.eclipse.core.resources.builders">
+       <builder
+             hasNature="false">
+          <run class="org.eclipse.amp.escape.amf.ide.EscapeModelStyle3DBuilder"/>
+       </builder>
+    </extension> 
+    <extension point="org.eclipse.ui.newWizards">
+    <wizard
+          category="org.metaabm.ide.wizards"
+          class="org.eclipse.amp.escape.amf.ide.EscapeAMFProjectWizard"
+          descriptionImage="icons/etool16/generic_agent.gif"
+          icon="icons/etool16/generic_agent.gif"
+          id="org.eclipse.amp.escape.wizards.newProject"
+          name="Escape Project"
+          project="true">
+      <description>Creates a new project for generating Escape implementations from MetaABM models.</description>
+    </wizard>
+    </extension>
+    <extension
+          point="org.eclipse.ui.perspectiveExtensions">
+       <perspectiveExtension
+             targetID="org.metaabm.ide.MetaABMPerspective">
+          <newWizardShortcut
+                id="org.eclipse.amp.escape.wizards.newProject">
+          </newWizardShortcut>
+       </perspectiveExtension>
+    </extension>
+</plugin>
+
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/res/ESCAPE_MANIFEST_TEMPLATE.MF b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/res/ESCAPE_MANIFEST_TEMPLATE.MF
new file mode 100644
index 0000000..35153a5
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/res/ESCAPE_MANIFEST_TEMPLATE.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %project_name%
+Bundle-SymbolicName: %project_symbol%
+Bundle-Version: 1.0.0
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.ascape.core;bundle-version="5.1.0",
+ org.eclipse.ui;bundle-version="3.5.0",
+ org.eclipse.amp.agf.chart;bundle-version="0.2.0",
+ org.eclipse.amp.agf.core;bundle-version="0.2.0",
+ org.eclipse.amp.axf.core;bundle-version="0.2.0",
+ org.eclipse.amp.axf.views;bundle-version="0.2.0",
+ org.eclipse.amp.escape.ascape;bundle-version="0.2.0",
+ org.eclipse.amp.escape.ascape.chart;bundle-version="0.2.0",
+ org.apache.commons.lang,
+ org.ascape.ui.amp;bundle-version="0.2.0"
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/res/build_template.properties b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/res/build_template.properties
new file mode 100644
index 0000000..afea5f8
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/res/build_template.properties
@@ -0,0 +1,3 @@
+source.. = srcgen/
+bin.includes = META-INF/,\
+               .
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeAMFPlugin.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeAMFPlugin.java
new file mode 100644
index 0000000..037f6da
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeAMFPlugin.java
@@ -0,0 +1,50 @@
+package org.eclipse.amp.escape.amf.ide;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class EscapeAMFPlugin extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.amp.escape.amf.ide";
+
+	// The shared instance
+	private static EscapeAMFPlugin plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public EscapeAMFPlugin() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static EscapeAMFPlugin getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeAMFProjectWizard.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeAMFProjectWizard.java
new file mode 100644
index 0000000..b1246d8
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeAMFProjectWizard.java
@@ -0,0 +1,44 @@
+package org.eclipse.amp.escape.amf.ide;

+

+import java.io.IOException;

+import java.util.List;

+

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

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

+import org.eclipse.core.runtime.CoreException;

+import org.eclipse.core.runtime.Path;

+import org.eclipse.jdt.core.JavaCore;

+import org.metaabm.ide.MetaABMProjectWizard;

+

+public class EscapeAMFProjectWizard extends MetaABMProjectWizard {

+

+    public String getProjectTypeName() {

+        return "Escape AMF";

+    }

+

+    @Override

+    public String[] getNatures() {

+        return new String[] { JavaCore.NATURE_ID, "org.eclipse.pde.PluginNature" };

+    }

+

+    public String getPluginID() {

+        return EscapeIDEPlugin.PLUGIN_ID;

+    }

+

+    @Override

+    public void createFiles() throws CoreException, IOException {

+        IFolder mFolder = getProject().getFolder("META-INF");

+        mFolder.create(true, true, null);

+        copyFiles(new Path("res/ESCAPE_MANIFEST_TEMPLATE.MF"), new Path("META-INF/MANIFEST.MF"), new StringPair[] {

+            new StringPair("%project_name%", getProject().getName()),

+            new StringPair("%project_symbol%", getProject().getName()) });

+        copyFiles(new Path("res/build_template.properties"), new Path("build.properties"), new StringPair[0]);

+    }

+

+    public void addBuilders(List<String> builderIDs) {

+        builderIDs.add(EscapeAMFPlugin.PLUGIN_ID + "." + EscapeModelBuilder.ESCAPE_BUILDER_ID);

+        builderIDs.add(EscapeAMFPlugin.PLUGIN_ID + "." + EscapeModelStyles2Builder.ESCAPE_BUILDER_2_ID);

+        // builderIDs.add(EscapeAMFPlugin.PLUGIN_ID + "." + EscapeGraphicsBuilder.ESCAPE_BUILDER_3_ID);

+        super.addBuilders(builderIDs);

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeGraphicsBuilder.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeGraphicsBuilder.java
new file mode 100644
index 0000000..503ce9d
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeGraphicsBuilder.java
@@ -0,0 +1,37 @@
+package org.eclipse.amp.escape.amf.ide;
+
+import org.eclipse.amp.escape.gen.EscapeGenActivator;
+import org.metaabm.gen.AMFGenPlugin;
+import org.metaabm.gen.ascape.AscapeGenActivator;
+import org.metaabm.ide.MetaABMBuilder;
+
+
+public class EscapeGraphicsBuilder extends MetaABMBuilder {
+
+    public final static String ESCAPE_BUILDER_3_ID = "escapeBuilder3";
+
+    private static MetaABMBuilder escapeBuilder;
+
+    public EscapeGraphicsBuilder() {
+        super("Generating Escape Proxy", "org.eclipse.amp.escape.gen", "model/generate_escape_graphics.mwe", true);
+    }
+
+    public void loadPlugins() {
+        AMFGenPlugin.getDefault();
+        AscapeGenActivator.getDefault();
+        EscapeGenActivator.getDefault();
+        super.loadPlugins();
+    }
+
+    /**
+     * Returns the shared instance
+     *
+     * @return the shared instance
+     */
+    public static MetaABMBuilder getEscapeBuilderDefault() {
+        if (escapeBuilder == null) {
+            escapeBuilder = new EscapeGraphicsBuilder();
+        }
+        return escapeBuilder;
+    }
+}
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeLaunchAction.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeLaunchAction.java
new file mode 100644
index 0000000..cb3788e
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeLaunchAction.java
@@ -0,0 +1,15 @@
+package org.eclipse.amp.escape.amf.ide;
+
+
+
+public class EscapeLaunchAction {
+    /**
+     * extends MetaABMLaunchAction {
+     * 
+     * public final static Configurator ESCAPE_CONFIGURATOR = new EscapeRuntimeConfigurator();
+     * 
+     * public Configurator getConfigurator() { return ESCAPE_CONFIGURATOR; }
+     * 
+     * @Override public String getTargetName() { // TODO Auto-generated method stub return "escape Model"; }
+     */
+}
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeLaunchConfigTabGroup.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeLaunchConfigTabGroup.java
new file mode 100644
index 0000000..4756b71
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeLaunchConfigTabGroup.java
@@ -0,0 +1,19 @@
+package org.eclipse.amp.escape.amf.ide;
+
+/**import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;
+ import org.eclipse.debug.ui.CommonTab;
+ import org.eclipse.debug.ui.ILaunchConfigurationDialog;
+ import org.eclipse.debug.ui.ILaunchConfigurationTab;
+ import org.eclipse.jdt.debug.ui.launchConfigurations.JavaClasspathTab;*/
+
+
+public class EscapeLaunchConfigTabGroup {
+    /**
+     * extends AbstractLaunchConfigurationTabGroup {
+     * 
+     * public void createTabs(ILaunchConfigurationDialog dialog, String mode) { LaunchConfigTab launchConfigTab = new
+     * LaunchConfigTab(); launchConfigTab.setRuntimeConfig(EscapeRuntimeConfigurator.ESCAPE_CONFIGURATOR); setTabs(new
+     * ILaunchConfigurationTab[] { launchConfigTab, new JavaClasspathTab(), new CommonTab() }); }
+     **/
+
+}
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeModelBuilder.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeModelBuilder.java
new file mode 100644
index 0000000..f9219bf
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeModelBuilder.java
@@ -0,0 +1,35 @@
+package org.eclipse.amp.escape.amf.ide;
+
+import org.eclipse.amp.escape.gen.EscapeGenActivator;
+import org.metaabm.gen.ascape.AscapeGenActivator;
+import org.metaabm.ide.MetaABMBuilder;
+
+
+public class EscapeModelBuilder extends MetaABMBuilder {
+
+    public final static String ESCAPE_BUILDER_ID = "escapeBuilder";
+
+    private static MetaABMBuilder escapeBuilder;
+
+    public EscapeModelBuilder() {
+        super("Generating Escape", "org.eclipse.amp.escape.gen", "model/generate_escape.mwe", true);
+    }
+
+    public void loadPlugins() {
+        EscapeGenActivator.getDefault();
+        AscapeGenActivator.getDefault();
+        super.loadPlugins();
+    }
+
+    /**
+     * Returns the shared instance
+     * 
+     * @return the shared instance
+     */
+    public static MetaABMBuilder getEscapeBuilderDefault() {
+        if (escapeBuilder == null) {
+            escapeBuilder = new EscapeModelBuilder();
+        }
+        return escapeBuilder;
+    }
+}
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeModelStyle3DBuilder.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeModelStyle3DBuilder.java
new file mode 100644
index 0000000..28e0523
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeModelStyle3DBuilder.java
@@ -0,0 +1,35 @@
+package org.eclipse.amp.escape.amf.ide;
+
+import org.eclipse.amp.escape.gen.EscapeGenActivator;
+import org.metaabm.gen.ascape.AscapeGenActivator;
+import org.metaabm.ide.MetaABMBuilder;
+
+
+public class EscapeModelStyle3DBuilder extends MetaABMBuilder {
+
+    public final static String ESCAPE_BUILDER_2_ID = "escapeBuilder3D";
+
+    private static MetaABMBuilder escapeBuilder;
+
+    public EscapeModelStyle3DBuilder() {
+        super("Generating Escape Styles", "org.eclipse.amp.escape.gen", "model/generate_escape_styles3D.mwe", true);
+    }
+
+    public void loadPlugins() {
+        EscapeGenActivator.getDefault();
+        AscapeGenActivator.getDefault();
+        super.loadPlugins();
+    }
+
+    /**
+     * Returns the shared instance
+     *
+     * @return the shared instance
+     */
+    public static MetaABMBuilder getEscapeBuilderDefault() {
+        if (escapeBuilder == null) {
+            escapeBuilder = new EscapeModelStyle3DBuilder();
+        }
+        return escapeBuilder;
+    }
+}
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeModelStyles2Builder.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeModelStyles2Builder.java
new file mode 100644
index 0000000..18835d5
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeModelStyles2Builder.java
@@ -0,0 +1,35 @@
+package org.eclipse.amp.escape.amf.ide;
+
+import org.eclipse.amp.escape.gen.EscapeGenActivator;
+import org.metaabm.gen.ascape.AscapeGenActivator;
+import org.metaabm.ide.MetaABMBuilder;
+
+
+public class EscapeModelStyles2Builder extends MetaABMBuilder {
+
+    public final static String ESCAPE_BUILDER_2_ID = "escapeBuilder2";
+
+    private static MetaABMBuilder escapeBuilder;
+
+    public EscapeModelStyles2Builder() {
+        super("Generating Escape Styles", "org.eclipse.amp.escape.gen", "model/generate_escape_styles2.mwe", true);
+    }
+
+    public void loadPlugins() {
+        EscapeGenActivator.getDefault();
+        AscapeGenActivator.getDefault();
+        super.loadPlugins();
+    }
+
+    /**
+     * Returns the shared instance
+     *
+     * @return the shared instance
+     */
+    public static MetaABMBuilder getEscapeBuilderDefault() {
+        if (escapeBuilder == null) {
+            escapeBuilder = new EscapeModelStyles2Builder();
+        }
+        return escapeBuilder;
+    }
+}
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeRuntimeConfigurator.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeRuntimeConfigurator.java
new file mode 100644
index 0000000..f00eb87
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/EscapeRuntimeConfigurator.java
@@ -0,0 +1,37 @@
+package org.eclipse.amp.escape.amf.ide;
+
+import org.metaabm.ide.Configurator;
+import org.metaabm.ide.MetaABMRuntimeConfigurator;
+
+public class EscapeRuntimeConfigurator extends MetaABMRuntimeConfigurator {
+
+    public final static Configurator ESCAPE_CONFIGURATOR = new EscapeRuntimeConfigurator();
+
+    /**
+     * Configures the amodel launch for a model. If model is null, then performs
+     * default configuration.
+     * 
+     * @param model
+     *            may be null
+     */
+    /**
+     * public void configure(ILaunchConfigurationWorkingCopy config, IResource model) { super.configure(config, model);
+     * config.setAttribute( IJavaLaunchConfigurationConstants.ATTR_MAIN_TYPE_NAME,
+     * "org.eclipse.amp.escape.runtime.EclipseRunner"); if (model != null) { File file = model.getLocation().toFile();
+     * if (model.getFileExtension().equals("metaabm")) { try { SContext context = MetaABMPersist.create(file).load();
+     * SImplementation impl = context.getImplementation(); String modelClass = impl.getQualifiedName(); config
+     * .setAttribute( IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, modelClass);
+     * 
+     * } catch (IOException e) { StatusManager.getManager().handle( new Status(Status.WARNING, "org.eclipse.amp.escape",
+     * "Couldn't load model.", e)); } } else if (model.getFileExtension().equals("java")) { JavaResourceFactoryImpl
+     * resourceFactory = new JavaResourceFactoryImpl();
+     * Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("java", resourceFactory);
+     * Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("packages", new
+     * JavaPackageResourceFactoryImpl()); ResourceSet resourceSet = new ResourceSetImpl();
+     * 
+     * Resource resource = resourceSet.getResource(URI.createFileURI(model.getLocation().toPortableString()), true);
+     * JCompilationUnit javaSource = (JCompilationUnit) resource.getEObject("/"); JClass publicClass =
+     * javaSource.getTypes().get(0); config .setAttribute( IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,
+     * publicClass.getQualifiedName()); } } }
+     **/
+}
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
new file mode 100644
index 0000000..c3f3401
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteAMFHandler.java
@@ -0,0 +1,46 @@
+package org.eclipse.amp.escape.amf.ide;

+

+import java.io.File;

+import java.io.IOException;

+

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

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

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

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

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.metaabm.SContext;

+import org.metaabm.SImplementation;

+import org.metaabm.xsd.MetaABMPersist;

+

+public class ExecuteAMFHandler extends ExecuteHandler {

+

+    public ExecuteAMFHandler() {

+        super(false);

+    }

+

+    public ExecuteAMFHandler(boolean headless) {

+        super(headless);

+    }

+

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

+        if (executed instanceof IResource) {

+            IResource modelResource = (IResource) executed;

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

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

+                try {

+                    SContext context = MetaABMPersist.create(file).load();

+                    SImplementation impl = context.getImplementation();

+                    final String modelClassName = impl.getQualifiedName();

+                    eclipseRunner.open(modelResource, modelClassName, context.getLabel());

+                } catch (IOException e) {

+                    EscapeIDEPlugin.warn("Couldn't load model.", e);

+                }

+            }

+        }

+    }

+

+    protected boolean handleSelect(Object sel) {

+        return sel instanceof IResource && ((IResource) sel).getFileExtension() != null

+        && ((IResource) sel).getFileExtension().equals("metaabm");

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteAMFHeadlessHandler.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteAMFHeadlessHandler.java
new file mode 100644
index 0000000..b17a114
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/ExecuteAMFHeadlessHandler.java
@@ -0,0 +1,10 @@
+package org.eclipse.amp.escape.amf.ide;

+

+

+

+public class ExecuteAMFHeadlessHandler extends ExecuteAMFHandler {

+    public ExecuteAMFHeadlessHandler() {

+        super(true);

+    }

+

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/GenerateEscapeHandler.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/GenerateEscapeHandler.java
new file mode 100644
index 0000000..f110d4b
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/GenerateEscapeHandler.java
@@ -0,0 +1,17 @@
+package org.eclipse.amp.escape.amf.ide;

+

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

+import org.metaabm.ide.ResourceJobHandler;

+

+public class GenerateEscapeHandler extends ResourceJobHandler {

+

+    @Override

+    public void execute(IResource resource) {

+        EscapeModelBuilder.getEscapeBuilderDefault().setCurrentMonitor(getMonitor());

+        EscapeModelBuilder.getEscapeBuilderDefault().handleModifiedResource(resource);

+        EscapeModelStyles2Builder.getEscapeBuilderDefault().setCurrentMonitor(getMonitor());

+        EscapeModelStyles2Builder.getEscapeBuilderDefault().handleModifiedResource(resource);

+        // EscapeGraphicsBuilder.getEscapeBuilderDefault().setCurrentMonitor(getMonitor());

+        // EscapeGraphicsBuilder.getEscapeBuilderDefault().handleModifiedResource(resource);

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/GenerateEscapeStyles3DHandler.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/GenerateEscapeStyles3DHandler.java
new file mode 100644
index 0000000..d33decb
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/amf/ide/GenerateEscapeStyles3DHandler.java
@@ -0,0 +1,19 @@
+package org.eclipse.amp.escape.amf.ide;

+

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

+import org.metaabm.ide.ResourceJobHandler;

+

+public class GenerateEscapeStyles3DHandler extends ResourceJobHandler {

+

+    @Override

+    public void execute(IResource resource) {

+        EscapeModelBuilder.getEscapeBuilderDefault().setCurrentMonitor(getMonitor());

+        EscapeModelBuilder.getEscapeBuilderDefault().handleModifiedResource(resource);

+        EscapeModelStyles2Builder.getEscapeBuilderDefault().setCurrentMonitor(getMonitor());

+        EscapeModelStyles2Builder.getEscapeBuilderDefault().handleModifiedResource(resource);

+        EscapeModelStyle3DBuilder.getEscapeBuilderDefault().setCurrentMonitor(getMonitor());

+        EscapeModelStyle3DBuilder.getEscapeBuilderDefault().handleModifiedResource(resource);

+        // EscapeGraphicsBuilder.getEscapeBuilderDefault().setCurrentMonitor(getMonitor());

+        // EscapeGraphicsBuilder.getEscapeBuilderDefault().handleModifiedResource(resource);

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/.classpath b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/.classpath
new file mode 100644
index 0000000..8a8f166
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src"/>

+	<classpathentry kind="output" path="bin"/>

+</classpath>

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/.project b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/.project
new file mode 100644
index 0000000..6ece1c9
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.amp.escape.ascape.agf3d</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/META-INF/MANIFEST.MF b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..720f3c9
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Escape 3D Support
+Bundle-SymbolicName: org.eclipse.amp.escape.ascape.agf3d;singleton:=true
+Bundle-Version: 0.2.0.qualifier
+Bundle-Activator: org.eclipse.amp.escape.ascape.agf3d.AscapeAGF3DPlugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.amp.axf.core;bundle-version="0.2.0",
+ org.eclipse.amp.agf.core;bundle-version="0.2.0",
+ org.eclipse.gef3d;bundle-version="0.8.1",
+ org.eclipse.amp.agf.3d;bundle-version="0.2.0",
+ org.ascape.core;bundle-version="5.2.0",
+ org.ascape.ui.amp;bundle-version="0.2.0",
+ org.eclipse.amp.escape.ascape;bundle-version="0.2.0"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.amp.escape.ascape.adapt,
+ org.eclipse.amp.escape.ascape.agf3d
+Bundle-ClassPath: .
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/build.properties b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/build.properties
new file mode 100644
index 0000000..dc80dfb
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
+source.. = src/
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/plugin.xml b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/plugin.xml
new file mode 100644
index 0000000..615f709
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/plugin.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ <copyright>
+ </copyright>
+
+ $Id: plugin.xml,v 1.1 2009/06/26 07:25:03 mparker Exp $
+-->
+
+<plugin>
+
+  <extension
+        point="org.eclipse.core.runtime.adapters">
+     <factory
+           adaptableType="org.eclipse.amp.axf.core.IModel"
+           class="org.eclipse.amp.escape.ascape.adapt.Ascape3DAdapterFactory">
+        <adapter
+              type="org.eclipse.amp.agf3d.I3DModelFactoryProvider">
+        </adapter>
+     </factory>
+  </extension>
+</plugin>
+
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/src/org/eclipse/amp/escape/ascape/adapt/Ascape3DAdapterFactory.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/src/org/eclipse/amp/escape/ascape/adapt/Ascape3DAdapterFactory.java
new file mode 100644
index 0000000..f08f61d
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/src/org/eclipse/amp/escape/ascape/adapt/Ascape3DAdapterFactory.java
@@ -0,0 +1,64 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2009 Metascape, LLC.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Metascape - Initial API and Implementation
+ *
+ * </copyright>
+ *
+ */
+package org.eclipse.amp.escape.ascape.adapt;
+
+import org.eclipse.amp.agf3d.I3DModelFactoryProvider;
+import org.eclipse.amp.escape.ascape.wrap.ScapeWrapperModel;
+import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.gef.EditPartFactory;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A factory for creating ScapeAdapter objects.
+ */
+public class Ascape3DAdapterFactory implements IAdapterFactory {
+    private static final Class[] TYPES = { I3DModelFactoryProvider.class };
+
+    Ascape3DPartFactory factory = new Ascape3DPartFactory();
+    I3DModelFactoryProvider factoryProvider = new I3DModelFactoryProvider() {
+
+        public EditPartFactory getEditPart3DFactory() {
+            return factory;
+        }
+    };
+
+    /**
+     * @param adaptableObject
+     * @param adapterType
+     * @return
+     * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class)
+     */
+    public Object getAdapter(Object adaptableObject, Class adapterType) {
+        if (adapterType == I3DModelFactoryProvider.class) {
+            if (adaptableObject instanceof ScapeWrapperModel
+                && ((ScapeWrapperModel) adaptableObject).getScape() instanceof I3DModelFactoryProvider) {
+                return ((ScapeWrapperModel) adaptableObject).getScape();
+            }
+            return factoryProvider;
+        }
+        return null;
+    }
+
+    /**
+     * @return
+     * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
+     */
+    public Class[] getAdapterList() {
+        // TODO Auto-generated method stub
+        return TYPES;
+    }
+
+}
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/src/org/eclipse/amp/escape/ascape/adapt/Ascape3DPartFactory.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/src/org/eclipse/amp/escape/ascape/adapt/Ascape3DPartFactory.java
new file mode 100644
index 0000000..410bc4b
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/src/org/eclipse/amp/escape/ascape/adapt/Ascape3DPartFactory.java
@@ -0,0 +1,64 @@
+package org.eclipse.amp.escape.ascape.adapt;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.ascape.model.Agent;

+import org.ascape.model.CellOccupant;

+import org.ascape.model.HostCell;

+import org.ascape.model.Scape;

+import org.ascape.model.space.Graph;

+import org.eclipse.amp.agf3d.AgentEdit3DPart;

+import org.eclipse.amp.agf3d.CubeEdit3DPart;

+import org.eclipse.amp.agf3d.ScapeEdit3DPart;

+import org.eclipse.amp.agf3d.TileEdit3DPart;

+import org.eclipse.amp.axf.core.ICompositionProvider;

+import org.eclipse.amp.escape.ascape.adapt.AscapePartFactory;

+import org.eclipse.amp.escape.ascape.adapt.AscapeProvider;

+import org.eclipse.amp.escape.ascape.wrap.ScapeWrapperModel;

+import org.eclipse.gef.EditPart;

+

+public class Ascape3DPartFactory extends AscapePartFactory {

+

+    protected EditPart getPartForElement(Object model) {

+        if (model instanceof ScapeWrapperModel) {

+            return getPartForElement(((ScapeWrapperModel) model).getScape());

+        }

+        if (model instanceof Scape) {

+            Scape scape = (Scape) model;

+            AscapeProvider memberProvider = (AscapeProvider) getMemberProvider(scape);

+            return new ScapeEdit3DPart(memberProvider, memberProvider, memberProvider, memberProvider, getFilter(scape));

+        } else if (model instanceof HostCell) {

+            return new TileEdit3DPart();

+        } else if (model instanceof CellOccupant) {

+            return new CubeEdit3DPart();

+        } else if (model instanceof Agent) {

+            return new AgentEdit3DPart();

+        } else {

+            return null;

+            // throw new RuntimeException("No part for the model: " + model

+            // + (model != null ? "[" + model.getClass() + "]" : ""));

+        }

+    }

+

+    protected ICompositionProvider getMemberProvider(Scape scape) {

+        ICompositionProvider memberProvider = null;

+        if (scape.isRoot()) {

+            memberProvider = new AscapeProvider() {

+                public java.util.List getList(Object hasIterable) {

+                    List list = new ArrayList(super.getList(hasIterable));

+                    List newList = new ArrayList(super.getList(hasIterable));

+                    for (Object object : list) {

+                        if (!(((Scape) object).getSpace() instanceof Graph)) {

+                            newList.add(object);

+                        }

+                    }

+                    return newList;

+                };

+            };

+        } else {

+            memberProvider = new AscapeProvider();

+        }

+        return memberProvider;

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/src/org/eclipse/amp/escape/ascape/agf3d/AscapeAGF3DPlugin.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/src/org/eclipse/amp/escape/ascape/agf3d/AscapeAGF3DPlugin.java
new file mode 100644
index 0000000..7eefd23
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/src/org/eclipse/amp/escape/ascape/agf3d/AscapeAGF3DPlugin.java
@@ -0,0 +1,50 @@
+package org.eclipse.amp.escape.ascape.agf3d;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class AscapeAGF3DPlugin extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.amp.escape.ascape.agf3d";
+
+	// The shared instance
+	private static AscapeAGF3DPlugin plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public AscapeAGF3DPlugin() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static AscapeAGF3DPlugin getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/src/org/eclipse/amp/escape/ascape/agf3d/GEF3DView.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/src/org/eclipse/amp/escape/ascape/agf3d/GEF3DView.java
new file mode 100644
index 0000000..19d3518
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.agf3d/src/org/eclipse/amp/escape/ascape/agf3d/GEF3DView.java
@@ -0,0 +1,33 @@
+package org.eclipse.amp.escape.ascape.agf3d;

+

+import org.ascape.view.vis.GEFView;

+import org.eclipse.amp.agf3d.I3DModelFactoryProvider;

+import org.eclipse.core.runtime.Platform;

+import org.eclipse.gef.EditPartFactory;

+

+public class GEF3DView extends GEFView {

+

+    private static final long serialVersionUID = -3490738641167358897L;

+    private EditPartFactory _3DFactory;

+

+    public GEF3DView() {

+        super("org.eclipse.amp.view.GEF3DView", null, "Graphic 3D View");

+    }

+

+    public EditPartFactory createFactory() {

+        return getFactory3DProvider().getEditPart3DFactory();

+    }

+

+    public I3DModelFactoryProvider getFactory3DProvider() {

+        if (getModel() instanceof I3DModelFactoryProvider) {

+            return (I3DModelFactoryProvider) getModel();

+        } else {

+            I3DModelFactoryProvider adapter = (I3DModelFactoryProvider) Platform.getAdapterManager().getAdapter(getModel(),

+                                                                                                                I3DModelFactoryProvider.class);

+            if (adapter == null) {

+                throw new RuntimeException("No I3DModelFactoryProvider adapter defined for: " + getModel());

+            }

+            return adapter;

+        }

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/.classpath b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/.classpath
new file mode 100644
index 0000000..2d1a430
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src"/>

+	<classpathentry kind="output" path="bin"/>

+</classpath>

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/.project b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/.project
new file mode 100644
index 0000000..040dc36
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.amp.escape.ascape.chart</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/META-INF/MANIFEST.MF b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..ffaac9b
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.amp.escape.ascape.chart;singleton:=true
+Bundle-Version: 0.2.0.qualifier
+Bundle-Activator: org.eclipse.amp.escape.ascape.chart.EscapeAscapeChartPlugin
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.ascape.core;bundle-version="5.2.0",
+ org.eclipse.birt.chart.engine;bundle-version="2.5.0",
+ org.eclipse.gef;bundle-version="3.5.0",
+ org.eclipse.amp.axf.views;bundle-version="0.2.0",
+ org.eclipse.amp.agf.core;bundle-version="0.2.0",
+ org.eclipse.amp.agf.chart;bundle-version="0.2.0",
+ org.eclipse.amp.escape.ascape;bundle-version="0.2.0"
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.amp.escape.ascape.chart
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/build.properties b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/build.properties
new file mode 100644
index 0000000..79785ac
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               icons/,\
+               plugin.xml
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/areacharticon.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/areacharticon.gif
new file mode 100644
index 0000000..386104b
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/areacharticon.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/arrow.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/arrow.gif
new file mode 100644
index 0000000..f3f0f6b
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/arrow.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/barcharticon.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/barcharticon.gif
new file mode 100644
index 0000000..2137d3f
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/barcharticon.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/bubblecharticon.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/bubblecharticon.gif
new file mode 100644
index 0000000..6899386
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/bubblecharticon.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/chartbuilder.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/chartbuilder.gif
new file mode 100644
index 0000000..ec3879b
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/chartbuilder.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/chartpreview.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/chartpreview.gif
new file mode 100644
index 0000000..861780c
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/chartpreview.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/chartselector.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/chartselector.gif
new file mode 100644
index 0000000..defb693
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/chartselector.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/conecharticon.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/conecharticon.gif
new file mode 100644
index 0000000..9bfbe21
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/conecharticon.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/delete_edit.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/delete_edit.gif
new file mode 100644
index 0000000..b6922ac
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/delete_edit.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/differencecharticon.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/differencecharticon.gif
new file mode 100644
index 0000000..af9574c
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/differencecharticon.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/display_show_text.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/display_show_text.gif
new file mode 100644
index 0000000..2a2b4b6
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/display_show_text.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/expressionbuilder.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/expressionbuilder.gif
new file mode 100644
index 0000000..8fe2216
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/expressionbuilder.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/externalizetext.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/externalizetext.gif
new file mode 100644
index 0000000..13fdc7e
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/externalizetext.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/fnt_style_Sthrough.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/fnt_style_Sthrough.gif
new file mode 100644
index 0000000..83c155a
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/fnt_style_Sthrough.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/fnt_style_bold.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/fnt_style_bold.gif
new file mode 100644
index 0000000..027f952
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/fnt_style_bold.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/fnt_style_italic.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/fnt_style_italic.gif
new file mode 100644
index 0000000..9df6b1e
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/fnt_style_italic.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/fnt_style_underline.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/fnt_style_underline.gif
new file mode 100644
index 0000000..eec4349
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/fnt_style_underline.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/formatbuilder.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/formatbuilder.gif
new file mode 100644
index 0000000..f885931
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/formatbuilder.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ganttcharticon.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ganttcharticon.gif
new file mode 100644
index 0000000..dc8a4c3
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ganttcharticon.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/group.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/group.gif
new file mode 100644
index 0000000..412d6e2
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/group.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/linecharticon.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/linecharticon.gif
new file mode 100644
index 0000000..9603d2c
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/linecharticon.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/marker_icon.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/marker_icon.gif
new file mode 100644
index 0000000..888e16a
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/marker_icon.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/metercharticon.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/metercharticon.gif
new file mode 100644
index 0000000..855ae0b
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/metercharticon.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/outline.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/outline.gif
new file mode 100644
index 0000000..0d891ab
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/outline.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/outline_lib.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/outline_lib.gif
new file mode 100644
index 0000000..d161662
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/outline_lib.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/palette_view.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/palette_view.gif
new file mode 100644
index 0000000..80c152a
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/palette_view.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/piecharticon.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/piecharticon.gif
new file mode 100644
index 0000000..08a3fe1
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/piecharticon.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/progress_rem.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/progress_rem.gif
new file mode 100644
index 0000000..2cd9c54
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/progress_rem.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/pyramidcharticon.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/pyramidcharticon.gif
new file mode 100644
index 0000000..14a2402
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/pyramidcharticon.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_bottomleft.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_bottomleft.gif
new file mode 100644
index 0000000..3d6b38f
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_bottomleft.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_bottomright.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_bottomright.gif
new file mode 100644
index 0000000..4d643fd
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_bottomright.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_leftdown.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_leftdown.gif
new file mode 100644
index 0000000..2201adc
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_leftdown.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_leftup.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_leftup.gif
new file mode 100644
index 0000000..31bd742
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_leftup.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_rightdown.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_rightdown.gif
new file mode 100644
index 0000000..6c69a40
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_rightdown.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_rightup.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_rightup.gif
new file mode 100644
index 0000000..2874212
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_rightup.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_topleft.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_topleft.gif
new file mode 100644
index 0000000..50d015a
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_topleft.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_topright.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_topright.gif
new file mode 100644
index 0000000..304110b
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/ra_topright.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/rectangle_multitype.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/rectangle_multitype.gif
new file mode 100644
index 0000000..a76b4aa
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/rectangle_multitype.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/rulebuilder.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/rulebuilder.gif
new file mode 100644
index 0000000..bcc1bda
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/rulebuilder.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/scattercharticon.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/scattercharticon.gif
new file mode 100644
index 0000000..6435569
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/scattercharticon.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/selectdata.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/selectdata.gif
new file mode 100644
index 0000000..2cc8203
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/selectdata.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/selectformat.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/selectformat.gif
new file mode 100644
index 0000000..2aad756
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/selectformat.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/selecttype.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/selecttype.gif
new file mode 100644
index 0000000..22247a9
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/selecttype.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/sigma.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/sigma.gif
new file mode 100644
index 0000000..07a0b64
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/sigma.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/stockcharticon.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/stockcharticon.gif
new file mode 100644
index 0000000..29fc9ab
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/stockcharticon.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/tooltip.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/tooltip.gif
new file mode 100644
index 0000000..6a818a0
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/tooltip.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/tubecharticon.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/tubecharticon.gif
new file mode 100644
index 0000000..bb663de
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/tubecharticon.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/x_anti_rotation.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/x_anti_rotation.gif
new file mode 100644
index 0000000..02673b2
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/x_anti_rotation.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/x_rotation.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/x_rotation.gif
new file mode 100644
index 0000000..5399cb7
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/x_rotation.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/y_anti_rotation.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/y_anti_rotation.gif
new file mode 100644
index 0000000..035a84c
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/y_anti_rotation.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/y_rotation.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/y_rotation.gif
new file mode 100644
index 0000000..941fe96
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/y_rotation.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/z_anti_rotation.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/z_anti_rotation.gif
new file mode 100644
index 0000000..40a0d06
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/z_anti_rotation.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/z_rotation.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/z_rotation.gif
new file mode 100644
index 0000000..36894fd
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/obj16/z_rotation.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/bubblechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/bubblechartimage.gif
new file mode 100644
index 0000000..77f7bbf
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/bubblechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/chartwatermark.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/chartwatermark.gif
new file mode 100644
index 0000000..2f5b4e6
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/chartwatermark.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/chartwizardtaskbar.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/chartwizardtaskbar.gif
new file mode 100644
index 0000000..0d45734
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/chartwizardtaskbar.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/differencechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/differencechartimage.gif
new file mode 100644
index 0000000..31a7144
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/differencechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/ganttchartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/ganttchartimage.gif
new file mode 100644
index 0000000..dd1df91
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/ganttchartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalbubblechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalbubblechartimage.gif
new file mode 100644
index 0000000..52c4c40
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalbubblechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontaldifferencechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontaldifferencechartimage.gif
new file mode 100644
index 0000000..6ef99c6
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontaldifferencechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalganttchartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalganttchartimage.gif
new file mode 100644
index 0000000..effc49f
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalganttchartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedareachartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedareachartimage.gif
new file mode 100644
index 0000000..8e4966a
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedareachartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedareachartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedareachartwithdepthimage.gif
new file mode 100644
index 0000000..ca4cbc0
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedareachartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedbarchartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedbarchartimage.gif
new file mode 100644
index 0000000..abaabba
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedbarchartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedbarchartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedbarchartwithdepthimage.gif
new file mode 100644
index 0000000..1681948
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedbarchartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedconechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedconechartimage.gif
new file mode 100644
index 0000000..f3b0bbe
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedconechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedconechartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedconechartwithdepthimage.gif
new file mode 100644
index 0000000..86a2eea
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedconechartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedlinechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedlinechartimage.gif
new file mode 100644
index 0000000..ccb5d7d
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedlinechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedlinechartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedlinechartwithdepthimage.gif
new file mode 100644
index 0000000..e18ae82
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedlinechartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedpyramidchartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedpyramidchartimage.gif
new file mode 100644
index 0000000..0bf4283
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedpyramidchartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedpyramidchartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedpyramidchartwithdepthimage.gif
new file mode 100644
index 0000000..cfb06bd
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedpyramidchartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedtubechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedtubechartimage.gif
new file mode 100644
index 0000000..0379e4f
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedtubechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedtubechartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedtubechartwithdepthimage.gif
new file mode 100644
index 0000000..5b7ab75
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalpercentstackedtubechartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalscatterchartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalscatterchartimage.gif
new file mode 100644
index 0000000..2135f4e
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalscatterchartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysideareachart3dimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysideareachart3dimage.gif
new file mode 100644
index 0000000..b6a46ab
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysideareachart3dimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysideareachartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysideareachartimage.gif
new file mode 100644
index 0000000..66125ec
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysideareachartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysideareachartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysideareachartwithdepthimage.gif
new file mode 100644
index 0000000..44faa2f
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysideareachartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidebarchart3dimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidebarchart3dimage.gif
new file mode 100644
index 0000000..de95549
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidebarchart3dimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidebarchartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidebarchartimage.gif
new file mode 100644
index 0000000..ff647c2
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidebarchartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidebarchartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidebarchartwithdepthimage.gif
new file mode 100644
index 0000000..fe4d62d
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidebarchartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysideconechart3dimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysideconechart3dimage.gif
new file mode 100644
index 0000000..41f09ee
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysideconechart3dimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysideconechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysideconechartimage.gif
new file mode 100644
index 0000000..71fe644
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysideconechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysideconechartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysideconechartwithdepthimage.gif
new file mode 100644
index 0000000..cde6a03
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysideconechartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidelinecha.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidelinecha.gif
new file mode 100644
index 0000000..89cdfa8
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidelinecha.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidelinechart3dimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidelinechart3dimage.gif
new file mode 100644
index 0000000..c3b63cf
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidelinechart3dimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidelinechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidelinechartimage.gif
new file mode 100644
index 0000000..450cc0d
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidelinechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidelinechartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidelinechartwithdepthimage.gif
new file mode 100644
index 0000000..5d92a69
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidelinechartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidepyramidchart3dimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidepyramidchart3dimage.gif
new file mode 100644
index 0000000..f2bf089
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidepyramidchart3dimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidepyramidchartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidepyramidchartimage.gif
new file mode 100644
index 0000000..8c8310d
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidepyramidchartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidepyramidchartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidepyramidchartwithdepthimage.gif
new file mode 100644
index 0000000..8bc1ecc
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidepyramidchartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidetubechart3dimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidetubechart3dimage.gif
new file mode 100644
index 0000000..92d0481
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidetubechart3dimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidetubechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidetubechartimage.gif
new file mode 100644
index 0000000..2e4dab8
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidetubechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidetubechartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidetubechartwithdepthimage.gif
new file mode 100644
index 0000000..bb2dc6a
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalsidebysidetubechartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedareachartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedareachartimage.gif
new file mode 100644
index 0000000..3d4b2ff
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedareachartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedareachartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedareachartwithdepthimage.gif
new file mode 100644
index 0000000..f009bc0
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedareachartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedbarchartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedbarchartimage.gif
new file mode 100644
index 0000000..eed6259
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedbarchartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedbarchartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedbarchartwithdepthimage.gif
new file mode 100644
index 0000000..0bc5ad1
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedbarchartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedconechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedconechartimage.gif
new file mode 100644
index 0000000..b36c42b
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedconechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedconechartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedconechartwithdepthimage.gif
new file mode 100644
index 0000000..ee24515
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedconechartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedlinechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedlinechartimage.gif
new file mode 100644
index 0000000..966e27a
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedlinechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedlinechartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedlinechartwithdepthimage.gif
new file mode 100644
index 0000000..4d92593
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedlinechartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedpyramidchartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedpyramidchartimage.gif
new file mode 100644
index 0000000..acfbbc4
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedpyramidchartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedpyramidchartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedpyramidchartwithdepthimage.gif
new file mode 100644
index 0000000..c303409
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedpyramidchartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedtubechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedtubechartimage.gif
new file mode 100644
index 0000000..2e43be6
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedtubechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedtubechartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedtubechartwithdepthimage.gif
new file mode 100644
index 0000000..a6eb2f0
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstackedtubechartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstockchartbarstickimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstockchartbarstickimage.gif
new file mode 100644
index 0000000..f6378b8
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstockchartbarstickimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstockchartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstockchartimage.gif
new file mode 100644
index 0000000..2253d45
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/horizontalstockchartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/meterchartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/meterchartimage.gif
new file mode 100644
index 0000000..537e8e5
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/meterchartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/meterchartsuperimposedimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/meterchartsuperimposedimage.gif
new file mode 100644
index 0000000..8f327f2
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/meterchartsuperimposedimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedareachartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedareachartimage.gif
new file mode 100644
index 0000000..d6e30dc
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedareachartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedareachartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedareachartwithdepthimage.gif
new file mode 100644
index 0000000..be91223
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedareachartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedbarchartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedbarchartimage.gif
new file mode 100644
index 0000000..5ebb29b
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedbarchartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedbarchartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedbarchartwithdepthimage.gif
new file mode 100644
index 0000000..aee23d8
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedbarchartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedconechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedconechartimage.gif
new file mode 100644
index 0000000..afd4459
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedconechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedconechartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedconechartwithdepthimage.gif
new file mode 100644
index 0000000..70d4bfd
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedconechartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedlinechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedlinechartimage.gif
new file mode 100644
index 0000000..1468070
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedlinechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedlinechartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedlinechartwithdepthimage.gif
new file mode 100644
index 0000000..74fbdf5
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedlinechartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedpyramidchartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedpyramidchartimage.gif
new file mode 100644
index 0000000..a90ead3
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedpyramidchartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedpyramidchartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedpyramidchartwithdepthimage.gif
new file mode 100644
index 0000000..b80560d
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedpyramidchartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedtubechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedtubechartimage.gif
new file mode 100644
index 0000000..4d0ce69
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedtubechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedtubechartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedtubechartwithdepthimage.gif
new file mode 100644
index 0000000..0599a6d
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/percentstackedtubechartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/piechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/piechartimage.gif
new file mode 100644
index 0000000..36bf9ad
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/piechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/piechartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/piechartwithdepthimage.gif
new file mode 100644
index 0000000..e2c3b15
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/piechartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/scatterchartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/scatterchartimage.gif
new file mode 100644
index 0000000..9acd6f5
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/scatterchartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysideareachart3dimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysideareachart3dimage.gif
new file mode 100644
index 0000000..bfac179
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysideareachart3dimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysideareachartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysideareachartimage.gif
new file mode 100644
index 0000000..8dc7907
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysideareachartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysideareachartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysideareachartwithdepthimage.gif
new file mode 100644
index 0000000..c7cd5da
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysideareachartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidebarchart3dimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidebarchart3dimage.gif
new file mode 100644
index 0000000..072645b
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidebarchart3dimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidebarchartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidebarchartimage.gif
new file mode 100644
index 0000000..4e48428
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidebarchartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidebarchartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidebarchartwithdepthimage.gif
new file mode 100644
index 0000000..b18b048
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidebarchartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysideconechart3dimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysideconechart3dimage.gif
new file mode 100644
index 0000000..15e6b0b
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysideconechart3dimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysideconechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysideconechartimage.gif
new file mode 100644
index 0000000..7d52ce9
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysideconechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysideconechartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysideconechartwithdepthimage.gif
new file mode 100644
index 0000000..1a2e057
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysideconechartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidelinechart3dimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidelinechart3dimage.gif
new file mode 100644
index 0000000..0845a31
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidelinechart3dimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidelinechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidelinechartimage.gif
new file mode 100644
index 0000000..8dedeff
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidelinechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidelinechartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidelinechartwithdepthimage.gif
new file mode 100644
index 0000000..ddddc80
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidelinechartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidepyramidchart3dimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidepyramidchart3dimage.gif
new file mode 100644
index 0000000..2f495f2
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidepyramidchart3dimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidepyramidchartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidepyramidchartimage.gif
new file mode 100644
index 0000000..1dc4882
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidepyramidchartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidepyramidchartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidepyramidchartwithdepthimage.gif
new file mode 100644
index 0000000..abdf5ad
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidepyramidchartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidetubechart3dimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidetubechart3dimage.gif
new file mode 100644
index 0000000..21fd9f5
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidetubechart3dimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidetubechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidetubechartimage.gif
new file mode 100644
index 0000000..f899f06
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidetubechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidetubechartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidetubechartwithdepthimage.gif
new file mode 100644
index 0000000..d62992e
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/sidebysidetubechartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedareachartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedareachartimage.gif
new file mode 100644
index 0000000..67d76ab
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedareachartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedareachartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedareachartwithdepthimage.gif
new file mode 100644
index 0000000..e0ec39b
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedareachartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedbarchartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedbarchartimage.gif
new file mode 100644
index 0000000..63e5964
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedbarchartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedbarchartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedbarchartwithdepthimage.gif
new file mode 100644
index 0000000..d18b69b
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedbarchartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedconechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedconechartimage.gif
new file mode 100644
index 0000000..859980f
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedconechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedconechartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedconechartwithdepthimage.gif
new file mode 100644
index 0000000..0b23551
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedconechartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedlinechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedlinechartimage.gif
new file mode 100644
index 0000000..595f2ba
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedlinechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedlinechartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedlinechartwithdepthimage.gif
new file mode 100644
index 0000000..784bb23
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedlinechartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedpyramidchartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedpyramidchartimage.gif
new file mode 100644
index 0000000..d9d7766
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedpyramidchartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedpyramidchartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedpyramidchartwithdepthimage.gif
new file mode 100644
index 0000000..7476b06
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedpyramidchartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedtubechartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedtubechartimage.gif
new file mode 100644
index 0000000..056eda8
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedtubechartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedtubechartwithdepthimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedtubechartwithdepthimage.gif
new file mode 100644
index 0000000..cbb12fc
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stackedtubechartwithdepthimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stockchartbarstickimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stockchartbarstickimage.gif
new file mode 100644
index 0000000..c373188
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stockchartbarstickimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stockchartimage.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stockchartimage.gif
new file mode 100644
index 0000000..f69c7fa
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/icons/wizban/stockchartimage.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/plugin.properties b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/plugin.properties
new file mode 100644
index 0000000..f9609b4
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/plugin.properties
@@ -0,0 +1,31 @@
+# /**

+#  * <copyright>

+#  *

+#  * Copyright (c) 2009 Metascape, LLC.

+#  * All rights reserved.   This program and the accompanying materials

+#  * are made available under the terms of the Eclipse Public License v1.0

+#  * which accompanies this distribution, and is available at

+#  * http://www.eclipse.org/legal/epl-v10.html

+#  * 

+#  * Contributors: 

+#  *   Metascape - Initial API and Implementation

+#  *

+#  * </copyright>

+#  *

+#  * $Id: plugin.properties

+#  */

+

+# ====================================================================

+# To code developer:

+#   Do NOT change the properties between this line and the

+#   "%%% END OF TRANSLATED PROPERTIES %%%" line.

+#   Make a new property name, append to the end of the file and change

+#   the code to use the new property.

+# ====================================================================

+

+# ====================================================================

+# %%% END OF TRANSLATED PROPERTIES %%%

+# ====================================================================

+

+pluginName = Escape Chart Integration for Ascape

+providerName = Eclipse.org

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/plugin.xml b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/plugin.xml
new file mode 100644
index 0000000..e8f54fc
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/plugin.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+  <extension
+        id="org.eclipse.amp.escape.customizer"
+        name="Customizers"
+        point="org.eclipse.ui.views">
+     <view
+           allowMultiple="false"
+           category="org.eclipse.amp.axf.views"
+           class="org.eclipse.amp.escape.ascape.chart.ChartCustomizer"
+           icon="icons/obj16/selectformat.gif"
+           id="org.eclipse.amp.view.customizer.Chart"
+           name="Chart Customizer"
+           restorable="true">
+     </view>
+  </extension>
+  <extension
+        point="org.eclipse.ui.perspectiveExtensions">
+     <perspectiveExtension
+           targetID="org.eclipse.amp.axf.ExecutionPerspective">
+        <view
+              id="org.eclipse.amp.view.customizer.Chart"
+              relationship="stack"
+              relative="org.eclipse.ui.views.PropertySheet"
+              visible="true">
+        </view>
+        <viewShortcut
+              id="org.eclipse.amp.view.customizer.Chart">
+        </viewShortcut>
+     </perspectiveExtension>
+  </extension>
+
+  <extension
+        point="org.eclipse.core.runtime.adapters">
+     <factory
+           adaptableType="org.eclipse.amp.escape.ascape.wrap.ScapeWrapperModel"
+           class="org.eclipse.amp.escape.ascape.chart.AscapeChartAdapterFactory">
+        <adapter
+              type="org.eclipse.amp.agf.chart.IDataProvider">
+        </adapter>
+     </factory>
+  </extension>
+  <extension
+        point="org.eclipse.ui.viewActions">
+     <viewContribution
+           id="org.eclipse.amp.view.customizer.Chart.clear"
+           targetID="org.eclipse.amp.view.customizer.Chart">
+        <action
+              class="org.eclipse.amp.escape.ascape.chart.ClearSelectionAction"
+              icon="icons/obj16/progress_rem.gif"
+              id="org.eclipse.amp.escape.charts.dataclear"
+              label="Clear Selection"
+              menubarPath="additions"
+              state="false"
+              toolbarPath="customGroup"
+              tooltip="Clear all selected chart series.">
+        </action>
+     </viewContribution>
+  </extension>
+</plugin>
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/eclipse/amp/escape/ascape/chart/AscapeChartAdapterFactory.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/eclipse/amp/escape/ascape/chart/AscapeChartAdapterFactory.java
new file mode 100644
index 0000000..81e0e9b
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/eclipse/amp/escape/ascape/chart/AscapeChartAdapterFactory.java
@@ -0,0 +1,36 @@
+package org.eclipse.amp.escape.ascape.chart;
+
+import org.eclipse.amp.agf.chart.IDataProvider;
+import org.eclipse.core.runtime.IAdapterFactory;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A factory for creating ScapeAdapter objects.
+ */
+public class AscapeChartAdapterFactory implements IAdapterFactory {
+    private static final Class[] TYPES = {
+        IDataProvider.class };
+
+    /**
+     * @param adaptableObject
+     * @param adapterType
+     * @return
+     * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class)
+     */
+    public Object getAdapter(Object adaptableObject, Class adapterType) {
+        if (adapterType == IDataProvider.class) {
+            return new AscapeDataProvider();
+        }
+        return null;
+    }
+
+    /**
+     * @return
+     * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
+     */
+    public Class[] getAdapterList() {
+        // TODO Auto-generated method stub
+        return TYPES;
+    }
+
+}
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/eclipse/amp/escape/ascape/chart/AscapeDataProvider.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/eclipse/amp/escape/ascape/chart/AscapeDataProvider.java
new file mode 100644
index 0000000..cfb56e0
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/eclipse/amp/escape/ascape/chart/AscapeDataProvider.java
@@ -0,0 +1,163 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors: 

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+*/

+package org.eclipse.amp.escape.ascape.chart;

+

+import java.util.HashMap;

+import java.util.List;

+import java.util.Map;

+import java.util.Observable;

+import java.util.Observer;

+

+import org.ascape.model.Scape;

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

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

+import org.eclipse.amp.agf.chart.IDataProvider;

+import org.eclipse.amp.agf.chart.IDataSelectionListener;

+import org.eclipse.amp.escape.ascape.wrap.ScapeWrapperModel;

+import org.eclipse.jface.viewers.ILabelProvider;

+import org.eclipse.jface.viewers.ILabelProviderListener;

+import org.eclipse.swt.graphics.Image;

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class AscapeDataProvider.

+ */

+public class AscapeDataProvider implements IDataProvider, ILabelProvider {

+

+    Map<Scape, DataSelection> dataSelectionForScape = new HashMap<Scape, DataSelection>();

+

+    Map<IDataSelectionListener, Observer> observerForListener = new HashMap<IDataSelectionListener, Observer>();

+

+    /**

+     * @param model

+     * @return

+     * @see org.eclipse.amp.agf.chart.IDataProvider#getDataSource(java.lang.Object)

+     */

+    public Object getDataSource(Object model) {

+        Scape scape = ((ScapeWrapperModel) model).getScape();

+        DataSelection dataSelection = dataSelectionForScape.get(scape);

+        if (dataSelection == null) {

+            dataSelection = new DataSelection();

+            dataSelection.setData(scape.getData());

+            dataSelectionForScape.put(scape, dataSelection);

+        }

+        return dataSelection;

+    }

+

+    /**

+     * @param dataSource

+     * @return

+     * @see org.eclipse.amp.agf.chart.IDataProvider#getCategoryLabels(java.lang.Object)

+     */

+    @SuppressWarnings("unchecked")

+    public List<String> getCategoryLabels(Object dataSource) {

+        return ((DataSelection) dataSource).getData().getPeriods();

+    }

+

+    /**

+     * @param valueSource

+     * @return

+     * @see org.eclipse.amp.agf.chart.IDataProvider#getValues(java.lang.Object)

+     */

+    public Object getValues(Object valueSource) {

+        return ((DataSeriesStore) valueSource).toList();

+    }

+

+    /**

+     * @param valueSelection

+     * @return

+     * @see org.eclipse.amp.agf.chart.IDataProvider#getValueSets(java.lang.Object)

+     */

+    public List getValueSets(Object valueSelection) {

+        return ((DataSelection) valueSelection).getSelectedSeries();

+    }

+

+    // TODO use normal selection paradigm?

+    /**

+     * @param dataSource

+     * @param listener

+     * @see org.eclipse.amp.agf.chart.IDataProvider#addListener(java.lang.Object, org.eclipse.amp.agf.chart.IDataSelectionListener)

+     */

+    public void addListener(final Object dataSource, final IDataSelectionListener listener) {

+        DataSelection selection = (DataSelection) dataSource;

+        Observer observer = new Observer() {

+            public void update(Observable arg0, Object arg1) {

+                listener.selectionChanged(dataSource);

+            }

+        };

+        selection.addObserver(observer);

+    }

+

+    /**

+     * @param dataSource

+     * @param listener

+     * @see org.eclipse.amp.agf.chart.IDataProvider#removeListener(java.lang.Object, org.eclipse.amp.agf.chart.IDataSelectionListener)

+     */

+    public void removeListener(final Object dataSource, IDataSelectionListener listener) {

+        DataSelection selection = (DataSelection) dataSource;

+        Observer observer = observerForListener.get(listener);

+        selection.deleteObserver(observer);

+    }

+

+    /**

+     * @param element

+     * @return

+     * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)

+     */

+    public Image getImage(Object element) {

+        return null;

+    }

+

+    /**

+     * @param valueSource

+     * @return

+     * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)

+     */

+    public String getText(Object valueSource) {

+        return ((DataSeriesStore) valueSource).getName();

+    }

+

+    /**

+     * @param listener

+     * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)

+     */

+    public void addListener(ILabelProviderListener listener) {

+    }

+

+    /**

+     * 

+     * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()

+     */

+    public void dispose() {

+    }

+

+    /**

+     * @param element

+     * @param property

+     * @return

+     * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)

+     */

+    public boolean isLabelProperty(Object element, String property) {

+        return false;

+    }

+

+    /**

+     * @param listener

+     * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)

+     */

+    public void removeListener(ILabelProviderListener listener) {

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/eclipse/amp/escape/ascape/chart/ChartCustomizer.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/eclipse/amp/escape/ascape/chart/ChartCustomizer.java
new file mode 100644
index 0000000..1e118c4
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/eclipse/amp/escape/ascape/chart/ChartCustomizer.java
@@ -0,0 +1,446 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+ */

+package org.eclipse.amp.escape.ascape.chart;

+

+import java.util.HashMap;

+import java.util.Map;

+

+import org.ascape.model.Scape;

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

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

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

+import org.eclipse.amp.agf.chart.ChartEditPart;

+import org.eclipse.amp.agf.chart.ChartViewPart;

+import org.eclipse.amp.escape.ascape.wrap.ScapeWrapperModel;

+import org.eclipse.core.runtime.Status;

+import org.eclipse.jface.viewers.ArrayContentProvider;

+import org.eclipse.jface.viewers.CellEditor;

+import org.eclipse.jface.viewers.CheckboxCellEditor;

+import org.eclipse.jface.viewers.ColumnLabelProvider;

+import org.eclipse.jface.viewers.ColumnPixelData;

+import org.eclipse.jface.viewers.ColumnViewer;

+import org.eclipse.jface.viewers.ColumnWeightData;

+import org.eclipse.jface.viewers.EditingSupport;

+import org.eclipse.jface.viewers.ITableLabelProvider;

+import org.eclipse.jface.viewers.LabelProvider;

+import org.eclipse.jface.viewers.TableLayout;

+import org.eclipse.jface.viewers.TableViewer;

+import org.eclipse.jface.viewers.TableViewerColumn;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.events.DisposeEvent;

+import org.eclipse.swt.events.DisposeListener;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.GC;

+import org.eclipse.swt.graphics.Image;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Table;

+import org.eclipse.ui.IActionBars;

+import org.eclipse.ui.IPartListener;

+import org.eclipse.ui.IWorkbenchPart;

+import org.eclipse.ui.part.ViewPart;

+import org.eclipse.ui.statushandlers.StatusManager;

+

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class ChartCustomizer.

+ */

+public class ChartCustomizer extends ViewPart {

+

+    protected Scape scape;

+    protected DataSelection dataSelection;

+    protected ChartEditPart chartEditPart;

+    private TableViewer selectTable;

+    private Composite control;

+    private DisposeListener chartDisposeListener;

+    private ArrayContentProvider statTableProvider;

+    private StatTableItemProvider statTableLabelProvider;

+

+    /**

+     * The Class StatTableItemProvider.

+     */

+    class StatTableItemProvider extends LabelProvider implements ITableLabelProvider {

+

+        /**

+         * @param element

+         * @param columnIndex

+         * @return

+         * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)

+         */

+        public String getColumnText(Object element, int columnIndex) {

+            if (columnIndex > 0) {

+                return StatCollector.getAllMeasureNamesShort()[columnIndex - 1];

+            } else {

+                return ((StatCollector) element).getName();

+            }

+        }

+

+        /**

+         * @param element

+         * @param columnIndex

+         * @return

+         * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)

+         */

+        public Image getColumnImage(Object element, int columnIndex) {

+            return null;

+        }

+    }

+

+    /**

+     * The Class MeasureEditSupport.

+     */

+    class MeasureEditSupport extends EditingSupport {

+        int measureNumber;

+        Map<Object, CheckboxCellEditor> checkBoxFor = new HashMap<Object, CheckboxCellEditor>();

+

+        /**

+         * Instantiates a new measure edit support.

+         * 

+         * @param viewer the viewer

+         * @param measureNumber the measure number

+         */

+        public MeasureEditSupport(ColumnViewer viewer, int measureNumber) {

+            super(viewer);

+            this.measureNumber = measureNumber;

+        }

+

+        private DataSeries getDataSeries(Object id) {

+            return ((StatCollector) id).getAllDataSeries()[measureNumber];

+        }

+

+        /**

+         * @param element

+         * @return

+         * @see org.eclipse.jface.viewers.EditingSupport#canEdit(java.lang.Object)

+         */

+        @Override

+        protected boolean canEdit(Object element) {

+            return getDataSeries(element) != null;

+        }

+

+        /**

+         * @param element

+         * @return

+         * @see org.eclipse.jface.viewers.EditingSupport#getCellEditor(java.lang.Object)

+         */

+        @Override

+        protected CellEditor getCellEditor(final Object element) {

+            CheckboxCellEditor checkboxCellEditor = checkBoxFor.get(element);

+            if (checkboxCellEditor == null) {

+                checkboxCellEditor = new CheckboxCellEditor(selectTable.getTable(), SWT.FULL_SELECTION);

+            }

+            return checkboxCellEditor;

+        }

+

+        /**

+         * @param element

+         * @return

+         * @see org.eclipse.jface.viewers.EditingSupport#getValue(java.lang.Object)

+         */

+        @Override

+        protected Object getValue(Object element) {

+            if (dataSelection != null && getDataSeries(element) != null) {

+                return dataSelection.isSelected(getDataSeries(element));

+            } else {

+                return false;

+            }

+        }

+

+        /**

+         * @param element

+         * @param value

+         * @see org.eclipse.jface.viewers.EditingSupport#setValue(java.lang.Object, java.lang.Object)

+         */

+        @Override

+        protected void setValue(Object element, Object value) {

+            if (dataSelection != null) {

+                DataSeries dataSeries = getDataSeries(element);

+                if (dataSeries != null) {

+                    dataSelection.setSelected(dataSeries, (Boolean) value);

+                }

+                // chartEditor.getSite().getPage().activate(chartEditor);

+                getSite().getShell().getDisplay().asyncExec(new Runnable() {

+                    public void run() {

+                        chartEditPart.refresh();

+                    };

+                });

+                getSite().getShell().getDisplay().asyncExec(new Runnable() {

+                    public void run() {

+                        selectTable.refresh(true);

+                    };

+                });

+            }

+        }

+    }

+

+    /**

+     * The Class MeasureLabelProvider.

+     */

+    class MeasureLabelProvider extends ColumnLabelProvider {

+        int measureNumber;

+

+        /**

+         * Instantiates a new measure label provider.

+         * 

+         * @param measureNumber the measure number

+         */

+        public MeasureLabelProvider(int measureNumber) {

+            this.measureNumber = measureNumber;

+        }

+

+        private DataSeries getDataSeries(Object id) {

+            return ((StatCollector) id).getAllDataSeries()[measureNumber];

+        }

+

+        /**

+         * @param element

+         * @return

+         * @see org.eclipse.jface.viewers.ColumnLabelProvider#getText(java.lang.Object)

+         */

+        public String getText(Object element) {

+            return null;

+        }

+

+        /**

+         * @param element

+         * @return

+         * @see org.eclipse.jface.viewers.ColumnLabelProvider#getImage(java.lang.Object)

+         */

+        @Override

+        public Image getImage(Object element) {

+            if (dataSelection != null) {

+                DataSeries dataSeries = getDataSeries(element);

+                if (dataSeries != null && dataSelection.isSelected(dataSeries)) {

+                    Image i = new Image(getSite().getWorkbenchWindow().getShell().getDisplay(), 30, 10);

+                    GC gc = new GC(i);

+                    String name = dataSeries.getName();

+                    Color seriesColor = chartEditPart.getSeriesColorProvider().getForeground(name);

+                    if (seriesColor != null) {

+                        gc.setForeground(seriesColor);

+                    } else {

+                        StatusManager.getManager().handle(

+                                                          new Status(Status.WARNING, "org.eclipse.amp.agf.chart",

+                                                                     "No cached color for " + name));

+                    }

+                    gc.setLineWidth(3);

+                    gc.drawLine(0, 5, 30, 5);

+                    return i;

+                }

+            }

+            return null;

+        }

+

+        /**

+         * @param element

+         * @return

+         * @see org.eclipse.jface.viewers.ColumnLabelProvider#getBackground(java.lang.Object)

+         */

+        public Color getBackground(Object element) {

+            DataSeries dataSeries = getDataSeries(element);

+            if (dataSeries == null) {

+                return org.eclipse.draw2d.ColorConstants.lightGray;

+            } else {

+                // if (dataSelection.isSelected(dataSeries)) {

+                // return seriesColor(dataSeries);

+                // } else {

+                return org.eclipse.draw2d.ColorConstants.white;

+                // }

+            }

+        }

+    }

+

+    /**

+     * Check enabled state.

+     */

+    void checkEnabledState() {

+        if (control != null) {

+            control.setEnabled(chartEditPart != null);

+        }

+    }

+

+    /**

+     * @param parent

+     * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)

+     */

+    public void createPartControl(Composite parent) {

+        // Overall

+        control = new Composite(parent, SWT.HORIZONTAL);

+        GridLayout allLayout = new GridLayout();

+        allLayout.numColumns = 2;

+        control.setLayout(allLayout);

+        checkEnabledState();

+

+        // Chart settings

+        Composite general = new Composite(control, SWT.NO_SCROLL);

+        GridLayout generalLayout = new GridLayout();

+        generalLayout.numColumns = 1;

+        general.setLayout(generalLayout);

+        general.setLayoutData(new GridData(SWT.BEGINNING, SWT.FILL, false, true));

+        chartDisposeListener = new DisposeListener() {

+            public void widgetDisposed(DisposeEvent e) {

+                setInput(null);

+            }

+        };

+

+        /*

+         * // Group chartTypeGroup = new Group(general, SWT.NO_SCROLL); final Label label = new Label(general,

+         * SWT.NONE); label.setText("Chart Type"); ToolBar chartTypeBar = new ToolBar(general, SWT.FLAT | SWT.WRAP |

+         * SWT.RIGHT); final ToolItem lineButton = new ToolItem(chartTypeBar, SWT.RADIO);

+         * lineButton.setToolTipText("Line Chart");

+         * lineButton.setImage(Activator.imageDescriptorFromPlugin("org.eclipse.amp.escape.charts",

+         * "icons/obj16/linecharticon.gif").createImage()); final ToolItem areaButton = new ToolItem(chartTypeBar,

+         * SWT.RADIO); areaButton.setToolTipText("Area Chart");

+         * areaButton.setImage(Activator.imageDescriptorFromPlugin("org.eclipse.amp.escape.charts",

+         * "icons/obj16/areacharticon.gif").createImage()); final ToolItem pieButton = new ToolItem(chartTypeBar,

+         * SWT.RADIO); pieButton.setToolTipText("Pie Chart");

+         * pieButton.setImage(Activator.imageDescriptorFromPlugin("org.eclipse.amp.escape.charts",

+         * "icons/obj16/piecharticon.gif").createImage()); SelectionListener chartTypeListener = new SelectionListener()

+         * { public void widgetDefaultSelected(SelectionEvent e) { }

+         * 

+         * public void widgetSelected(SelectionEvent e) { if (lineButton.getSelection()) { label.setText("Line"); } if

+         * (areaButton.getSelection()) { label.setText("Area"); } if (pieButton.getSelection()) { label.setText("Pie");

+         * } } }; lineButton.addSelectionListener(chartTypeListener);

+         * areaButton.addSelectionListener(chartTypeListener); pieButton.addSelectionListener(chartTypeListener);

+         * 

+         * final Button displayLegendButton = new Button(general, SWT.CHECK);

+         * displayLegendButton.setToolTipText("Show Legend");

+         * displayLegendButton.setImage(Activator.imageDescriptorFromPlugin("org.eclipse.amp.escape.charts",

+         * "icons/obj16/rectangle_multitype.gif") .createImage()); displayLegendButton.addSelectionListener(new

+         * SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method

+         * stub

+         * 

+         * }

+         * 

+         * public void widgetSelected(SelectionEvent e) { Legend legend = chartView.getChart().getLegend();

+         * legend.setVisible(displayLegendButton.getSelection()); } });

+         */

+

+        // Chart series selection

+        buildTable();

+        getViewSite().getPage().addPartListener(new IPartListener() {

+            public void partActivated(IWorkbenchPart part) {

+                if (part instanceof ChartViewPart) {

+                    setInput(((ChartViewPart) part).getEditPart());

+                }

+            }

+

+            public void partBroughtToTop(IWorkbenchPart part) {

+            }

+

+            public void partClosed(IWorkbenchPart part) {

+            }

+

+            public void partDeactivated(IWorkbenchPart part) {

+            }

+

+            public void partOpened(IWorkbenchPart part) {

+            }

+

+        });

+    }

+

+    private void buildTable() {

+        selectTable = new TableViewer(control, SWT.H_SCROLL);

+

+        statTableProvider = new ArrayContentProvider();

+        selectTable.setContentProvider(statTableProvider);

+        statTableLabelProvider = new StatTableItemProvider();

+        selectTable.setLabelProvider(statTableLabelProvider);

+        Table statTable = selectTable.getTable();

+        statTable.setHeaderVisible(true);

+        TableLayout layout = new TableLayout();

+        statTable.setLayout(layout);

+        layout.addColumnData(new ColumnWeightData(200));

+        selectTable.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

+

+        TableViewerColumn statNameColumn = new TableViewerColumn(selectTable, SWT.LEFT);

+        statNameColumn.getColumn().setText("Name");

+        statNameColumn.setLabelProvider(new ColumnLabelProvider() {

+            public String getText(Object element) {

+                return ((StatCollector) element).getName();

+            }

+        });

+        int i = 0;

+        for (String name : StatCollector.getAllMeasureNamesShort()) {

+            layout.addColumnData(new ColumnPixelData(40));

+            TableViewerColumn viewerColumn = new TableViewerColumn(selectTable, SWT.CENTER | SWT.CHECK

+                                                                   | SWT.FULL_SELECTION);

+            viewerColumn.getColumn().setText(name);

+            viewerColumn.setLabelProvider(new MeasureLabelProvider(i));

+            viewerColumn.setEditingSupport(new MeasureEditSupport(selectTable, i));

+            i++;

+        }

+        selectTable.refresh();

+    }

+

+    /**

+     * Sets the input.

+     * 

+     * @param object the new input

+     */

+    public void setInput(Object object) {

+        if (object instanceof ChartEditPart) {

+            if (chartEditPart != null && chartEditPart.getViewer().getControl() != null) {

+                chartEditPart.getViewer().getControl().removeDisposeListener(chartDisposeListener);

+            }

+            chartEditPart = (ChartEditPart) object;

+            scape = ((ScapeWrapperModel) chartEditPart.getModel()).getScape();

+            if (scape.getData() != null) {

+                dataSelection = (DataSelection) chartEditPart.getDataProvider().getDataSource(chartEditPart.getModel());

+                selectTable.setContentProvider(statTableProvider);

+                selectTable.setInput(scape.getData().getStatCollectors());

+            }

+            chartEditPart.getViewer().getControl().addDisposeListener(chartDisposeListener);

+        } else {

+            chartEditPart.getViewer().getControl().removeDisposeListener(chartDisposeListener);

+            chartEditPart = null;

+            dataSelection = null;

+            if (control != null) {

+                control.setEnabled(false);

+            }

+            selectTable.setInput(null);

+        }

+        checkEnabledState();

+        selectTable.refresh(true);

+    }

+

+    /**

+     * 

+     * @see org.eclipse.ui.part.WorkbenchPart#setFocus()

+     */

+    @Override

+    public void setFocus() {

+    }

+

+

+    /**

+     * Sets the action bars.

+     * 

+     * @param actionBars the new action bars

+     */

+    public void setActionBars(IActionBars actionBars) {

+    }

+

+    public ChartEditPart getChartEditPart() {

+        return chartEditPart;

+    }

+

+    public void refresh() {

+        selectTable.refresh();

+    }

+}
\ No newline at end of file
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/eclipse/amp/escape/ascape/chart/ClearSelectionAction.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/eclipse/amp/escape/ascape/chart/ClearSelectionAction.java
new file mode 100644
index 0000000..7c33c01
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/eclipse/amp/escape/ascape/chart/ClearSelectionAction.java
@@ -0,0 +1,59 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+ */

+package org.eclipse.amp.escape.ascape.chart;

+

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

+import org.eclipse.jface.action.IAction;

+import org.eclipse.jface.viewers.ISelection;

+import org.eclipse.ui.IViewActionDelegate;

+import org.eclipse.ui.IViewPart;

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class DisplayLegendAction.

+ */

+public class ClearSelectionAction implements IViewActionDelegate {

+

+    ChartCustomizer customizer;

+

+    /**

+     * 

+     * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)

+     */

+    public void run(IAction action) {

+        DataSelection selection = (DataSelection) ((AscapeDataProvider) customizer.getChartEditPart().getDataProvider())

+        .getDataSource(customizer.getChartEditPart().getModel());

+        selection.clearSelection();

+        customizer.refresh();

+    }

+

+    /**

+     * 

+     * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart)

+     */

+    public void init(IViewPart view) {

+        customizer = (ChartCustomizer) view;

+    }

+

+    /**

+     * 

+     * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction,

+     *      org.eclipse.jface.viewers.ISelection)

+     */

+    public void selectionChanged(IAction action, ISelection selection) {

+    }

+

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/eclipse/amp/escape/ascape/chart/EscapeAscapeChartPlugin.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/eclipse/amp/escape/ascape/chart/EscapeAscapeChartPlugin.java
new file mode 100644
index 0000000..99ec56b
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/eclipse/amp/escape/ascape/chart/EscapeAscapeChartPlugin.java
@@ -0,0 +1,76 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2009 Metascape, LLC.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: 
+ *   Metascape - Initial API and Implementation
+ *
+ * </copyright>
+ *
+*/
+package org.eclipse.amp.escape.ascape.chart;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The activator class controls the plug-in life cycle.
+ */
+public class EscapeAscapeChartPlugin extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.amp.escape.ascape.chart";
+
+	// The shared instance
+	private static EscapeAscapeChartPlugin plugin;
+	
+	/**
+     * The constructor.
+     */
+	public EscapeAscapeChartPlugin() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	/**
+	 * @param context
+	 * @throws Exception
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	/**
+	 * @param context
+	 * @throws Exception
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+     * Returns the shared instance.
+     * 
+     * @return the shared instance
+     */
+	public static EscapeAscapeChartPlugin getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/.classpath b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/.classpath
new file mode 100644
index 0000000..2d1a430
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src"/>

+	<classpathentry kind="output" path="bin"/>

+</classpath>

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/.project b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/.project
new file mode 100644
index 0000000..c608174
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.amp.escape.ascape</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/META-INF/MANIFEST.MF b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..c6e1ac9
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-Vendor: %pluginName
+Bundle-SymbolicName: org.eclipse.amp.escape.ascape;singleton:=true
+Bundle-Version: 0.2.0.qualifier
+Bundle-Activator: org.eclipse.amp.escape.ascape.EscapeAscapeRuntimePlugin
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.ui,
+ org.eclipse.ui.views,
+ org.ascape.core;bundle-version="5.2.0",
+ org.eclipse.amp.axf.core;bundle-version="0.2.0",
+ org.eclipse.amp.axf.views;bundle-version="0.2.0",
+ org.eclipse.amp.agf.core;bundle-version="0.2.0",
+ org.eclipse.amp.axf.ide;bundle-version="0.2.0"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.amp.escape.ascape,
+ org.eclipse.amp.escape.ascape.adapt,
+ org.eclipse.amp.escape.ascape.gef,
+ org.eclipse.amp.escape.ascape.wrap
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/build.properties b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/plugin.properties b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/plugin.properties
new file mode 100644
index 0000000..31654a0
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/plugin.properties
@@ -0,0 +1,31 @@
+# /**

+#  * <copyright>

+#  *

+#  * Copyright (c) 2009 Metascape, LLC.

+#  * All rights reserved.   This program and the accompanying materials

+#  * are made available under the terms of the Eclipse Public License v1.0

+#  * which accompanies this distribution, and is available at

+#  * http://www.eclipse.org/legal/epl-v10.html

+#  * 

+#  * Contributors: 

+#  *   Metascape - Initial API and Implementation

+#  *

+#  * </copyright>

+#  *

+#  * $Id: plugin.properties

+#  */

+

+# ====================================================================

+# To code developer:

+#   Do NOT change the properties between this line and the

+#   "%%% END OF TRANSLATED PROPERTIES %%%" line.

+#   Make a new property name, append to the end of the file and change

+#   the code to use the new property.

+# ====================================================================

+

+# ====================================================================

+# %%% END OF TRANSLATED PROPERTIES %%%

+# ====================================================================

+

+pluginName = Escape Graphics Legacy Support

+providerName = Ascape.org

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/plugin.xml b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/plugin.xml
new file mode 100644
index 0000000..f11cc81
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/plugin.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ <copyright>
+ </copyright>
+
+ $Id: plugin.xml,v 1.1 2009/06/26 07:25:01 mparker Exp $
+-->
+
+<plugin>
+
+  <extension
+        point="org.eclipse.core.runtime.adapters">
+     <factory
+           adaptableType="org.eclipse.amp.axf.ide.ModelViewManager"
+           class="org.eclipse.amp.escape.ascape.adapt.AscapeAdapterFactory">
+        <adapter
+              type="org.eclipse.jface.viewers.ILabelProvider">
+        </adapter>
+     </factory>
+     <factory
+           adaptableType="org.eclipse.amp.axf.view.ModelViewPart"
+           class="org.eclipse.amp.escape.ascape.adapt.AscapeAdapterFactory">
+        <adapter
+              type="org.eclipse.ui.views.properties.IPropertySourceProvider">
+        </adapter>
+     </factory>
+     <factory
+           adaptableType="org.eclipse.amp.escape.ascape.wrap.ScapeWrapperModel"
+           class="org.eclipse.amp.escape.ascape.adapt.AscapeAdapterFactory">
+        <adapter
+              type="org.eclipse.ui.views.properties.IPropertySource">
+        </adapter>
+     </factory>
+     <factory
+           adaptableType="org.ascape.model.Agent"
+           class="org.eclipse.amp.escape.ascape.adapt.AscapeAdapterFactory">
+        <adapter
+              type="org.eclipse.ui.views.properties.IPropertySource">
+        </adapter>
+     </factory>
+  </extension>
+</plugin>
+
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/EscapeAscapeRuntimePlugin.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/EscapeAscapeRuntimePlugin.java
new file mode 100644
index 0000000..39a1630
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/EscapeAscapeRuntimePlugin.java
@@ -0,0 +1,76 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2009 Metascape, LLC.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: 
+ *   Metascape - Initial API and Implementation
+ *
+ * </copyright>
+ *
+*/
+package org.eclipse.amp.escape.ascape;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The activator class controls the plug-in life cycle.
+ */
+public class EscapeAscapeRuntimePlugin extends AbstractUIPlugin {
+
+    // The plug-in ID
+    public static final String PLUGIN_ID = "org.escape.graphics";
+
+    // The shared instance
+    private static EscapeAscapeRuntimePlugin plugin;
+
+    /**
+     * The constructor.
+     */
+    public EscapeAscapeRuntimePlugin() {
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+     */
+    /**
+     * @param context
+     * @throws Exception
+     * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+     */
+    public void start(BundleContext context) throws Exception {
+        super.start(context);
+        plugin = this;
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+     */
+    /**
+     * @param context
+     * @throws Exception
+     * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+     */
+    public void stop(BundleContext context) throws Exception {
+        plugin = null;
+        super.stop(context);
+    }
+
+    /**
+     * Returns the shared instance.
+     * 
+     * @return the shared instance
+     */
+    public static EscapeAscapeRuntimePlugin getDefault() {
+        return plugin;
+    }
+
+}
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapeAdapterFactory.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapeAdapterFactory.java
new file mode 100644
index 0000000..0aa5c08
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapeAdapterFactory.java
@@ -0,0 +1,63 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2009 Metascape, LLC.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Metascape - Initial API and Implementation
+ *
+ * </copyright>
+ *
+ */
+package org.eclipse.amp.escape.ascape.adapt;
+
+import org.eclipse.amp.agf.gef.ModelFactoryProvider;
+import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.ui.views.properties.IPropertySource;
+import org.eclipse.ui.views.properties.IPropertySourceProvider;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A factory for creating ScapeAdapter objects.
+ */
+public class AscapeAdapterFactory implements IAdapterFactory {
+    private static final Class[] TYPES = { ILabelProvider.class, IPropertySource.class, IPropertySourceProvider.class,
+        ModelFactoryProvider.class };
+
+    /**
+     * @param adaptableObject
+     * @param adapterType
+     * @return
+     * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class)
+     */
+    public Object getAdapter(Object adaptableObject, Class adapterType) {
+        if (adapterType == ILabelProvider.class) {
+            return new AscapeProvider();
+        }
+        if (adapterType == IPropertySource.class) {
+            return new BeanPropertySource(adaptableObject);
+        }
+        if (adapterType == IPropertySourceProvider.class) {
+            return new AscapePropertySourceProvider(adaptableObject);
+        }
+        if (adapterType == ModelFactoryProvider.class) {
+            return new AscapeModelFactoryProvider();
+        }
+        return null;
+    }
+
+    /**
+     * @return
+     * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
+     */
+    public Class[] getAdapterList() {
+        // TODO Auto-generated method stub
+        return TYPES;
+    }
+
+}
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapeModelFactoryProvider.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapeModelFactoryProvider.java
new file mode 100644
index 0000000..a840c77
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapeModelFactoryProvider.java
@@ -0,0 +1,16 @@
+package org.eclipse.amp.escape.ascape.adapt;

+

+import org.eclipse.amp.agf.gef.ModelFactoryProvider;

+import org.eclipse.gef.EditPartFactory;

+

+public class AscapeModelFactoryProvider implements ModelFactoryProvider {

+

+    public EditPartFactory getEditPartFactory() {

+        return new AscapePartFactory();

+    }

+

+    public EditPartFactory getEditPartTreeFactory() {

+        return new AscapePartTreeFactory();

+    }

+

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapePartFactory.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapePartFactory.java
new file mode 100644
index 0000000..6919799
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapePartFactory.java
@@ -0,0 +1,106 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+ */

+package org.eclipse.amp.escape.ascape.adapt;

+

+import org.ascape.model.Agent;

+import org.ascape.model.CellOccupant;

+import org.ascape.model.HostCell;

+import org.ascape.model.Scape;

+import org.ascape.model.space.Graph;

+import org.eclipse.amp.agf.gef.AgentConnectionPart;

+import org.eclipse.amp.agf.gef.AgentEditPart;

+import org.eclipse.amp.agf.gef.NetworkConnection;

+import org.eclipse.amp.agf.gef.ScapeEditPart;

+import org.eclipse.amp.agf.gef.ScapeGraphEditPart;

+import org.eclipse.amp.axf.core.ICompositionProvider;

+import org.eclipse.amp.escape.ascape.gef.CellOccupantEditPart;

+import org.eclipse.amp.escape.ascape.gef.HostCellEditPart;

+import org.eclipse.amp.escape.ascape.wrap.ScapeWrapperModel;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPartFactory;

+import org.eclipse.jface.viewers.IFilter;

+

+

+// TODO: Auto-generated Javadoc

+/**

+ * A factory for creating AscapePart objects.

+ */

+public class AscapePartFactory implements EditPartFactory {

+

+    AscapeProvider ascapeProvider = new AscapeProvider();

+

+    IFilter filter = null;

+

+    /**

+     * @param context

+     * @param model

+     * @return

+     * @see org.eclipse.gef.EditPartFactory#createEditPart(org.eclipse.gef.EditPart, java.lang.Object)

+     */

+    public EditPart createEditPart(EditPart context, Object model) {

+        EditPart part = getPartForElement(model);

+        part.setModel(model);

+        return part;

+    }

+

+    /**

+     * Maps an object to an EditPart.

+     * 

+     * @param model the model

+     * 

+     * @return the part for element

+     * 

+     * @throws RuntimeException if no match was found (programming error)

+     */

+    protected EditPart getPartForElement(Object model) {

+        if (model instanceof ScapeWrapperModel) {

+            return getPartForElement(((ScapeWrapperModel) model).getScape());

+        }

+        if (model instanceof Scape) {

+            Scape scape = (Scape) model;

+            AscapeProvider memberProvider = (AscapeProvider) getMemberProvider(scape);

+            if (scape.getSpace() instanceof Graph) {

+                return new ScapeGraphEditPart(memberProvider, memberProvider, memberProvider, memberProvider,

+                                              getFilter(scape));

+            }

+            return new ScapeEditPart(memberProvider, memberProvider, memberProvider, memberProvider, getFilter(scape));

+        } else if (model instanceof HostCell) {

+            return new HostCellEditPart();

+        } else if (model instanceof CellOccupant) {

+            return new CellOccupantEditPart();

+        } else if (model instanceof Agent) {

+            return new AgentEditPart();

+        } else if (model instanceof NetworkConnection) {

+            return new AgentConnectionPart();

+        } else {

+            throw new RuntimeException("No part for the model: " + model

+                                       + (model != null ? "[" + model.getClass() + "]" : ""));

+        }

+    }

+

+    protected ICompositionProvider getMemberProvider(Scape scape) {

+        return ascapeProvider;

+    }

+

+    public IFilter getFilter(Scape scape) {

+        return filter;

+    }

+

+    public void setFilter(IFilter filter) {

+        this.filter = filter;

+    }

+

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapePartTreeFactory.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapePartTreeFactory.java
new file mode 100644
index 0000000..9909993
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapePartTreeFactory.java
@@ -0,0 +1,69 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+ */

+package org.eclipse.amp.escape.ascape.adapt;

+

+import org.ascape.model.Agent;

+import org.ascape.model.Scape;

+import org.eclipse.amp.agf.tree.AgentTreePart;

+import org.eclipse.amp.agf.tree.ScapeTreePart;

+import org.eclipse.amp.escape.ascape.wrap.ScapeWrapperModel;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPartFactory;

+

+

+// TODO: Auto-generated Javadoc

+/**

+ * A factory for creating ScapePartTree objects.

+ */

+public class AscapePartTreeFactory implements EditPartFactory {

+

+    public AscapeProvider provider = new AscapeProvider();

+

+    /**

+     * @param context

+     * @param model

+     * @return

+     * @see org.eclipse.gef.EditPartFactory#createEditPart(org.eclipse.gef.EditPart, java.lang.Object)

+     */

+    public EditPart createEditPart(EditPart context, Object model) {

+        EditPart part = getPartForElement(model);

+        part.setModel(model);

+        return part;

+    }

+

+    /**

+     * Maps an object to an EditPart.

+     * 

+     * @param model the model

+     * 

+     * @return the part for element

+     * 

+     * @throws RuntimeException if no match was found (programming error)

+     */

+    protected EditPart getPartForElement(Object model) {

+        if (model instanceof ScapeWrapperModel) {

+            return getPartForElement(((ScapeWrapperModel) model).getScape());

+        }

+        if (model instanceof Scape) {

+            return new ScapeTreePart(provider, provider);

+        } else if (model instanceof Agent) {

+            return new AgentTreePart();

+        } else {

+            throw new RuntimeException("No part for the model: " + model

+                                       + (model != null ? "[" + model.getClass() + "]" : ""));

+        }

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapePropertySourceProvider.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapePropertySourceProvider.java
new file mode 100644
index 0000000..8af254f
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapePropertySourceProvider.java
@@ -0,0 +1,66 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+ */

+package org.eclipse.amp.escape.ascape.adapt;

+

+import org.ascape.model.Agent;

+import org.ascape.model.LocatedAgent;

+import org.ascape.model.Scape;

+import org.eclipse.amp.agf.EditPartSourceProvider;

+import org.eclipse.amp.escape.ascape.wrap.ScapeWrapperModel;

+import org.eclipse.gef.EditPart;

+

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class AscapePropertySourceProvider.

+ */

+public class AscapePropertySourceProvider extends EditPartSourceProvider {

+

+    Class stopClass;

+

+    public AscapePropertySourceProvider(Object source) {

+        super();

+        stopClass = getStopClass(source);

+    }

+

+    /**

+     * @param editPart

+     * @return

+     * @see org.eclipse.amp.agf.EditPartSourceProvider#getSource(org.eclipse.gef.EditPart)

+     */

+    public Object getSource(final EditPart editPart) {

+        if (editPart.getModel() instanceof ScapeWrapperModel) {

+            return ((ScapeWrapperModel) editPart.getModel()).getScape();

+        }

+        return super.getSource(editPart);

+    }

+

+    /**

+     * @param model

+     * @return

+     * @see org.ascape.BeanPropertySourceProvider#getStopClass(java.lang.Object)

+     */

+    protected Class getStopClass(Object model) {

+        if (model instanceof LocatedAgent) {

+            return LocatedAgent.class;

+        } else if (model instanceof Agent) {

+            return Agent.class;

+        } else if (model instanceof Scape || model instanceof ScapeWrapperModel) {

+            return Scape.class;

+        }

+        return Object.class;

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapeProvider.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapeProvider.java
new file mode 100644
index 0000000..b455e69
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapeProvider.java
@@ -0,0 +1,305 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+ */

+package org.eclipse.amp.escape.ascape.adapt;

+

+import java.util.ArrayList;

+import java.util.HashMap;

+import java.util.List;

+

+import org.ascape.model.Agent;

+import org.ascape.model.AscapeObject;

+import org.ascape.model.CellOccupant;

+import org.ascape.model.HostCell;

+import org.ascape.model.LocatedAgent;

+import org.ascape.model.Scape;

+import org.ascape.model.space.Array2D;

+import org.ascape.model.space.Coordinate;

+import org.ascape.model.space.Coordinate2DDiscrete;

+import org.ascape.model.space.Graph;

+import org.ascape.model.space.Node;

+import org.ascape.model.space.Singleton;

+import org.eclipse.amp.agf.gef.IExtentProvider;

+import org.eclipse.amp.agf.gef.IGraphProvider;

+import org.eclipse.amp.agf.gef.ILocation;

+import org.eclipse.amp.agf.gef.ILocationProvider;

+import org.eclipse.amp.axf.core.ICompositionProvider;

+import org.eclipse.amp.escape.ascape.wrap.ScapeWrapperModel;

+import org.eclipse.jface.viewers.ILabelProvider;

+import org.eclipse.jface.viewers.ILabelProviderListener;

+import org.eclipse.swt.graphics.Image;

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class AscapeProvider.

+ */

+public class AscapeProvider implements ILocationProvider, IExtentProvider, IGraphProvider, ILabelProvider,

+ICompositionProvider {

+

+    /**

+     * The Class Location.

+     */

+    class Location implements ILocation {

+        int x;

+        int y;

+

+        /**

+         * Instantiates a new location.

+         * 

+         * @param x the x

+         * @param y the y

+         */

+        public Location(int x, int y) {

+            super();

+            this.x = x;

+            this.y = y;

+        }

+

+        /**

+         * @return

+         * @see org.eclipse.amp.agf.gef.ILocation#getX()

+         */

+        public int getX() {

+            return x;

+        }

+

+        /**

+         * @return

+         * @see org.eclipse.amp.agf.gef.ILocation#getY()

+         */

+        public int getY() {

+            return y;

+        }

+    }

+

+    /**

+     * @param element

+     * @return

+     * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)

+     */

+    public String getText(Object element) {

+        if (element instanceof ScapeWrapperModel) {

+            return getText(((ScapeWrapperModel) element).getScape());

+        }

+        if (element instanceof AscapeObject) {

+            return ((AscapeObject) element).getName();

+

+        }

+        return null;

+    }

+

+    /**

+     * @param element

+     * @return

+     * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)

+     */

+    public Image getImage(Object element) {

+        return null;

+        // if (element instanceof ScapeWrapperModelListener) {

+        // return super.getImage(((ScapeWrapperModelListener) element).getWrapped());

+        // }

+        // throw new RuntimeException("Unexpected input for Scape Label Provider: " + element);

+    }

+

+    /**

+     * @param located

+     * @return

+     * @see org.eclipse.amp.agf.gef.ILocationProvider#getLocation(java.lang.Object)

+     */

+    public ILocation getLocation(Object located) {

+        LocatedAgent agent = (LocatedAgent) located;

+        Coordinate coor = null;

+        if (agent instanceof CellOccupant && ((CellOccupant) agent).getHostCell() != null) {

+            coor = ((CellOccupant) agent).getHostCell().getCoordinate();

+        } else {

+            coor = agent.getCoordinate();

+        }

+        if (coor instanceof Coordinate2DDiscrete) {

+            Coordinate2DDiscrete coor2D = (Coordinate2DDiscrete) coor;

+            return new Location(coor2D.getXValue(), coor2D.getYValue());

+        }

+        return null;

+    }

+

+    /**

+     * @param located

+     * @return

+     * @see org.eclipse.amp.agf.gef.IExtentProvider#getExtent(java.lang.Object)

+     */

+    public ILocation getExtent(Object located) {

+        final Array2D array2D = getArray2D((Scape) getUnwrapped(located));

+        if (array2D != null) {

+            return new ILocation() {

+                public int getY() {

+                    return ((Coordinate2DDiscrete) array2D.getExtent()).getXValue();

+                }

+

+                public int getX() {

+                    return ((Coordinate2DDiscrete) array2D.getExtent()).getYValue();

+                }

+            };

+        }

+        return null;

+    }

+

+    /**

+     * Gets the array2 d.

+     * 

+     * @param scape the scape

+     * 

+     * @return the array2 d

+     */

+    public Array2D getArray2D(Scape scape) {

+        if (scape.getSpace() instanceof Array2D) {

+            return (Array2D) scape.getSpace();

+        } else {

+            if (scape.getPrototypeAgent() instanceof Scape) {

+                for (Object subScape : scape) {

+                    return getArray2D((Scape) subScape);

+                }

+            }

+        }

+        return null;

+    }

+

+    /**

+     * @param graph

+     * @return

+     * @see org.eclipse.amp.agf.gef.IGraphProvider#getAdjacencyMap(java.lang.Object)

+     */

+    public HashMap getAdjacencyMap(Object scape) {

+        return ((Graph) ((Scape) scape).getSpace()).getAdjacencyMap();

+    }

+

+    /**

+     * @param graph

+     * @param source

+     * @return

+     * @see org.eclipse.amp.agf.gef.IGraphProvider#getNeighborsFor(java.lang.Object, java.lang.Object)

+     */

+    public List getNeighborsFor(Object scape, Object source) {

+        return ((Graph) ((Scape) scape).getSpace()).getNeighborsFor((Node) source);

+    }

+

+    /**

+     * @param graph

+     * @return

+     * @see org.eclipse.amp.agf.gef.IGraphProvider#isGraph(java.lang.Object)

+     */

+    public boolean isGraph(Object graph) {

+        return graph instanceof Graph || graph instanceof Scape && ((Scape) graph).getSpace() instanceof Graph;

+    }

+

+    /**

+     * @param hasIterable

+     * @return

+     * @see org.eclipse.amp.axf.core.ICompositionProvider#getIteratable(java.lang.Object)

+     */

+    public Iterable getIteratable(Object object) {

+        return (Scape) getUnwrapped(object);

+    }

+

+    /**

+     * @param parent

+     * @return

+     * @see org.eclipse.amp.axf.core.ICompositionProvider#getList(java.lang.Object)

+     */

+    @SuppressWarnings("unchecked")

+    public List getList(Object parent) {

+        Scape scape = (Scape) getUnwrapped(parent);

+        if (scape.isRoot()) {

+            List use = new ArrayList(scape);

+            List hosts = new ArrayList();

+            List graphs = new ArrayList();

+            for (Object agent : scape) {

+                if (((Scape) agent).getPrototypeAgent() instanceof HostCell) {

+                    hosts.add(agent);

+                }

+                if (((Scape) agent).getSpace() instanceof Graph) {

+                    graphs.add(agent);

+                }

+                if (((Scape) agent).getSpace() instanceof Singleton) {

+                    use.remove(agent);

+                }

+            }

+            // Exchange order so that hosts always show up on bottom

+            use.removeAll(hosts);

+            use.addAll(0, hosts);

+            // Exchange order so that graphs always show up on top

+            use.removeAll(graphs);

+            use.addAll(graphs.size(), graphs);

+            return use;

+        } else if (scape.getSpace() instanceof List) {

+            return (List) scape.getSpace();

+        }

+        return new ArrayList(scape);

+    }

+

+    /**

+     * @param parent

+     * @return

+     * @see org.eclipse.amp.axf.core.ICompositionProvider#isMutable(java.lang.Object)

+     */

+    public boolean isMutable(Object parent) {

+        Scape scape = (Scape) getUnwrapped(parent);

+        return scape.getSpace().isMutable() && !scape.isRoot();

+    }

+

+    public Object getParent(Object member) {

+        return ((Agent) getUnwrapped(member)).getScape();

+    }

+

+    public boolean isChildrenComposition(Object parent) {

+        return parent instanceof Scape && ((Scape) parent).getPrototypeAgent() instanceof Scape;

+    }

+

+    /**

+     * @param listener

+     * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)

+     */

+    public void addListener(ILabelProviderListener listener) {

+    }

+

+    /**

+     * 

+     * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()

+     */

+    public void dispose() {

+    }

+

+    /**

+     * @param element

+     * @param property

+     * @return

+     * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)

+     */

+    public boolean isLabelProperty(Object element, String property) {

+        return false;

+    }

+

+    /**

+     * @param listener

+     * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)

+     */

+    public void removeListener(ILabelProviderListener listener) {

+    }

+

+    public Object getUnwrapped(Object object) {

+        if (object instanceof ScapeWrapperModel) {

+            return ((ScapeWrapperModel) object).getScape();

+        }

+        return object;

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapeTreeMemberProvider.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapeTreeMemberProvider.java
new file mode 100644
index 0000000..d41026d
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/AscapeTreeMemberProvider.java
@@ -0,0 +1,73 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+ */

+package org.eclipse.amp.escape.ascape.adapt;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.ascape.model.HostCell;

+import org.ascape.model.Scape;

+import org.ascape.model.space.Graph;

+import org.ascape.model.space.Singleton;

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class AscapeTreeMemberProvider.

+ */

+public class AscapeTreeMemberProvider extends AscapeProvider {

+

+    /**

+     * @param parent

+     * @return

+     * @see org.eclipse.amp.axf.core.ICompositionProvider#getList(java.lang.Object)

+     */

+    @SuppressWarnings("unchecked")

+    public List getList(Object parent) {

+        if (parent instanceof Scape) {

+            Scape scape = (Scape) parent;

+            List use = new ArrayList(scape);

+            List hosts = new ArrayList();

+            List graphs = new ArrayList();

+            for (Object agent : scape) {

+                Scape memberScape = (Scape) agent;

+                if (memberScape.getPrototypeAgent() instanceof HostCell) {

+                    hosts.add(memberScape);

+                }

+                if (memberScape.getSpace() instanceof Graph) {

+                    graphs.add(memberScape);

+                }

+                if (memberScape.getSpace() instanceof Singleton) {

+                    use.remove(memberScape);

+                }

+            }

+            // Exchange order so that hosts always show up on bottom

+            use.removeAll(hosts);

+            // Exchange order so that graphs always show up on top

+            use.removeAll(graphs);

+            return use;

+        }

+        return null;

+    }

+

+    /**

+     * @param hasIterable

+     * @return

+     * @see org.eclipse.amp.axf.core.ICompositionProvider#isMutable(java.lang.Object)

+     */

+    public boolean isMutable(Object hasIterable) {

+        return true;

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/BeanPropertySource.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/BeanPropertySource.java
new file mode 100644
index 0000000..aef91b7
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/BeanPropertySource.java
@@ -0,0 +1,344 @@
+/**

+ * 

+ */

+package org.eclipse.amp.escape.ascape.adapt;

+

+import java.beans.IntrospectionException;

+import java.beans.Introspector;

+import java.beans.PropertyChangeListener;

+import java.beans.PropertyChangeSupport;

+import java.io.IOException;

+import java.io.ObjectInputStream;

+import java.lang.reflect.InvocationTargetException;

+import java.lang.reflect.Method;

+import java.util.ArrayList;

+import java.util.HashMap;

+import java.util.List;

+import java.util.Map;

+

+import org.ascape.util.PropertyAccessor;

+import org.eclipse.amp.agf.IPropertyChangeProvider;

+import org.eclipse.jface.viewers.CellEditor;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.ui.views.properties.ComboBoxPropertyDescriptor;

+import org.eclipse.ui.views.properties.IPropertyDescriptor;

+import org.eclipse.ui.views.properties.IPropertySource;

+import org.eclipse.ui.views.properties.IPropertySource2;

+import org.eclipse.ui.views.properties.PropertyDescriptor;

+import org.eclipse.ui.views.properties.TextPropertyDescriptor;

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class BeanPropertySource.

+ */

+public class BeanPropertySource implements IPropertySource, IPropertySource2, IPropertyChangeProvider {

+

+    Object source;

+

+    Class stopClass;

+

+    IPropertyDescriptor[] eclipseDescriptors;

+

+    Map<Method, java.beans.PropertyDescriptor> descriptorsSet;

+

+    transient protected PropertyChangeSupport listeners = new PropertyChangeSupport(this);

+

+    /**

+     * Instantiates a new bean property source.

+     * 

+     * @param source the source

+     */

+    public BeanPropertySource(Object source) {

+        super();

+        this.source = source;

+        createDescriptors();

+    }

+

+    /**

+     * Instantiates a new bean property source.

+     * 

+     * @param source the source

+     * @param stopClass the stop class

+     */

+    public BeanPropertySource(Object source, Class stopClass) {

+        super();

+        this.source = source;

+        this.stopClass = stopClass;

+        createDescriptors();

+    }

+

+    /**

+     * @return

+     * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()

+     */

+    public Object getEditableValue() {

+        return source;

+    }

+

+    /**

+     * @return

+     * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()

+     */

+    public IPropertyDescriptor[] getPropertyDescriptors() {

+        if (eclipseDescriptors == null) {

+            createDescriptors();

+            // Arrays.sort(eclipseDescriptors, new Comparator() {

+            // public int compare(Object o1, Object o2) {

+            // java.beans.PropertyDescriptor p1 = ((PropertyDescriptor) o1);

+            // PropertyDescriptor p2 = ((PropertyDescriptor) o2);

+            // if (PropertyAccessor.isWriteable(p1) &&

+            // !PropertyAccessor.isWriteable(p2)) {

+            // return -1;

+            // } else if (PropertyAccessor.isWriteable(p2) &&

+            // !PropertyAccessor.isWriteable(p1)) {

+            // return 1;

+            // }

+            // return p1.getName().compareTo(p2.getName());

+            // }

+            // });

+

+        }

+        return eclipseDescriptors;

+    }

+

+    static Map<Method, PropertyDescriptor> descriptorLibrary = new HashMap<Method, PropertyDescriptor>();

+

+    static final PropertyDescriptor dummy = new PropertyDescriptor("dummy", "dummy");

+

+    /**

+     * Creates the descriptor.

+     * 

+     * @param id the id

+     * @param beanDescr the bean descr

+     * 

+     * @return the i property descriptor

+     */

+    IPropertyDescriptor createDescriptor(Method id, java.beans.PropertyDescriptor beanDescr) {

+        PropertyDescriptor desc = getDescriptor(id);

+        if (desc == null) {

+            Class<?> propertyType = beanDescr.getPropertyType();

+            final Object[] enumValues = propertyType.getEnumConstants();

+            if (propertyType.isArray()) {

+                desc = dummy;

+            } else if (enumValues != null) {

+                String[] valueNames = new String[enumValues.length];

+                for (int i = 0; i < enumValues.length; i++) {

+                    final Enum<?> en = (Enum<?>) enumValues[i];

+                    valueNames[i] = en.toString();

+                }

+                desc = new ComboBoxPropertyDescriptor(id, PropertyAccessor.getLongName(beanDescr), valueNames);

+                desc.setCategory("Attributes");

+            } else if (propertyType.isPrimitive()) {

+                if (beanDescr.getWriteMethod() != null) {

+                    if (propertyType == Boolean.TYPE) {

+                        desc = new ComboBoxPropertyDescriptor(id, PropertyAccessor.getLongName(beanDescr),

+                            new String[] {

+                            "true", "false" });

+                    } else {

+                        desc = new TextPropertyDescriptor(id, PropertyAccessor.getLongName(beanDescr));

+                    }

+                    desc.setCategory("Attributes");

+                    desc.setDescription("The value for " + id.getName());

+                } else {

+                    if (propertyType == Boolean.TYPE) {

+                        desc = new ComboBoxPropertyDescriptor(id, PropertyAccessor.getLongName(beanDescr),

+                            new String[] {

+                            "true", "false" }) {

+

+                            @Override

+                            public CellEditor createPropertyEditor(Composite parent) {

+                                return null;

+                            }

+                        };

+                    } else {

+                        desc = new PropertyDescriptor(id, PropertyAccessor.getLongName(beanDescr));

+                    }

+                    desc.setCategory("Values");

+                }

+            } else {

+                desc = new PropertyDescriptor(id, PropertyAccessor.getLongName(beanDescr));

+                desc.setCategory("Model");

+            }

+            descriptorLibrary.put(id, desc);

+        }

+        return desc != dummy ? desc : null;

+    }

+

+    private PropertyDescriptor getDescriptor(Method id) {

+        return descriptorLibrary.get(id);

+    }

+

+    private void createDescriptors() {

+        descriptorsSet = new HashMap<Method, java.beans.PropertyDescriptor>();

+        if (source != null) {

+            try {

+                java.beans.PropertyDescriptor[] beansDescriptors;

+                beansDescriptors = Introspector.getBeanInfo(source.getClass(), stopClass).getPropertyDescriptors();

+                List<IPropertyDescriptor> descrs = new ArrayList<IPropertyDescriptor>();

+                for (int i = 0; i < beansDescriptors.length; i++) {

+                    java.beans.PropertyDescriptor beanDescr = beansDescriptors[i];

+                    Method id = beanDescr.getReadMethod();

+                    if (id != null) {

+                        IPropertyDescriptor descr = createDescriptor(id, beanDescr);

+                        if (descr != null) {

+                            descrs.add(descr);

+                            descriptorsSet.put(id, beanDescr);

+                        }

+                    }

+                }

+                eclipseDescriptors = descrs.toArray(new IPropertyDescriptor[descrs.size()]);

+            } catch (IntrospectionException e) {

+                throw new RuntimeException(e);

+            }

+        } else {

+            eclipseDescriptors = new IPropertyDescriptor[0];

+        }

+    }

+

+    /**

+     * Gets the value.

+     * 

+     * @param descriptor the descriptor

+     * 

+     * @return the value

+     */

+    public Object getValue(java.beans.PropertyDescriptor descriptor) {

+        return PropertyAccessor.getValue(source, descriptor);

+    }

+

+    /**

+     * @param id

+     * @return

+     * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)

+     */

+    public Object getPropertyValue(Object id) {

+        java.beans.PropertyDescriptor descriptor = descriptorsSet.get(id);

+        final Object[] enumValues = descriptor.getPropertyType().getEnumConstants();

+        if (enumValues != null) {

+            for (int i = 0; i < enumValues.length; i++) {

+                final Enum<?> en = (Enum<?>) enumValues[i];

+                if (en.toString() == getValue(descriptor).toString()) {

+                    return i;

+                }

+            }

+            return -1;

+        } else if (descriptor.getPropertyType() == Boolean.TYPE) {

+            if ((Boolean) getValue(descriptor)) {

+                return 0;

+            } else {

+                return 1;

+            }

+        } else {

+            return PropertyAccessor.getAsText(source, descriptor);

+        }

+    }

+

+    /**

+     * @param id

+     * @return

+     * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)

+     */

+    public boolean isPropertySet(Object id) {

+        return false;

+    }

+

+    /**

+     * Sets the as object.

+     * 

+     * @param descriptor the descriptor

+     * @param value the value

+     * 

+     * @throws InvocationTargetException the invocation target exception

+     * @throws IllegalArgumentException the illegal argument exception

+     */

+    public void setAsObject(java.beans.PropertyDescriptor descriptor, Object value) throws InvocationTargetException,

+    IllegalArgumentException {

+        Object[] args = new Object[] { value };

+        try {

+            descriptor.getWriteMethod().invoke(source, args);

+        } catch (IllegalAccessException e) {

+            throw new RuntimeException("Set as text won't work for property " + descriptor.getName()

+                                       + ", access too restricted: " + e);

+        }

+    }

+

+    /**

+     * @param id

+     * @param value

+     * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)

+     */

+    public void setPropertyValue(Object id, Object value) {

+        try {

+            java.beans.PropertyDescriptor descriptor = descriptorsSet.get(id);

+            Object oldValue;

+            final Object[] enumValues = descriptor.getPropertyType().getEnumConstants();

+            if (enumValues != null) {

+                oldValue = getValue(descriptor);

+                setAsObject(descriptor, enumValues[(Integer) value]);

+            } else if (descriptor.getPropertyType() == Boolean.TYPE) {

+                oldValue = getValue(descriptor);

+                if (getValue(descriptor) == Integer.valueOf(0)) {

+                    setAsObject(descriptor, true);

+                } else {

+                    setAsObject(descriptor, false);

+                }

+            } else {

+                oldValue = PropertyAccessor.getAsText(source, descriptor);

+                PropertyAccessor.setAsText(source, (String) value, descriptor);

+            }

+            firePropertyChange(((Method) id).toString(), oldValue, value);

+        } catch (IllegalArgumentException e) {

+            throw new RuntimeException(e);

+        } catch (InvocationTargetException e) {

+            throw new RuntimeException(e);

+        }

+    }

+

+    /**

+     * @param id

+     * @return

+     * @see org.eclipse.ui.views.properties.IPropertySource2#isPropertyResettable(java.lang.Object)

+     */

+    public boolean isPropertyResettable(Object id) {

+        return false;

+    }

+

+    /**

+     * @param l

+     * @see org.eclipse.amp.agf.IPropertyChangeProvider#addPropertyChangeListener(java.beans.PropertyChangeListener)

+     */

+    public void addPropertyChangeListener(PropertyChangeListener l) {

+        listeners.addPropertyChangeListener(l);

+    }

+

+    /**

+     * Fire property change.

+     * 

+     * @param id the id

+     * @param old the old

+     * @param newValue the new value

+     */

+    protected void firePropertyChange(String id, Object old, Object newValue) {

+        listeners.firePropertyChange(id, old, newValue);

+    }

+

+    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {

+        in.defaultReadObject();

+        listeners = new PropertyChangeSupport(this);

+    }

+

+    /**

+     * @param l

+     * @see org.eclipse.amp.agf.IPropertyChangeProvider#removePropertyChangeListener(java.beans.PropertyChangeListener)

+     */

+    public void removePropertyChangeListener(PropertyChangeListener l) {

+        listeners.removePropertyChangeListener(l);

+    }

+

+    /**

+     * @param id

+     * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)

+     */

+    public void resetPropertyValue(Object id) {

+    }

+}
\ No newline at end of file
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/HostFilter.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/HostFilter.java
new file mode 100644
index 0000000..1ab6d51
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/adapt/HostFilter.java
@@ -0,0 +1,35 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors: 

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+*/

+package org.eclipse.amp.escape.ascape.adapt;

+

+import org.eclipse.jface.viewers.IFilter;

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class HostFilter.

+ */

+public class HostFilter implements IFilter {

+

+    /**

+     * @param object

+     * @return

+     * @see org.eclipse.jface.viewers.IFilter#select(java.lang.Object)

+     */

+    public boolean select(Object object) {

+        return true;// ((Scape) object).getPrototypeAgent() instanceof HostCell;

+    }

+

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/gef/CellOccupantEditPart.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/gef/CellOccupantEditPart.java
new file mode 100644
index 0000000..9af55c4
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/gef/CellOccupantEditPart.java
@@ -0,0 +1,43 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2009 Metascape, LLC.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: 
+ *   Metascape - Initial API and Implementation
+ *
+ * </copyright>
+ *
+*/
+package org.eclipse.amp.escape.ascape.gef;
+
+import org.ascape.model.Cell;
+import org.eclipse.amp.agf.gef.AgentEditPart;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Shape;
+import org.eclipse.swt.graphics.Color;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class CellOccupantEditPart.
+ */
+public class CellOccupantEditPart extends AgentEditPart {
+
+    /**
+     * @param figure
+     * @return
+     * @see org.eclipse.amp.agf.gef.GenericEditPart#buildFigure(org.eclipse.draw2d.IFigure)
+     */
+    @Override
+    protected IFigure buildFigure(IFigure figure) {
+        if (figure == null) {
+            figure = shapeOval();
+        }
+        ((Shape) figure).setBackgroundColor((Color) ((Cell) getModel()).getPlatformColor());
+        return figure;
+    }
+}
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/gef/HostCellEditPart.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/gef/HostCellEditPart.java
new file mode 100644
index 0000000..977e52c
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/gef/HostCellEditPart.java
@@ -0,0 +1,45 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors: 

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+*/

+package org.eclipse.amp.escape.ascape.gef;

+

+import org.ascape.model.Cell;

+import org.eclipse.amp.agf.gef.AgentEditPart;

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.swt.graphics.Color;

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class HostCellEditPart.

+ */

+public class HostCellEditPart extends AgentEditPart {

+

+    /**

+     * @param figure

+     * @return

+     * @see org.eclipse.amp.agf.gef.GenericEditPart#buildFigure(org.eclipse.draw2d.IFigure)

+     */

+    @Override

+    protected IFigure buildFigure(IFigure figure) {

+        if (figure == null) {

+            figure = shapeRectangle();

+        }

+        Color platformColor = (Color) ((Cell) getModel()).getPlatformColor();

+        ((Shape) figure).setForegroundColor(platformColor);

+        ((Shape) figure).setBackgroundColor(platformColor);

+        return figure;

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/wrap/ModelWrapperScapeListener.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/wrap/ModelWrapperScapeListener.java
new file mode 100644
index 0000000..7090b71
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/wrap/ModelWrapperScapeListener.java
@@ -0,0 +1,179 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors: 

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+*/

+package org.eclipse.amp.escape.ascape.wrap;

+

+import java.util.TooManyListenersException;

+

+import org.ascape.model.Scape;

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

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

+import org.eclipse.amp.axf.core.ILifeCycleListener;

+import org.eclipse.amp.axf.core.IModel;

+import org.eclipse.amp.axf.core.IStateListener;

+import org.eclipse.amp.axf.core.LifeCycleState;

+

+// TODO: Auto-generated Javadoc

+/**

+ * The listener interface for receiving modelWrapperScape events. The class that is interested in processing a

+ * modelWrapperScape event implements this interface, and the object created with that class is registered with a

+ * component using the component's <code>addModelWrapperScapeListener<code> method. When

+ * the modelWrapperScape event occurs, that object's appropriate

+ * method is invoked.

+ * 

+ * @see ModelWrapperScapeEvent

+ */

+public class ModelWrapperScapeListener extends DefaultScapeListener {

+

+    /**

+     * 

+     */

+    private static final long serialVersionUID = 1L;

+

+    IModel model;

+    IStateListener wrapped;

+

+    /**

+     * Instantiates a new model wrapper scape listener.

+     * 

+     * @param model the model

+     * @param scape the scape

+     * @param wrapped the wrapped

+     */

+    public ModelWrapperScapeListener(IModel model, Scape scape, ILifeCycleListener wrapped) {

+        this.model = model;

+        this.scape = scape;

+        this.wrapped = wrapped;

+        if (model == null) {

+            throw new RuntimeException("Model cannot be null.");

+        }

+        if (scape == null) {

+            throw new RuntimeException("Scape cannot be null.");

+        }

+        if (wrapped == null) {

+            throw new RuntimeException("Wrapped listener cannot be null." + wrapped + " for " + scape);

+        }

+    }

+

+    /**

+     * @param scapeEvent

+     * @throws TooManyListenersException

+     * @see org.ascape.model.event.DefaultScapeListener#scapeAdded(org.ascape.model.event.ScapeEvent)

+     */

+    public void scapeAdded(ScapeEvent scapeEvent) throws TooManyListenersException {

+        wrapped.stateChange(LifeCycleState.OBSERVED, model);

+        super.scapeAdded(scapeEvent);

+    }

+

+    /**

+     * @param scapeEvent

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

+     */

+    public void scapeClosing(ScapeEvent scapeEvent) {

+        wrapped.stateChange(LifeCycleState.ENDING, model);

+        super.scapeClosing(scapeEvent);

+    }

+

+    /**

+     * @param scapeEvent

+     * @see org.ascape.model.event.DefaultScapeListener#scapeInitialized(org.ascape.model.event.ScapeEvent)

+     */

+    public void scapeInitialized(ScapeEvent scapeEvent) {

+        wrapped.stateChange(LifeCycleState.INITIALIZE, model);

+    }

+

+    /**

+     * @param scapeEvent

+     * @see org.ascape.model.event.DefaultScapeListener#scapeIterated(org.ascape.model.event.ScapeEvent)

+     */

+    public void scapeIterated(ScapeEvent scapeEvent) {

+        wrapped.stateChange(LifeCycleState.UPDATE, model);

+    }

+

+    /**

+     * @param scapeEvent

+     * @see org.ascape.model.event.DefaultScapeListener#scapeRemoved(org.ascape.model.event.ScapeEvent)

+     */

+    public void scapeRemoved(ScapeEvent scapeEvent) {

+        wrapped.stateChange(LifeCycleState.END, model);

+        super.scapeRemoved(scapeEvent);

+    }

+

+    /**

+     * @param scapeEvent

+     * @see org.ascape.model.event.DefaultScapeListener#scapeSetup(org.ascape.model.event.ScapeEvent)

+     */

+    public void scapeSetup(ScapeEvent scapeEvent) {

+        wrapped.stateChange(LifeCycleState.CREATE, model);

+    }

+

+    /**

+     * @param scapeEvent

+     * @see org.ascape.model.event.DefaultScapeListener#scapeStarted(org.ascape.model.event.ScapeEvent)

+     */

+    public void scapeStarted(ScapeEvent scapeEvent) {

+        wrapped.stateChange(LifeCycleState.START, model);

+    }

+

+    /**

+     * @param scapeEvent

+     * @see org.ascape.model.event.DefaultScapeListener#scapeStopped(org.ascape.model.event.ScapeEvent)

+     */

+    public void scapeStopped(ScapeEvent scapeEvent) {

+        wrapped.stateChange(LifeCycleState.STOP, model);

+    }

+

+    /**

+     * @return

+     * @see org.ascape.model.event.DefaultScapeListener#getScape()

+     */

+    public Scape getScape() {

+        return scape;

+    }

+

+    /**

+     * @return

+     * @see org.ascape.model.event.DefaultScapeListener#isGraphic()

+     */

+    public boolean isGraphic() {

+        return false;

+    }

+

+    /**

+     * @return

+     * @see org.ascape.model.event.DefaultScapeListener#isLifeOfScape()

+     */

+    public boolean isLifeOfScape() {

+        return false;

+    }

+

+    /**

+     * @return

+     * @see org.ascape.model.event.DefaultScapeListener#getName()

+     */

+    public String getName() {

+        return wrapped.toString() + " Wrapped";

+    }

+

+    /**

+     * Clones this object.

+     * 

+     * @return the object

+     */

+    public Object clone() {

+        ModelWrapperScapeListener clone = (ModelWrapperScapeListener) super.clone();

+        return clone;

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/wrap/ScapeWrapperModel.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/wrap/ScapeWrapperModel.java
new file mode 100644
index 0000000..cb43723
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/wrap/ScapeWrapperModel.java
@@ -0,0 +1,279 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+ */

+package org.eclipse.amp.escape.ascape.wrap;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashMap;

+import java.util.Map;

+

+import org.ascape.model.Scape;

+import org.eclipse.amp.agf.gef.ModelFactoryProvider;

+import org.eclipse.amp.axf.core.IEngine;

+import org.eclipse.amp.axf.core.ILifeCycleListener;

+import org.eclipse.amp.axf.core.IModel;

+import org.eclipse.amp.axf.core.IObservationProvider;

+import org.eclipse.amp.escape.ascape.adapt.AscapePartFactory;

+import org.eclipse.amp.escape.ascape.adapt.AscapePartTreeFactory;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.gef.EditPartFactory;

+import org.eclipse.jface.viewers.ILabelProviderListener;

+

+

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class ScapeWrapperModel.

+ */

+public class ScapeWrapperModel implements IModel, ModelFactoryProvider, IAdaptable {

+

+    Scape scape;

+

+    IModel model;

+

+    EditPartFactory factory;

+

+    EditPartFactory treeFactory;

+

+    Collection<ILifeCycleListener> listeners = new ArrayList<ILifeCycleListener>();

+

+    Map<ILifeCycleListener, ModelWrapperScapeListener> wrapperForListener = new HashMap<ILifeCycleListener, ModelWrapperScapeListener>();

+

+    /**

+     * Instantiates a new scape wrapper model.

+     * 

+     * @param scape the scape

+     */

+    public ScapeWrapperModel(Scape scape) {

+        super();

+        this.scape = scape;

+        if (!scape.isRoot()) {

+            model = new ScapeWrapperModel(scape.getRoot());

+        } else {

+            model = this;

+        }

+    }

+

+    /**

+     * @return

+     * @see org.eclipse.amp.axf.core.IModel#getName()

+     */

+    public String getName() {

+        return scape.getName();

+    }

+

+    /**

+     * @return

+     * @see org.eclipse.amp.axf.core.IModel#getPeriod()

+     */

+    public int getPeriod() {

+        return scape.getPeriod();

+    }

+

+    /**

+     * Gets the root model.

+     * 

+     * @return the root model

+     */

+    public IObservationProvider getRootModel() {

+        return model;

+    }

+

+    /**

+     * @return

+     * @see org.eclipse.amp.axf.core.IModel#getEngine()

+     */

+    public IEngine getEngine() {

+        return (IEngine) scape.getRunner();

+    }

+

+    /**

+     * @return

+     * @see org.eclipse.amp.axf.core.IModel#getStopPeriod()

+     */

+    public int getStopPeriod() {

+        return scape.getStopPeriod();

+    }

+

+    /**

+     * @return

+     * @see org.eclipse.amp.axf.core.IModel#getTimeDescription()

+     */

+    public String getTimeDescription() {

+        return scape.getPeriodDescription();

+    }

+

+    /**

+     * @param listener

+     * @see org.eclipse.amp.axf.core.IObservationProvider#addModelListener(org.eclipse.amp.axf.core.ILifeCycleListener)

+     */

+    public void addModelListener(final ILifeCycleListener listener) {

+        new Thread() {

+            public void run() {

+                listeners.add(listener);

+                if (!(listener instanceof ScapeWrapperModelListener)) {

+                    ModelWrapperScapeListener wrapper = new ModelWrapperScapeListener(ScapeWrapperModel.this, scape,

+                                                                                      listener);

+                    scape.addView(wrapper);

+                    wrapperForListener.put(listener, wrapper);

+                }

+            };

+        }.start();

+    }

+

+    /**

+     * @return

+     * @see org.eclipse.amp.axf.core.IObservationProvider#getModelListeners()

+     */

+    public Collection<ILifeCycleListener> getModelListeners() {

+        return listeners;

+    }

+

+    /**

+     * @param listener

+     * @see org.eclipse.amp.axf.core.IObservationProvider#removeModelListener(org.eclipse.amp.axf.core.ILifeCycleListener)

+     */

+    public void removeModelListener(final ILifeCycleListener listener) {

+        new Thread() {

+            public void run() {

+                listeners.remove(listener);

+                if (listener instanceof ScapeWrapperModelListener) {

+                    scape.removeScapeListener(((ScapeWrapperModelListener) listener).getWrapped());

+                }

+                ModelWrapperScapeListener wrapper = wrapperForListener.get(listener);

+                if (wrapper != null) {

+                    scape.removeScapeListener(wrapper);

+                }

+                listener.observationEnd(ScapeWrapperModel.this);

+            }

+        }.start();

+    }

+

+    /**

+     * @return

+     * @see org.eclipse.amp.axf.core.IObservationProvider#isInitialized()

+     */

+    public boolean isInitialized() {

+        return scape.isInitialized();

+    }

+

+    /**

+     * Gets the scape.

+     * 

+     * @return the scape

+     */

+    public Scape getScape() {

+        return scape;

+    }

+

+    /**

+     * @return

+     * @see org.eclipse.amp.agf.gef.ModelFactoryProvider#getEditPartFactory()

+     */

+    public EditPartFactory getEditPartFactory() {

+        if (factory == null) {

+            if (scape instanceof ModelFactoryProvider) {

+                factory = ((ModelFactoryProvider) scape).getEditPartFactory();

+            }

+            if (factory == null) {

+                factory = new AscapePartFactory();

+            }

+        }

+        return factory;

+    }

+

+    /**

+     * @return

+     * @see org.eclipse.amp.agf.gef.ModelFactoryProvider#getEditPartTreeFactory()

+     */

+    public EditPartFactory getEditPartTreeFactory() {

+        if (treeFactory == null) {

+            if (getScape() instanceof ModelFactoryProvider) {

+                treeFactory = ((ModelFactoryProvider) getScape()).getEditPartTreeFactory();

+            }

+            if (treeFactory == null) {

+                treeFactory = new AscapePartTreeFactory();

+            }

+        }

+        return treeFactory;

+    }

+

+

+    /**

+     * @param key

+     * @return

+     * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)

+     */

+    public Object getAdapter(Class key) {

+        if (key == Scape.class) {

+            return scape;

+        }

+        return null;

+    }

+

+    /**

+     * Gets the text.

+     * 

+     * @param element the element

+     * 

+     * @return the text

+     */

+    public String getText(Object element) {

+        // TODO Auto-generated method stub

+        return null;

+    }

+

+    /**

+     * Adds the listener.

+     * 

+     * @param listener the listener

+     */

+    public void addListener(ILabelProviderListener listener) {

+        // TODO Auto-generated method stub

+

+    }

+

+    /**

+     * Dispose.

+     */

+    public void dispose() {

+        // TODO Auto-generated method stub

+

+    }

+

+    /**

+     * Checks if is label property.

+     * 

+     * @param element the element

+     * @param property the property

+     * 

+     * @return true, if is label property

+     */

+    public boolean isLabelProperty(Object element, String property) {

+        // TODO Auto-generated method stub

+        return false;

+    }

+

+    /**

+     * Removes the listener.

+     * 

+     * @param listener the listener

+     */

+    public void removeListener(ILabelProviderListener listener) {

+        // TODO Auto-generated method stub

+

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/wrap/ScapeWrapperModelListener.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/wrap/ScapeWrapperModelListener.java
new file mode 100644
index 0000000..0281ff9
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape/src/org/eclipse/amp/escape/ascape/wrap/ScapeWrapperModelListener.java
@@ -0,0 +1,145 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors: 

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+*/

+package org.eclipse.amp.escape.ascape.wrap;

+

+import java.util.TooManyListenersException;

+

+import org.ascape.model.Scape;

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

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

+import org.eclipse.amp.axf.core.ILifeCycleListener;

+import org.eclipse.amp.axf.core.IObservationProvider;

+

+// TODO: Auto-generated Javadoc

+/**

+ * The listener interface for receiving scapeWrapperModel events. The class that is interested in processing a

+ * scapeWrapperModel event implements this interface, and the object created with that class is registered with a

+ * component using the component's <code>addScapeWrapperModelListener<code> method. When

+ * the scapeWrapperModel event occurs, that object's appropriate

+ * method is invoked.

+ * 

+ * @see ScapeWrapperModelEvent

+ */

+public class ScapeWrapperModelListener implements ILifeCycleListener {

+

+    Scape scape;

+    ScapeListener wrapped;

+

+    /**

+     * Instantiates a new scape wrapper model listener.

+     * 

+     * @param scape the scape

+     * @param wrapped the wrapped

+     */

+    public ScapeWrapperModelListener(Scape scape, ScapeListener wrapped) {

+        this.scape = scape;

+        this.wrapped = wrapped;

+    }

+

+    /**

+     * @param model

+     * @see org.eclipse.amp.axf.core.ILifeCycleListener#observing(org.eclipse.amp.axf.core.IObservationProvider)

+     */

+    public void observing(IObservationProvider model) {

+        try {

+            wrapped.scapeAdded(new ScapeEvent(scape, ScapeEvent.REPORT_ADDED));

+        } catch (TooManyListenersException e) {

+            throw new RuntimeException(e);

+        }

+    }

+

+    /**

+     * @param key

+     * @param updated

+     * @see org.eclipse.amp.axf.core.IStateListener#stateChange(java.lang.Object, java.lang.Object)

+     */

+    public void stateChange(Object key, Object updated) {

+    }

+

+    /**

+     * @param model

+     * @see org.eclipse.amp.axf.core.ILifeCycleListener#observationEnding(org.eclipse.amp.axf.core.IObservationProvider)

+     */

+    public void observationEnding(IObservationProvider model) {

+        wrapped.scapeClosing(new ScapeEvent(scape, ScapeEvent.REPORT_ADDED));

+    }

+

+    /**

+     * @param model

+     * @see org.eclipse.amp.axf.core.ILifeCycleListener#observeInitialize(org.eclipse.amp.axf.core.IObservationProvider)

+     */

+    public void observeInitialize(IObservationProvider model) {

+        wrapped.scapeClosing(new ScapeEvent(scape, ScapeEvent.REPORT_INITIALIZED));

+    }

+

+    /**

+     * @param model

+     * @see org.eclipse.amp.axf.core.ILifeCycleListener#observeUpdate(org.eclipse.amp.axf.core.IObservationProvider)

+     */

+    public void observeUpdate(IObservationProvider model) {

+        wrapped.scapeClosing(new ScapeEvent(scape, ScapeEvent.REPORT_ITERATE));

+    }

+

+    /**

+     * @param model

+     * @see org.eclipse.amp.axf.core.ILifeCycleListener#observationEnd(org.eclipse.amp.axf.core.IObservationProvider)

+     */

+    public void observationEnd(IObservationProvider model) {

+        wrapped.scapeClosing(new ScapeEvent(scape, ScapeEvent.REPORT_REMOVED));

+    }

+

+    /**

+     * @param model

+     * @see org.eclipse.amp.axf.core.ILifeCycleListener#observeCreate(org.eclipse.amp.axf.core.IObservationProvider)

+     */

+    public void observeCreate(IObservationProvider model) {

+        wrapped.scapeClosing(new ScapeEvent(scape, ScapeEvent.REQUEST_SETUP));

+    }

+

+    /**

+     * @param model

+     * @see org.eclipse.amp.axf.core.ILifeCycleListener#observeStart(org.eclipse.amp.axf.core.IObservationProvider)

+     */

+    public void observeStart(IObservationProvider model) {

+        wrapped.scapeClosing(new ScapeEvent(scape, ScapeEvent.REPORT_START));

+    }

+

+    /**

+     * @param model

+     * @see org.eclipse.amp.axf.core.ILifeCycleListener#observeStop(org.eclipse.amp.axf.core.IObservationProvider)

+     */

+    public void observeStop(IObservationProvider model) {

+        wrapped.scapeClosing(new ScapeEvent(scape, ScapeEvent.REPORT_STOP));

+    }

+

+    /**

+     * Gets the wrapped.

+     * 

+     * @return the wrapped

+     */

+    public ScapeListener getWrapped() {

+        return wrapped;

+    }

+

+    /**

+     * @return

+     * @see java.lang.Object#toString()

+     */

+    @Override

+    public String toString() {

+        return wrapped + " Wrapper";

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/.classpath b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/.classpath
new file mode 100644
index 0000000..a820a25
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/.classpath
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src" />
+	<classpathentry kind="src" path="res" />
+	<classpathentry kind="con"
+		path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
+		<accessrules>
+			<accessrule kind="nonaccessible" pattern="javax/swing/**" />
+			<accessrule kind="nonaccessible" pattern="java/awt/**" />
+		</accessrules>
+	</classpathentry>
+	<classpathentry kind="con"
+		path="org.eclipse.pde.core.requiredPlugins" />
+	<classpathentry kind="output" path="bin" />
+</classpath>
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/.project b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/.project
new file mode 100644
index 0000000..8f4af3f
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.amp.escape.ide</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/META-INF/MANIFEST.MF b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..12c1f0c
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/META-INF/MANIFEST.MF
@@ -0,0 +1,37 @@
+Manifest-Version: 1.0
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-Vendor: %providerName
+Bundle-SymbolicName: org.eclipse.amp.escape.ide;singleton:=true
+Bundle-Version: 0.2.0.qualifier
+Bundle-Activator: org.eclipse.amp.escape.ide.EscapeIDEPlugin
+Bundle-ClassPath: .
+Bundle-ActivationPolicy: lazy
+Eclipse-BuddyPolicy: dependent
+Export-Package: org.eclipse.amp.escape.command,
+ org.eclipse.amp.escape.ide
+Require-Bundle: org.eclipse.core.resources;bundle-version="3.5.0",
+ org.eclipse.core.runtime;bundle-version="3.5.0",
+ org.eclipse.jdt.core;bundle-version="3.5.0",
+ org.apache.commons.lang;bundle-version="2.4.0",
+ org.eclipse.jface;bundle-version="3.5.0",
+ org.eclipse.ui.views;bundle-version="3.4.0",
+ org.eclipse.emf.ecore;bundle-version="2.5.0",
+ org.eclipse.emf.common.ui;bundle-version="2.5.0",
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ org.eclipse.debug.ui;bundle-version="3.5.0",
+ org.eclipse.jdt.debug.ui;bundle-version="3.4.0",
+ org.eclipse.core.expressions;bundle-version="3.4.100",
+ org.eclipse.jdt.launching;bundle-version="3.5.0",
+ org.eclipse.emf.java;bundle-version="2.5.0",
+ org.eclipse.ui.console;bundle-version="3.4.0",
+ org.eclipse.ui.editors;bundle-version="3.5.0",
+ org.ascape.core,
+ org.eclipse.amp.axf.views,
+ org.eclipse.amp.axf.ide,
+ org.eclipse.amp.agf.core,
+ org.eclipse.amp.agf.chart;bundle-version="0.2.0",
+ org.eclipse.amp.agf.zest;bundle-version="0.2.0",
+ org.ascape.ui.amp;bundle-version="0.2.0",
+ org.eclipse.amp.escape.ascape;bundle-version="0.2.0"
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/build.properties b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/build.properties
new file mode 100644
index 0000000..2c7335a
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/build.properties
@@ -0,0 +1,12 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               build.properties,\
+               .project,\
+               .classpath,\
+               plugin.properties,\
+               icons/,\
+               res/
+source.. = src/
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/delete_edit.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/delete_edit.gif
new file mode 100755
index 0000000..9e14298
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/delete_edit.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/refresh.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/refresh.gif
new file mode 100755
index 0000000..1f55189
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/refresh.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/resume_co.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/resume_co.gif
new file mode 100755
index 0000000..8652797
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/resume_co.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/run_exc.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/run_exc.gif
new file mode 100755
index 0000000..a252bf0
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/run_exc.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/step_current.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/step_current.gif
new file mode 100755
index 0000000..319fe8d
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/step_current.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/suspend_co.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/suspend_co.gif
new file mode 100755
index 0000000..e47777b
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/suspend_co.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/term_sbook.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/term_sbook.gif
new file mode 100755
index 0000000..4f3dcba
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/dtool16/term_sbook.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/delete_edit.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/delete_edit.gif
new file mode 100755
index 0000000..b6922ac
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/delete_edit.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/execute.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/execute.gif
new file mode 100644
index 0000000..afb6fa9
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/execute.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/execute_headless.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/execute_headless.gif
new file mode 100644
index 0000000..b7f03d5
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/execute_headless.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/experiment_editor.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/experiment_editor.gif
new file mode 100644
index 0000000..0ca77b2
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/experiment_editor.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/generic_agent.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/generic_agent.gif
new file mode 100644
index 0000000..0f07692
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/generic_agent.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/graph.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/graph.gif
new file mode 100644
index 0000000..bba3dbc
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/graph.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/parameter_file.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/parameter_file.gif
new file mode 100644
index 0000000..6e63b99
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/parameter_file.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/parameter_view.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/parameter_view.gif
new file mode 100644
index 0000000..d11c996
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/parameter_view.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/refresh.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/refresh.gif
new file mode 100755
index 0000000..3ca04d0
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/refresh.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/resume_co.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/resume_co.gif
new file mode 100644
index 0000000..16f4e25
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/resume_co.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/run_exc.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/run_exc.gif
new file mode 100644
index 0000000..57f4102
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/run_exc.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/run_parameter.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/run_parameter.gif
new file mode 100644
index 0000000..65c6853
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/run_parameter.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/runtoline_co.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/runtoline_co.gif
new file mode 100644
index 0000000..ec2c353
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/runtoline_co.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/step_current.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/step_current.gif
new file mode 100755
index 0000000..e3a7cc7
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/step_current.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/suspend_co.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/suspend_co.gif
new file mode 100644
index 0000000..161e3f5
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/suspend_co.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/term_sbook.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/term_sbook.gif
new file mode 100644
index 0000000..69c31f4
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/term_sbook.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/test_clipboard.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/test_clipboard.gif
new file mode 100644
index 0000000..96028b3
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/test_clipboard.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/test_file.gif b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/test_file.gif
new file mode 100644
index 0000000..79a554e
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/icons/etool16/test_file.gif
Binary files differ
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/plugin.properties b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/plugin.properties
new file mode 100644
index 0000000..4ee53bc
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/plugin.properties
@@ -0,0 +1,32 @@
+# /**

+#  * <copyright>

+#  *

+#  * Copyright (c) 2009 Metascape, LLC.

+#  * All rights reserved.   This program and the accompanying materials

+#  * are made available under the terms of the Eclipse Public License v1.0

+#  * which accompanies this distribution, and is available at

+#  * http://www.eclipse.org/legal/epl-v10.html

+#  * 

+#  * Contributors: 

+#  *   Metascape - Initial API and Implementation

+#  *

+#  * </copyright>

+#  *

+#  * $Id: plugin.properties

+#  */

+

+

+# ====================================================================

+# To code developer:

+#   Do NOT change the properties between this line and the

+#   "%%% END OF TRANSLATED PROPERTIES %%%" line.

+#   Make a new property name, append to the end of the file and change

+#   the code to use the new property.

+# ====================================================================

+

+# ====================================================================

+# %%% END OF TRANSLATED PROPERTIES %%%

+# ====================================================================

+

+pluginName = Escape IDE Integration

+providerName = Eclipse.org

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/plugin.xml b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/plugin.xml
new file mode 100644
index 0000000..92b5bad
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/plugin.xml
@@ -0,0 +1,265 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+
+<plugin>

+	<extension point="org.eclipse.ui.commands">

+		<command categoryId="org.eclipse.amp.axf.ui" id="org.eclipse.amp.escape.runtime.execute"

+			name="Execute">

+		</command>
+		<command categoryId="org.eclipse.amp.axf.ui"
+			id="org.eclipse.amp.escape.runtime.executeHeadless" name="Execute Headless">
+		</command>
+		<command categoryId="org.eclipse.amp.axf.ui"
+			id="org.eclipse.amp.escape.runtime.executeParam" name="Execute">
+		</command>
+		<command categoryId="org.eclipse.amp.axf.ui"
+			id="org.eclipse.amp.escape.runtime.executeParamHeadless" name="Execute Headless">
+		</command>
+	</extension>

+	<extension point="org.eclipse.ui.menus">

+		<menuContribution locationURI="popup:org.eclipse.ui.popup.any">

+			<command commandId="org.eclipse.amp.escape.runtime.execute"

+				icon="icons/etool16/execute.gif" style="push" tooltip="Execute the model.">

+				<visibleWhen checkEnabled="true">

+				</visibleWhen>

+			</command>
+			<command commandId="org.eclipse.amp.escape.runtime.executeHeadless"
+				icon="icons/etool16/execute_headless.gif" style="push" tooltip="Execute the model.">
+				<visibleWhen checkEnabled="true">
+				</visibleWhen>
+			</command>

+		</menuContribution>

+		<menuContribution
+			locationURI="toolbar:org.eclipse.amp.escape.ide.launch?after=additions">
+			<command commandId="org.eclipse.amp.escape.runtime.execute"
+				icon="icons/etool16/execute.gif" label="Execute" style="push"
+				tooltip="Load and start an Escape model.">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.amp.escape.allowexecute">
+					</reference>
+				</visibleWhen>
+			</command>
+			<command commandId="org.eclipse.amp.escape.runtime.executeHeadless"
+				icon="icons/etool16/execute_headless.gif" label="Execute Headless" style="push"
+				tooltip="Load and start an Escape model in non-graphical mode.">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.amp.escape.allowexecute">
+					</reference>
+				</visibleWhen>
+			</command>
+			<command commandId="org.eclipse.amp.escape.runtime.executeParam"
+				icon="icons/etool16/execute.gif" label="Execute" style="push"
+				tooltip="Load and start an Escape model.">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.amp.escape.allowexecuteParam">
+					</reference>
+				</visibleWhen>
+			</command>
+			<command commandId="org.eclipse.amp.escape.runtime.executeParamHeadless"
+				icon="icons/etool16/execute_headless.gif" label="Execute Headless" style="push"
+				tooltip="Load and start an Escape model in non-graphical mode.">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.amp.escape.allowexecuteParam">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>

+		<menuContribution locationURI="menu:org.eclipse.amp.axf.ui.menu?after=additions">
+			<command commandId="org.eclipse.amp.escape.runtime.execute"
+				icon="icons/etool16/execute.gif" label="Execute" style="push"
+				tooltip="Load and start an Escape model.">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.amp.escape.allowexecute">
+					</reference>
+				</visibleWhen>
+			</command>
+			<command commandId="org.eclipse.amp.escape.runtime.executeHeadless"
+				icon="icons/etool16/execute_headless.gif" label="Execute Headless" style="push"
+				tooltip="Load and start an Escape model in non-graphical mode.">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.amp.escape.allowexecute">
+					</reference>
+				</visibleWhen>
+			</command>

+		</menuContribution>
+		
+		<menuContribution locationURI="popup:org.eclipse.ui.popup.any">
+			<command commandId="org.eclipse.amp.escape.runtime.executeParam"
+				icon="icons/etool16/execute.gif" style="push" tooltip="Execute the model.">
+				<visibleWhen checkEnabled="true">
+				</visibleWhen>
+			</command>
+			<command commandId="org.eclipse.amp.escape.runtime.executeParamHeadless"
+				icon="icons/etool16/execute_headless.gif" style="push" tooltip="Execute the model.">
+				<visibleWhen checkEnabled="true">
+				</visibleWhen>
+			</command>
+		</menuContribution>
+		<menuContribution locationURI="menu:org.eclipse.amp.axf.ui.menu?after=additions">
+			<command commandId="org.eclipse.amp.escape.runtime.executeParam"
+				icon="icons/etool16/execute.gif" label="Execute" style="push"
+				tooltip="Load and start an Escape model.">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.amp.escape.allowexecuteParam">
+					</reference>
+				</visibleWhen>
+			</command>
+			<command commandId="org.eclipse.amp.escape.runtime.executeParamHeadless"
+				icon="icons/etool16/execute_headless.gif" label="Execute Headless" style="push"
+				tooltip="Load and start an Escape model in non-graphical mode.">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.amp.escape.allowexecuteParam">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+  <menuContribution
+        locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
+     <toolbar
+           id="org.eclipse.amp.escape.ide.launch">
+     </toolbar>
+  </menuContribution>
+	</extension>

+	<extension point="org.eclipse.core.expressions.definitions">

+		<definition id="org.eclipse.amp.escape.allowexecute">

+			<or>

+				<with variable="selection">

+					<iterate ifEmpty="false">
+							<adapt type="org.eclipse.jdt.core.ICompilationUnit">
+							</adapt>
+					</iterate>

+				</with>

+			</or>

+		</definition>

+		<definition id="org.eclipse.amp.escape.allowexecuteParam">
+			<or>
+				<with variable="selection">
+					<iterate ifEmpty="false">
+							<adapt type="org.eclipse.core.resources.IResource">
+								<or>
+									<test property="org.eclipse.core.resources.name" value="*.apar">
+									</test>
+								</or>
+							</adapt>
+					</iterate>
+				</with>
+			</or>
+		</definition>

+	</extension>

+	<extension point="org.eclipse.ui.handlers">

+		<handler class="org.eclipse.amp.escape.command.ExecuteJavaHandler"

+			commandId="org.eclipse.amp.escape.runtime.execute">

+			<activeWhen>

+				<reference definitionId="org.eclipse.amp.escape.allowexecute">

+				</reference>

+			</activeWhen>

+			<enabledWhen>

+				<reference definitionId="org.eclipse.amp.escape.allowexecute">

+				</reference>

+			</enabledWhen>

+		</handler>
+		<handler class="org.eclipse.amp.escape.command.ExecuteJavaHeadlessHandler"
+			commandId="org.eclipse.amp.escape.runtime.executeHeadless">
+			<activeWhen>
+				<reference definitionId="org.eclipse.amp.escape.allowexecute">
+				</reference>
+			</activeWhen>
+			<enabledWhen>
+				<reference definitionId="org.eclipse.amp.escape.allowexecute">
+				</reference>
+			</enabledWhen>
+		</handler>
+		<handler class="org.eclipse.amp.escape.command.ExecuteParameterHandler"
+			commandId="org.eclipse.amp.escape.runtime.executeParam">
+			<activeWhen>
+				<reference definitionId="org.eclipse.amp.escape.allowexecuteParam">
+				</reference>
+			</activeWhen>
+			<enabledWhen>
+				<reference definitionId="org.eclipse.amp.escape.allowexecuteParam">
+				</reference>
+			</enabledWhen>
+		</handler>
+		<handler class="org.eclipse.amp.escape.command.ExecuteParameterHeadlessHandler"
+			commandId="org.eclipse.amp.escape.runtime.executeParamHeadless">
+			<activeWhen>
+				<reference definitionId="org.eclipse.amp.escape.allowexecuteParam">
+				</reference>
+			</activeWhen>
+			<enabledWhen>
+				<reference definitionId="org.eclipse.amp.escape.allowexecuteParam">
+				</reference>
+			</enabledWhen>
+		</handler>
+	</extension>

+	<extension point="org.eclipse.ui.bindings">

+		<key commandId="org.eclipse.amp.escape.runtime.execute" contextId="org.eclipse.ui.contexts.window"

+			schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" sequence="M1+L">

+		</key>
+	</extension>

+	<extension point="org.eclipse.ui.editors">
+		<editor class="org.eclipse.ui.editors.text.TextEditor" default="false"
+			extensions="apar" icon="icons/etool16/run_parameter.gif" id="org.eclipse.amp.escape.ide.parameterEditor"
+			name="Parameter Editor">
+		</editor>
+		<editor class="org.eclipse.ui.editors.text.TextEditor" default="false"
+			extensions="atest" icon="icons/etool16/test_file.gif" id="org.eclipse.amp.escape.ide.testEditor"
+			name="Test Editor">
+		</editor>
+	</extension>
+	<extension point="org.eclipse.ui.newWizards">
+		<wizard category="org.eclipse.amp.wizards"
+			class="org.eclipse.amp.escape.ide.ParameterFileWizard" icon="icons/etool16/run_parameter.gif"
+			id="org.eclipse.amp.escape.wizards.newParameters" name="Parameter File">
+		</wizard>
+		<wizard category="org.eclipse.amp.wizards" class="org.eclipse.amp.escape.ide.TestRunFileWizard"
+			icon="icons/etool16/test_file.gif" id="org.eclipse.amp.escape.wizards.newTest"
+			name="Test File">
+		</wizard>
+	</extension>
+
+	<extension point="org.eclipse.ui.perspectiveExtensions">
+		<perspectiveExtension targetID="org.eclipse.amp.axf.ExecutionPerspective">
+			<view id="org.eclipse.amp.view.GEFView:*" ratio=".8"
+				relationship="right" relative="org.eclipse.ui.editorss" visible="false">
+			</view>
+			<view id="org.eclipse.amp.view.GEF3DView:*" ratio=".8"
+				relationship="right" relative="org.eclipse.ui.editorss" visible="false">
+			</view>
+			<view id="org.eclipse.amp.escape.view.GraphicsView:*" ratio=".8"
+				relationship="right" relative="org.eclipse.ui.editorss" visible="false">
+			</view>
+			<view id="org.eclipse.amp.view.TreeView:*" ratio=".8"
+				relationship="right" relative="org.eclipse.ui.editorss" visible="false">
+			</view>
+			<viewShortcut id="org.eclipse.amp.escape.view.GraphicsView">
+			</viewShortcut>
+			<viewShortcut id="org.eclipse.amp.view.TreeView">
+			</viewShortcut>
+		</perspectiveExtension>
+		<!--
+			<perspectiveExtension targetID="???"> <perspectiveShortcut
+			id="org.eclipse.amp.axf.ExecutionPerspective"> </perspectiveShortcut>
+			<newWizardShortcut id="org.eclipse.amp.escape.wizards.newProject">
+			</newWizardShortcut> <newWizardShortcut
+			id="org.eclipse.amp.escape.wizards.newParameters">
+			</newWizardShortcut> <newWizardShortcut
+			id="org.eclipse.amp.escape.wizards.newTest"> </newWizardShortcut>
+			</perspectiveExtension> <perspectiveExtension
+			targetID="org.eclipse.jdt.ui.JavaPerspective"> <perspectiveShortcut
+			id="org.eclipse.amp.axf.ExecutionPerspective"> </perspectiveShortcut>
+			</perspectiveExtension>
+		-->
+	</extension>
+	<extension point="org.eclipse.ui.editors">
+		<editor class="org.eclipse.ui.editors.text.TextEditor" default="false"
+			extensions="apar" icon="icons/etool16/run_parameter.gif" id="org.eclipse.amp.escape.ide.ParameterEditor"
+			name="Model Parameters">
+		</editor>
+		<editor class="org.eclipse.ui.editors.text.TextEditor" default="false"
+			extensions="atest" icon="icons/etool16/test_file.gif" id="org.eclipse.amp.escape.ide.TestEditor"
+			name="Model Test">
+		</editor>
+	</extension>
+</plugin>
+
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/res/ESCAPE_MANIFEST_TEMPLATE.MF b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/res/ESCAPE_MANIFEST_TEMPLATE.MF
new file mode 100644
index 0000000..35153a5
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/res/ESCAPE_MANIFEST_TEMPLATE.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %project_name%
+Bundle-SymbolicName: %project_symbol%
+Bundle-Version: 1.0.0
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.ascape.core;bundle-version="5.1.0",
+ org.eclipse.ui;bundle-version="3.5.0",
+ org.eclipse.amp.agf.chart;bundle-version="0.2.0",
+ org.eclipse.amp.agf.core;bundle-version="0.2.0",
+ org.eclipse.amp.axf.core;bundle-version="0.2.0",
+ org.eclipse.amp.axf.views;bundle-version="0.2.0",
+ org.eclipse.amp.escape.ascape;bundle-version="0.2.0",
+ org.eclipse.amp.escape.ascape.chart;bundle-version="0.2.0",
+ org.apache.commons.lang,
+ org.ascape.ui.amp;bundle-version="0.2.0"
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/res/build_template.properties b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/res/build_template.properties
new file mode 100644
index 0000000..afea5f8
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/res/build_template.properties
@@ -0,0 +1,3 @@
+source.. = srcgen/
+bin.includes = META-INF/,\
+               .
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/command/ExecuteHandler.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/command/ExecuteHandler.java
new file mode 100644
index 0000000..e685238
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/command/ExecuteHandler.java
@@ -0,0 +1,129 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+ */

+package org.eclipse.amp.escape.command;

+

+import org.ascape.runtime.Runner;

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

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.expressions.EvaluationContext;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.core.runtime.IStatus;

+import org.eclipse.core.runtime.Status;

+import org.eclipse.core.runtime.jobs.Job;

+import org.eclipse.jface.viewers.IStructuredSelection;

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class ExecuteHandler.

+ */

+public abstract class ExecuteHandler extends ResourceHandler {

+

+    private boolean headless;

+

+    /**

+     * Instantiates a new execute handler.

+     * 

+     * @param headless the headless

+     */

+    public ExecuteHandler(boolean headless) {

+        super();

+        this.headless = headless;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see org.eclipse.amp.escape.command.ResourceHandler#execute(java.lang.Object, java.lang.String)

+     */

+    public void execute(final Object executed, String name) throws ExecutionException {

+        final EclipseEscapeRunner eclipseRunner = createRunner();

+        Job escapeRun = new Job("Run " + name) {

+            protected IStatus run(IProgressMonitor monitor) {

+                setMonitor(monitor);

+                eclipseRunner.setMonitor(monitor);

+                try {

+                    executeOpen(eclipseRunner, executed, monitor);

+

+                } catch (RuntimeException e) {

+                    setMonitor(null);

+                    throw e;

+                }

+                setMonitor(null);

+                return eclipseRunner.getFinishStatus();

+            }

+

+            protected void canceling() {

+                eclipseRunner.setFinishStatus(Status.CANCEL_STATUS);

+                eclipseRunner.closeFinally();

+            }

+        };

+        escapeRun.setPriority(Job.LONG);

+        escapeRun.schedule();

+    }

+

+    /**

+     * Execute open.

+     * 

+     * @param eclipseRunner the eclipse runner

+     * @param executed the executed

+     * @param monitor the monitor

+     */

+    protected abstract void executeOpen(final EclipseEscapeRunner eclipseRunner, final Object executed,

+            IProgressMonitor monitor);

+

+    /**

+     * Creates the runner.

+     * 

+     * @return the eclipse escape runner

+     */

+    protected EclipseEscapeRunner createRunner() {

+        // TODO this is still static on Ascape side..trouble if we attempt to run headless and non-headless jobs

+        Runner.setDisplayGraphics(!headless);

+        return new EclipseEscapeRunner();

+    }

+

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see org.eclipse.core.commands.AbstractHandler#setEnabled(java.lang.Object)

+     */

+    @Override

+    public void setEnabled(Object evaluationContext) {

+        EvaluationContext ctx = (EvaluationContext) evaluationContext;

+        Object selection = ctx.getVariable("selection");

+        if (selection instanceof IStructuredSelection) {

+            boolean enabled = false;

+            IStructuredSelection ss = (IStructuredSelection) selection;

+            if (ss != null && ss.getFirstElement() != null) {

+                Object fs = ss.getFirstElement();

+                enabled = handleSelect(fs);

+            }

+            // } else if (selection instanceof ITextSelection) {

+            // enabled = handleSelect(selection);

+            setBaseEnabled(enabled);

+        }

+    }

+

+    /**

+     * Handle select.

+     * 

+     * @param sel the sel

+     * 

+     * @return true, if successful

+     */

+    protected abstract boolean handleSelect(Object sel);

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/command/ExecuteJavaHandler.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/command/ExecuteJavaHandler.java
new file mode 100644
index 0000000..a0856d8
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/command/ExecuteJavaHandler.java
@@ -0,0 +1,106 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+ */

+package org.eclipse.amp.escape.command;

+

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

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.jdt.core.ICompilationUnit;

+import org.eclipse.jdt.core.IType;

+import org.eclipse.jdt.core.ITypeHierarchy;

+import org.eclipse.jdt.core.JavaModelException;

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class ExecuteJavaHandler.

+ */

+public class ExecuteJavaHandler extends ExecuteHandler {

+

+    /**

+     * Instantiates a new execute java handler.

+     * 

+     * @param headless the headless

+     */

+    public ExecuteJavaHandler(boolean headless) {

+        super(headless);

+    }

+

+    /**

+     * Instantiates a new execute java handler.

+     */

+    public ExecuteJavaHandler() {

+        super(false);

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see org.eclipse.amp.escape.command.ExecuteHandler#executeOpen(org.eclipse.amp.escape.ide.EclipseEscapeRunner,

+     * java.lang.Object, org.eclipse.core.runtime.IProgressMonitor)

+     */

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

+        // brain dead Java strikes again..

+        if (executed instanceof ICompilationUnit) {

+            ICompilationUnit javaUnit = (ICompilationUnit) executed;

+            IType javaClass = javaUnit.findPrimaryType();

+            eclipseRunner.open(javaUnit.getResource().getProject(), javaClass.getFullyQualifiedName(), javaClass

+                               .getElementName());

+        }

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see org.eclipse.amp.escape.command.ExecuteHandler#handleSelect(java.lang.Object)

+     */

+    protected boolean handleSelect(Object sel) {

+        return sel instanceof ICompilationUnit && isSupertype(sel, "org.ascape.model.Scape");

+    }

+

+    /**

+     * Checks if is supertype.

+     * 

+     * @param type the type

+     * @param className the class name

+     * 

+     * @return true, if is supertype

+     */

+    public boolean isSupertype(IType type, String className) {

+        try {

+            if (type != null) {

+                ITypeHierarchy h = type.newTypeHierarchy(null);

+                for (IType superType : h.getAllSupertypes(type)) {

+                    if (superType.getFullyQualifiedName().equals(className)) {

+                        return true;

+                    }

+                }

+            }

+        } catch (JavaModelException e) {

+        }

+        return false;

+    }

+

+    /**

+     * Checks if is supertype.

+     * 

+     * @param sel the sel

+     * @param className the class name

+     * 

+     * @return true, if is supertype

+     */

+    public boolean isSupertype(Object sel, String className) {

+        return isSupertype(((ICompilationUnit) sel).findPrimaryType(), className);

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/command/ExecuteJavaHeadlessHandler.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/command/ExecuteJavaHeadlessHandler.java
new file mode 100644
index 0000000..c17b600
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/command/ExecuteJavaHeadlessHandler.java
@@ -0,0 +1,30 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+ */

+package org.eclipse.amp.escape.command;

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class ExecuteJavaHeadlessHandler.

+ */

+public class ExecuteJavaHeadlessHandler extends ExecuteJavaHandler {

+

+    /**

+     * Instantiates a new execute java headless handler.

+     */

+    public ExecuteJavaHeadlessHandler() {

+        super(true);

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/command/ExecuteParameterHandler.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/command/ExecuteParameterHandler.java
new file mode 100644
index 0000000..7553923
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/command/ExecuteParameterHandler.java
@@ -0,0 +1,82 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors: 

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+*/

+package org.eclipse.amp.escape.command;

+

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

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

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

+import org.eclipse.core.runtime.IPath;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.core.runtime.Status;

+import org.eclipse.ui.statushandlers.StatusManager;

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class ExecuteParameterHandler.

+ */

+public class ExecuteParameterHandler extends ExecuteHandler {

+

+    /**

+     * Instantiates a new execute parameter handler.

+     * 

+     * @param headless

+     *        the headless

+     */

+    public ExecuteParameterHandler(boolean headless) {

+        super(headless);

+    }

+

+    /**

+     * Instantiates a new execute parameter handler.

+     */

+    public ExecuteParameterHandler() {

+        super(false);

+    }

+

+    /* (non-Javadoc)

+     * @see org.eclipse.amp.escape.command.ExecuteHandler#executeOpen(org.eclipse.amp.escape.ide.EclipseEscapeRunner, java.lang.Object, org.eclipse.core.runtime.IProgressMonitor)

+     */

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

+        if (executed instanceof IResource) {

+            IResource modelResource = (IResource) executed;

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

+                IPath loc = modelResource.getLocation();

+                ParameterReader pr = new ParameterReader(modelResource.getProject(), loc);

+                String modelClass = pr.modelClassNameFromFile();

+                if (modelClass == null) {

+                    StatusManager.getManager()

+                    .handle(

+                            new Status(Status.ERROR, "org.eclipse.amp.escape.runtime",

+                                       "No model class specified in: " + modelResource.getName()

+                                       + ". First line should be \"model + TAB + class path + \"."),

+                                       StatusManager.SHOW);

+                    return;

+                }

+                String runName = pr.titleFromFile();

+                String[] args = ParameterReader.argsFromPV(pr.pvsFromFile());

+                eclipseRunner.open(modelResource.getProject(), modelClass, runName, args);

+            }

+        }

+    }

+

+    /* (non-Javadoc)

+     * @see org.eclipse.amp.escape.command.ExecuteHandler#handleSelect(java.lang.Object)

+     */

+    protected boolean handleSelect(Object sel) {

+        return sel instanceof IResource && ((IResource) sel).getFileExtension() != null

+            && ((IResource) sel).getFileExtension().equals("apar");

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/command/ExecuteParameterHeadlessHandler.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/command/ExecuteParameterHeadlessHandler.java
new file mode 100644
index 0000000..36f739d
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/command/ExecuteParameterHeadlessHandler.java
@@ -0,0 +1,30 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+ */

+package org.eclipse.amp.escape.command;

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class ExecuteParameterHeadlessHandler.

+ */

+public class ExecuteParameterHeadlessHandler extends ExecuteParameterHandler {

+

+    /**

+     * Instantiates a new execute parameter headless handler.

+     */

+    public ExecuteParameterHeadlessHandler() {

+        super(true);

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/command/ResourceHandler.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/command/ResourceHandler.java
new file mode 100644
index 0000000..b32e4eb
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/command/ResourceHandler.java
@@ -0,0 +1,124 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors: 

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+*/

+package org.eclipse.amp.escape.command;

+

+import java.util.Iterator;

+

+import org.eclipse.core.commands.AbstractHandler;

+import org.eclipse.core.commands.ExecutionEvent;

+import org.eclipse.core.commands.ExecutionException;

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

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.jdt.core.ICompilationUnit;

+import org.eclipse.jface.viewers.ISelection;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.ui.handlers.HandlerUtil;

+

+// TODO: Auto-generated Javadoc

+/**

+ * Executes an arbitrary task upon a resource. Clients should override #execute(IResource).

+ * 

+ * @author milesparker

+ */

+public abstract class ResourceHandler extends AbstractHandler {

+

+    IProgressMonitor monitor;

+

+    /* (non-Javadoc)

+     * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)

+     */

+    public Object execute(ExecutionEvent event) throws ExecutionException {

+        ISelection selection = HandlerUtil.getCurrentSelection(event);

+        if (!selection.isEmpty() && selection instanceof IStructuredSelection) {

+            IStructuredSelection structuredSelection = (IStructuredSelection) selection;

+            for (Iterator<?> it = structuredSelection.iterator(); it.hasNext();) {

+                Object element = it.next();

+                if (element instanceof IResource) {

+                    IResource resource = (IResource) element;

+                    executeHandler(event, resource, resource.getName());

+                } else if (element instanceof ICompilationUnit) {

+                    ICompilationUnit unit = (ICompilationUnit) element;

+                    executeHandler(event, unit, unit.getPrimaryElement().getElementName());

+                }

+            }

+        }

+        return null;

+    }

+

+    /**

+     * Override with desired execution behavior.

+     * 

+     * @param resource

+     *        the resource

+     * 

+     * @throws ExecutionException

+     *         the execution exception

+     */

+    // TODO Is there a reason that this isn't abstract?

+    public void execute(IResource resource) throws ExecutionException {

+    }

+

+    /**

+     * Execute.

+     * 

+     * @param resource

+     *        the resource

+     * @param name

+     *        the name

+     * 

+     * @throws ExecutionException

+     *         the execution exception

+     */

+    public void execute(Object resource, String name) throws ExecutionException {

+        execute((IResource) resource);

+    }

+

+    /**

+     * Execute handler.

+     * 

+     * @param event

+     *        the event

+     * @param resource

+     *        the resource

+     * @param name

+     *        the name

+     * 

+     * @throws ExecutionException

+     *         the execution exception

+     */

+    public void executeHandler(ExecutionEvent event, Object resource, String name) throws ExecutionException {

+        execute(resource, name);

+    }

+

+    /**

+     * Gets the monitor.

+     * 

+     * @return the monitor

+     */

+    public IProgressMonitor getMonitor() {

+        return monitor;

+    }

+

+    /**

+     * Sets the monitor.

+     * 

+     * @param monitor

+     *        the new monitor

+     */

+    public void setMonitor(IProgressMonitor monitor) {

+        this.monitor = monitor;

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/AbstractFileWizard.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/AbstractFileWizard.java
new file mode 100644
index 0000000..2c481d5
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/AbstractFileWizard.java
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Dennis Hübner and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     committers of openArchitectureWare
+ *******************************************************************************/
+
+package org.eclipse.amp.escape.ide;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWizard;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+import org.eclipse.ui.ide.IDE;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Abstract file wizard modified from oAW.
+ * 
+ * @author milesparker
+ */
+abstract public class AbstractFileWizard extends Wizard implements INewWizard {
+    private WizardNewFileCreationPage page;
+    private ISelection selection;
+
+    private String fileTypeName;
+
+    private String fileExtension;
+
+    // private String fileDescription;
+
+    /**
+     * Instantiates a new abstract file wizard.
+     * 
+     * @param fileTypeName the file type name
+     * @param fileExtension the file extension
+     * @param fileDescription the file description
+     */
+    public AbstractFileWizard(String fileTypeName, String fileExtension, String fileDescription) {
+        super();
+        this.fileTypeName = fileTypeName;
+        this.fileExtension = fileExtension;
+        // this.fileDescription = fileDescription;
+        setNeedsProgressMonitor(false);
+    }
+
+    /**
+     * Gets the file extension.
+     * 
+     * @return the file extension
+     */
+    public String getFileExtension() {
+        return fileExtension;
+    }
+
+    /**
+     * Sets the file extension.
+     * 
+     * @param fileExtension the new file extension
+     */
+    public void setFileExtension(String fileExtension) {
+        this.fileExtension = fileExtension;
+    }
+
+
+    /**
+     * Adding the page to the wizard.
+     */
+    public void addPages() {
+        if (!(selection instanceof IStructuredSelection)) {
+            selection = new StructuredSelection();
+        }
+
+        page = new WizardNewFileCreationPage("New " + fileTypeName + " File", (IStructuredSelection) selection) {
+            @Override
+            protected InputStream getInitialContents() {
+                return new ByteArrayInputStream(new byte[0]);
+            }
+
+            @Override
+            public IWizardPage getPreviousPage() {
+                validatePage();// validates initial value's
+                return super.getPreviousPage();
+            }
+        };
+        page.setFileName("MyParameters." + getFileExtension());
+        page.setTitle(fileTypeName + getFileExtension() + " " + fileTypeName);
+        page.setDescription("This wizard creates a new file with *." + getFileExtension()
+                            + " extension that can be opened by the " + fileTypeName + " editor.");
+        addPage(page);
+
+    }
+
+    /**
+     * This method is called when 'Finish' button is pressed in the wizard. We will create an operation and run it using
+     * wizard as execution context.
+     * 
+     * @return true, if perform finish
+     */
+    public boolean performFinish() {
+        boolean retValue = false;
+        final IFile f = page.createNewFile();
+        if (f != null && f.exists()) {
+            doOpenFile(f);
+            retValue = true;
+        }
+        return retValue;
+    }
+
+    /**
+     * Opens given file in an editor
+     * 
+     * @param f
+     *        - File to open
+     * @param monitor
+     *        - Monitor to progress
+     */
+    private void doOpenFile(final IFile f) {
+        getShell().getDisplay().asyncExec(new Runnable() {
+            public void run() {
+                IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+                try {
+                    IDE.openEditor(page, f, true);
+                } catch (PartInitException e) {
+                }
+            }
+        });
+    }
+
+    /**
+     * We will accept the selection in the workbench to see if we can initialize from it.
+     * 
+     * @param workbench the workbench
+     * @param selection the selection
+     * 
+     * @see IWorkbenchWizard#init(IWorkbench, IStructuredSelection)
+     */
+    public void init(IWorkbench workbench, IStructuredSelection selection) {
+        this.selection = selection;
+    }
+}
\ No newline at end of file
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/EclipseEscapeRunner.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/EclipseEscapeRunner.java
new file mode 100644
index 0000000..da4069e
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/EclipseEscapeRunner.java
@@ -0,0 +1,494 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+ */

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

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.ascape.model.Agent;

+import org.ascape.model.Scape;

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

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

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

+import org.ascape.model.rule.PropogateScapeOnly;

+import org.ascape.runtime.NonGraphicRunner;

+import org.eclipse.amp.axf.core.IEngine;

+import org.eclipse.amp.axf.core.ILifeCycleListener;

+import org.eclipse.amp.axf.core.IModel;

+import org.eclipse.amp.axf.core.ITimeGranularity;

+import org.eclipse.amp.axf.core.TimeGranularity;

+import org.eclipse.amp.axf.ide.AXFWorkbenchPlugin;

+import org.eclipse.amp.axf.ide.view.DelayView;

+import org.eclipse.amp.axf.ide.view.RunMonitorView;

+import org.eclipse.amp.escape.ascape.wrap.ModelWrapperScapeListener;

+import org.eclipse.amp.escape.ascape.wrap.ScapeWrapperModel;

+import org.eclipse.amp.escape.ascape.wrap.ScapeWrapperModelListener;

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

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

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.core.runtime.IStatus;

+import org.eclipse.core.runtime.Status;

+import org.eclipse.core.runtime.jobs.Job;

+import org.eclipse.emf.common.ui.EclipseUIPlugin;

+import org.eclipse.ui.console.ConsolePlugin;

+import org.eclipse.ui.console.IConsole;

+import org.eclipse.ui.console.MessageConsole;

+import org.eclipse.ui.statushandlers.StatusManager;

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class EclipseEscapeRunner.

+ */

+public class EclipseEscapeRunner extends NonGraphicRunner implements IEngine {

+

+    private static final long serialVersionUID = 1L;

+

+    protected ProjectLoader delegateLoader;

+

+    protected IProgressMonitor modelMonitor;

+

+    IModel model;

+

+    IProject project;

+

+    private IStatus finishStatus = Status.OK_STATUS;

+

+    TimeGranularity updateGranularity = TimeGranularity.DEFAULT_GRANULARITY;

+

+    public final static long KILL_AFTER_NO_RESPONSE_TIME = 5000;

+

+    /**

+     * Open.

+     * 

+     * @param modelResource the model resource

+     * @param modelClassName the model class name

+     * @param modelName the model name

+     */

+    public void open(final IResource modelResource, final String modelClassName, String modelName) {

+        open(modelResource, modelClassName, modelName, new String[0]);

+    }

+

+    /**

+     * Open.

+     * 

+     * @param projectResource the project resource

+     * @param modelClassName the model class name

+     * @param modelName the model name

+     * @param args the args

+     */

+    public void open(final IResource projectResource, final String modelClassName, String modelName, String[] args) {

+        this.project = projectResource.getProject();

+        setStartOnOpen(false);

+        setAutoRestart(false);

+        final MessageConsole eclipseConsole = new MessageConsole("Run " + modelName, EclipseUIPlugin

+                                                                 .imageDescriptorFromPlugin(project.getName(), "icons/obj16/Escape.gif"));

+        getEnvironment().getConsole().setIMessageStream(new MessageAdapter(eclipseConsole));

+        IConsole[] consules = { eclipseConsole };

+        ConsolePlugin.getDefault().getConsoleManager().addConsoles(consules);

+        eclipseConsole.activate();

+

+        try {

+            delegateLoader = new ProjectLoader(projectResource.getProject());

+        } catch (LoaderCreationException e) {

+            StatusManager.getManager()

+            .handle(

+                    new Status(Status.WARNING, project.getName(),

+                               "Couldn't create project classloader; falling back to default loader", e));

+        }

+        Scape newAgent;

+        try {

+            newAgent = (Scape) instanceFromName(modelClassName);

+        } catch (Exception e) {

+            StatusManager.getManager().handle(

+                                              new Status(Status.ERROR, project.getName(), "Could not read class: "

+                                                         + modelClassName

+                                                         + ". Please ensure that the class exists in class path.", e),

+                                                         StatusManager.SHOW);

+            dispose();

+            return;

+        }

+        newAgent.setName(modelName);

+        setRootScape(newAgent);

+        model = new ScapeWrapperModel(getRootScape());

+        AXFWorkbenchPlugin.getDefault().getManager().register(model, this, getRootScape());

+        // getModel().addModelListener(new ModelMonitorView(modelMonitor));

+        // getModel().addModelListener(new ControlViewProxy());

+        try {

+            open(args, false);

+        } catch (RuntimeException e) {

+            dispose();

+            throw e;

+        }

+        final List<ScapeListener> newListeners = new ArrayList<ScapeListener>();

+        getRootScape().executeOnRoot(new PropogateScapeOnly() {

+            private static final long serialVersionUID = -6277857634508661314L;

+

+            @SuppressWarnings("unchecked")

+            @Override

+            public void execute(Agent agent) {

+                newListeners.addAll(((Scape) agent).getScapeListeners());

+                super.execute(agent);

+            }

+        });

+        for (ScapeListener scapeListener : newListeners) {

+            if (!(scapeListener instanceof ModelWrapperScapeListener)) {

+                ScapeWrapperModelListener listenerWrapper = new ScapeWrapperModelListener(getRootScape(), scapeListener);

+                model.addModelListener(listenerWrapper);

+            }

+            // if (scapeListener instanceof IModelPart) {

+            // ((IModelPart) scapeListener).createModelListeners();

+            // }

+        }

+        // for (IModelListener modelListener : model.getModelListeners()) {

+        // if (modelListener instanceof IModelPart) {

+        // ((IModelPart) modelListener).createModelListeners();

+        // }

+        // }

+        start();

+        while (!modelShutdown) {

+            try {

+                Thread.sleep(30L);

+            } catch (InterruptedException e) {

+            }

+        }

+        dispose();

+    }

+

+    private void dispose() {

+        if (AXFWorkbenchPlugin.getDefault().getManager() != null) {

+            AXFWorkbenchPlugin.getDefault().getManager().remove(model);

+        }

+        if (delegateLoader != null) {

+            delegateLoader.restore();

+        }

+        delegateLoader = null;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see org.ascape.runtime.Runner#start()

+     */

+    /**

+     * 

+     * @see org.ascape.runtime.Runner#start()

+     */

+    public void start() {

+        escapeRun = new Job("Run " + getModel().getName()) {

+            protected IStatus run(IProgressMonitor runMonitor) {

+                try {

+                    RunMonitorView runMonitorView = new RunMonitorView(runMonitor);

+                    getModel().addModelListener(runMonitorView);

+                    DelayView delayView = new DelayView();

+                    getModel().addModelListener(delayView);

+                    // do {

+                    try {

+                        EclipseEscapeRunner.super.run();

+                    } catch (RuntimeException e) {

+                        dispose();

+                        throw e;

+                    }

+                    // } while (isRestartRequested());

+                    getModel().removeModelListener(runMonitorView);

+                } catch (RuntimeException e) {

+                    String message = "An exception occurred: ";

+                    if (model != null) {

+                        message = "An exception occurred when running: " + getModel().getName();

+                    }

+                    StatusManager.getManager().handle(new Status(Status.ERROR, project.getName(), message, e),

+                                                      StatusManager.SHOW | StatusManager.LOG);

+                    stop();

+                }

+                return Status.OK_STATUS;

+            }

+

+            protected void canceling() {

+                close();

+            }

+        };

+        escapeRun.setPriority(Job.INTERACTIVE);

+        escapeRun.schedule();

+    }

+

+    boolean modelShutdown = false;

+

+    private Job escapeRun;

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see org.ascape.runtime.Runner#close()

+     */

+    /**

+     * 

+     * @see org.ascape.runtime.Runner#close()

+     */

+    @SuppressWarnings("deprecation")

+    @Override

+    public void close() {

+        if (!isCloseRequested()) {

+            setCloseRequested(true);

+            Thread closeThread = new Thread(this, "Close Escape Model") {

+                public void run() {

+                    EclipseEscapeRunner.super.close();

+                }

+            };

+            closeThread.start();

+        }

+        modelMonitor.setTaskName("Waiting for Close...");

+        try {

+            long elapsed = 0;

+            while (isCloseRequested() && getModelThread() != null && getModelThread().isAlive()

+                    && elapsed <= KILL_AFTER_NO_RESPONSE_TIME) {

+                if (elapsed >= KILL_AFTER_NO_RESPONSE_TIME) {

+                    modelMonitor.setTaskName("Forcing Close");

+                    EscapeIDEPlugin.warn("Couldn't close model normally, forcing stop.", null);

+                    if (escapeRun != null) {

+                        escapeRun.getThread().stop();

+                    }

+                    modelShutdown = true;

+                }

+                Thread.sleep(30);

+                elapsed += 30;

+            }

+        } catch (InterruptedException e) {

+        }

+        modelMonitor.setTaskName("Closed");

+        modelShutdown = true;

+    }

+

+    /**

+     * Gets the finish status.

+     * 

+     * @return the finish status

+     */

+    public IStatus getFinishStatus() {

+        return finishStatus;

+    }

+

+    /**

+     * Sets the finish status.

+     * 

+     * @param finishStatus the new finish status

+     */

+    public void setFinishStatus(IStatus finishStatus) {

+        this.finishStatus = finishStatus;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see org.eclipse.amp.axf.core.IEngine#getModel()

+     */

+    /**

+     * 

+     * @see org.eclipse.amp.axf.core.IEngine#getModel()

+     */

+    public IModel getModel() {

+        return model;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see org.eclipse.amp.axf.core.IEngine#getIterationsPerRedraw()

+     */

+    /**

+     * 

+     * @see org.eclipse.amp.axf.core.IEngine#getIterationsPerRedraw()

+     */

+    public int getIterationsPerRedraw() {

+        return getScape().getIterationsPerRedraw();

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see org.ascape.runtime.Runner#respondControl(org.ascape.model.event.ControlEvent)

+     */

+    /**

+     * 

+     * @see org.ascape.runtime.Runner#respondControl(org.ascape.model.event.ControlEvent)

+     */

+    public void respondControl(final org.ascape.model.event.ControlEvent control) {

+        new Thread(new Runnable() {

+            public void run() {

+                EclipseEscapeRunner.super.respondControl(control);

+            }

+        }).start();

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see org.eclipse.amp.axf.core.IEngine#control(org.eclipse.amp.axf.core.EngineControl)

+     */

+    /**

+     * 

+     * @see org.eclipse.amp.axf.core.IEngine#control(org.eclipse.amp.axf.core.EngineControl)

+     */

+    public void control(org.eclipse.amp.axf.core.EngineControl control) {

+        super.respondControl(adaptEngineControl(control));

+    }

+

+    private ControlEvent adaptEngineControl(org.eclipse.amp.axf.core.EngineControl control) {

+        int id = 0;

+        switch (control) {

+            case OPEN:

+                id = ControlEvent.REQUEST_OPEN;

+                break;

+            case START:

+                id = ControlEvent.REQUEST_START;

+                break;

+            case RESTART:

+                id = ControlEvent.REQUEST_RESTART;

+                break;

+            case STEP:

+                id = ControlEvent.REQUEST_STEP;

+                break;

+            case PAUSE:

+                id = ControlEvent.REQUEST_PAUSE;

+                break;

+            case RESUME:

+                id = ControlEvent.REQUEST_RESUME;

+                break;

+            case STOP:

+                id = ControlEvent.REQUEST_STOP;

+                break;

+            case CLOSE:

+                id = ControlEvent.REQUEST_CLOSE;

+                break;

+            case SAVE:

+                id = ControlEvent.REQUEST_SAVE;

+                break;

+            default:

+                throw new RuntimeException("Couldn't convert control: " + control);

+        }

+        return new org.ascape.model.event.ControlEvent(getScape(), id);

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see org.ascape.runtime.Runner#notify(org.ascape.model.event.ScapeEvent, org.ascape.model.event.ScapeListener)

+     */

+    /**

+     * 

+     * @see org.ascape.runtime.Runner#notify(org.ascape.model.event.ScapeEvent, org.ascape.model.event.ScapeListener)

+     */

+    public void notify(final ScapeEvent event, final ScapeListener listener) {

+        // new Thread() {

+        // public void run() {

+        listener.scapeNotification(event);

+        // }

+        // }.start();

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see org.eclipse.amp.axf.core.IEngine#setIterationsPerRedraw(int)

+     */

+    /**

+     * 

+     * @see org.eclipse.amp.axf.core.IEngine#setIterationsPerRedraw(int)

+     */

+    public void setIterationsPerRedraw(int iterations) {

+        getScape().setIterationsPerRedraw(iterations);

+    }

+

+    /**

+     * Gets the scape.

+     * 

+     * @return the scape

+     */

+    public Scape getScape() {

+        return getRootScape();

+    }

+

+    /**

+     * Gets the monitor.

+     * 

+     * @return the monitor

+     */

+    public IProgressMonitor getMonitor() {

+        return modelMonitor;

+    }

+

+    /**

+     * Sets the monitor.

+     * 

+     * @param modelMonitor the new monitor

+     */

+    public void setMonitor(IProgressMonitor modelMonitor) {

+        this.modelMonitor = modelMonitor;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see org.eclipse.amp.axf.core.IEngine#observationComplete(org.eclipse.amp.axf.core.ILifeCycleListener)

+     */

+    /**

+     * 

+     * @see org.eclipse.amp.axf.core.IEngine#observationComplete(org.eclipse.amp.axf.core.ILifeCycleListener)

+     */

+    public void observationComplete(ILifeCycleListener observer) {

+        // respondControl(new org.ascape.model.event.ControlEvent(getScape(), ControlEvent.REPORT_LISTENER_UPDATED));

+    }

+

+    /**

+     * @return

+     * @see org.eclipse.amp.axf.core.IEngine#getUpdateGranularity()

+     */

+    public ITimeGranularity getUpdateGranularity() {

+        return updateGranularity;

+    }

+

+    /**

+     * @param granularity

+     * @see org.eclipse.amp.axf.core.IEngine#setUpdateGranularity(org.eclipse.amp.axf.core.ITimeGranularity)

+     */

+    public void setUpdateGranularity(ITimeGranularity granularity) {

+        this.updateGranularity = (TimeGranularity) granularity;

+    }

+

+    // public Object getAdapter(Object adaptableObject, Class adapterType) {

+    // if (adapterType == IExecutor.class) {

+    // return runnerForModel.get(adaptableObject);

+    // } else if (adapterType == IModel.class) {

+    // return modelForRunner.get(adaptableObject);

+    // }

+    // return null;

+    // }

+    //

+    // public Class[] getAdapterList() {

+    // return new Class[]{Scape.class, IModel.class};

+    // }

+

+    // public static boolean listenerRegister(Model target, Object listener) {

+    // return registeredListeners.put(target, listener.getClass()) == null;

+    // }

+    //

+    // public static void addSingletonViewers(Model target, EditPart registor) {

+    // if (!listenerRegister(target, ControlViewProxy.class)) {

+    // model.addView(new ControlViewProxy(registor));

+    // }

+    // IStatusLineManager status =

+    // getEditorSite().getActionBars().getStatusLineManager();

+    // model.addView(new StatusLineView(status));

+    // }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/EscapeIDEPlugin.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/EscapeIDEPlugin.java
new file mode 100644
index 0000000..9e4e0c2
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/EscapeIDEPlugin.java
@@ -0,0 +1,116 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2009 Metascape, LLC.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Metascape - Initial API and Implementation
+ *
+ * </copyright>
+ *
+ */
+package org.eclipse.amp.escape.ide;
+
+import org.eclipse.core.runtime.Status;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.ui.statushandlers.StatusManager;
+import org.osgi.framework.BundleContext;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The activator class controls the plug-in life cycle.
+ */
+public class EscapeIDEPlugin extends AbstractUIPlugin {
+
+    // The plug-in ID
+    public static final String PLUGIN_ID = "org.eclipse.amp.escape.ide";
+
+    // The shared instance
+    private static EscapeIDEPlugin plugin;
+
+    /**
+     * The constructor.
+     */
+    public EscapeIDEPlugin() {
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+     */
+    /**
+     *
+     * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+     */
+    public void start(BundleContext context) throws Exception {
+        super.start(context);
+        plugin = this;
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+     */
+    /**
+     *
+     * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+     */
+    public void stop(BundleContext context) throws Exception {
+        plugin = null;
+        super.stop(context);
+    }
+
+    /**
+     * Info.
+     * 
+     * @param msg the msg
+     */
+    public static void info(String msg) {
+        StatusManager.getManager().handle(new Status(Status.INFO, "org.eclipse.amp.escape.core", msg));
+    }
+
+    /**
+     * Warn.
+     * 
+     * @param msg the msg
+     * @param e the e
+     */
+    public static void warn(String msg, Throwable e) {
+        StatusManager.getManager().handle(new Status(Status.WARNING, "org.eclipse.amp.escape.core", msg, e));
+    }
+
+    /**
+     * Err show.
+     * 
+     * @param msg the msg
+     * @param e the e
+     */
+    public static void errShow(String msg, Throwable e) {
+        StatusManager.getManager().handle(new Status(Status.ERROR, "org.eclipse.amp.escape.core", msg, e),
+                                          StatusManager.SHOW | StatusManager.LOG);
+    }
+
+    /**
+     * Err.
+     * 
+     * @param msg the msg
+     * @param e the e
+     */
+    public static void err(String msg, Throwable e) {
+        StatusManager.getManager().handle(new Status(Status.ERROR, "org.eclipse.amp.escape.core", msg, e));
+    }
+
+    /**
+     * Returns the shared instance.
+     * 
+     * @return the shared instance
+     */
+    public static EscapeIDEPlugin getDefault() {
+        return plugin;
+    }
+
+}
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/EscapeLaunchConfigurationConstants.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/EscapeLaunchConfigurationConstants.java
new file mode 100644
index 0000000..75dd24e
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/EscapeLaunchConfigurationConstants.java
@@ -0,0 +1,26 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2009 Metascape, LLC.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: 
+ *   Metascape - Initial API and Implementation
+ *
+ * </copyright>
+ *
+*/
+package org.eclipse.amp.escape.ide;
+
+/**
+ * The Interface EscapeLaunchConfigurationConstants.
+ */
+public interface EscapeLaunchConfigurationConstants {
+    
+    // must match with the launchConfigurationType id from plugin.xml
+    public static final String ESCAPE_LAUNCH_CONFIGURATION_TYPE_ID = "org.eclipse.amp.escape.launching.ui.EscapeLaunchConfigType";
+
+}
\ No newline at end of file
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/ExpectedValue.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/ExpectedValue.java
new file mode 100644
index 0000000..8a1d8e3
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/ExpectedValue.java
@@ -0,0 +1,95 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors: 

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+*/

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

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class ExpectedValue.

+ */

+public class ExpectedValue {

+    

+    /**

+     * Instantiates a new expected value.

+     * 

+     * @param measure the measure

+     * @param min the min

+     * @param max the max

+     */

+    public ExpectedValue(String measure, String min, String max) {

+        super();

+        this.measure = measure;

+        this.min = min;

+        this.max = max;

+    }

+

+    String measure;

+    String min;

+    String max;

+

+    /**

+     * Gets the measure.

+     * 

+     * @return the measure

+     */

+    public String getMeasure() {

+        return measure;

+    }

+

+    /**

+     * Sets the measure.

+     * 

+     * @param measure the new measure

+     */

+    public void setMeasure(String measure) {

+        this.measure = measure;

+    }

+

+    /**

+     * Gets the min.

+     * 

+     * @return the min

+     */

+    public String getMin() {

+        return min;

+    }

+

+    /**

+     * Sets the min.

+     * 

+     * @param min the new min

+     */

+    public void setMin(String min) {

+        this.min = min;

+    }

+

+    /**

+     * Gets the max.

+     * 

+     * @return the max

+     */

+    public String getMax() {

+        return max;

+    }

+

+    /**

+     * Sets the max.

+     * 

+     * @param max the new max

+     */

+    public void setMax(String max) {

+        this.max = max;

+    }

+}
\ No newline at end of file
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/LoaderCreationException.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/LoaderCreationException.java
new file mode 100644
index 0000000..42e457b
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/LoaderCreationException.java
@@ -0,0 +1,35 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2009 Metascape, LLC.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: 
+ *   Metascape - Initial API and Implementation
+ *
+ * </copyright>
+ *
+*/
+package org.eclipse.amp.escape.ide;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class LoaderCreationException.
+ */
+public class LoaderCreationException extends Exception {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * Instantiates a new loader creation exception.
+     * 
+     * @param message the message
+     * @param cause the cause
+     */
+    public LoaderCreationException(String message, Throwable cause) {
+        super(message, cause);
+    }
+}
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/MessageAdapter.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/MessageAdapter.java
new file mode 100644
index 0000000..817bfce
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/MessageAdapter.java
@@ -0,0 +1,61 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+ */

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

+

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

+import org.eclipse.ui.console.MessageConsole;

+import org.eclipse.ui.console.MessageConsoleStream;

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class MessageAdapter.

+ */

+public class MessageAdapter implements IMessageStream {

+    private MessageConsoleStream stream;

+

+    /**

+     * Instantiates a new message adapter.

+     * 

+     * @param eclipseConsole the eclipse console

+     */

+    public MessageAdapter(MessageConsole eclipseConsole) {

+        stream = eclipseConsole.newMessageStream();

+    }

+

+    /**

+     * 

+     * @see org.ascape.view.nonvis.IMessageStream#print(java.lang.String)

+     */

+    public void print(String message) {

+        stream.print(message);

+    }

+

+    /**

+     * 

+     * @see org.ascape.view.nonvis.IMessageStream#println()

+     */

+    public void println() {

+        stream.println();

+    }

+

+    /**

+     * 

+     * @see org.ascape.view.nonvis.IMessageStream#println(java.lang.String)

+     */

+    public void println(String message) {

+        stream.println(message);

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/ParamValue.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/ParamValue.java
new file mode 100644
index 0000000..871402c
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/ParamValue.java
@@ -0,0 +1,26 @@
+/**

+ * 

+ */

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

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class ParamValue.

+ */

+public class ParamValue {

+    

+    /**

+     * Instantiates a new param value.

+     * 

+     * @param param the param

+     * @param value the value

+     */

+    public ParamValue(String param, String value) {

+        super();

+        this.param = param;

+        this.value = value;

+    }

+

+    public String param;

+    public String value;

+}
\ No newline at end of file
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/ParameterFileWizard.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/ParameterFileWizard.java
new file mode 100644
index 0000000..3e54622
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/ParameterFileWizard.java
@@ -0,0 +1,31 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2009 Metascape, LLC.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Metascape - Initial API and Implementation
+ *
+ * </copyright>
+ *
+ */
+package org.eclipse.amp.escape.ide;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class ParameterFileWizard.
+ */
+public class ParameterFileWizard extends AbstractFileWizard {
+
+    /**
+     * Instantiates a new parameter file wizard.
+     */
+    public ParameterFileWizard() {
+        super("Escape Parameter", "apar", "Create a new Parameter file to control Escape model execution.");
+    }
+
+}
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/ParameterReader.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/ParameterReader.java
new file mode 100644
index 0000000..c190c33
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/ParameterReader.java
@@ -0,0 +1,440 @@
+/**

+ * <copyright>

+ *

+ * Copyright (c) 2009 Metascape, LLC.

+ * All rights reserved.   This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors: 

+ *   Metascape - Initial API and Implementation

+ *

+ * </copyright>

+ *

+*/

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

+

+import java.io.BufferedReader;

+import java.io.File;

+import java.io.FileInputStream;

+import java.io.IOException;

+import java.io.InputStream;

+import java.io.InputStreamReader;

+import java.util.ArrayList;

+import java.util.HashSet;

+import java.util.List;

+import java.util.NoSuchElementException;

+import java.util.Set;

+import java.util.StringTokenizer;

+

+import org.apache.commons.lang.StringUtils;

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

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

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

+import org.eclipse.core.runtime.Assert;

+import org.eclipse.core.runtime.CoreException;

+import org.eclipse.core.runtime.IPath;

+import org.eclipse.core.runtime.Path;

+

+// TODO: Auto-generated Javadoc

+/**

+ * The Class ParameterReader.

+ */

+public class ParameterReader {

+

+    String projectName;

+

+    IProject project;

+

+    IPath paramPath;

+

+    IFile eclipseFile;

+

+    String rootPathString;

+

+    /**

+     * Instantiates a new parameter reader.

+     * 

+     * @param resource the resource

+     */

+    public ParameterReader(IResource resource) {

+        this(resource.getProject(), resource.getProjectRelativePath());

+        this.eclipseFile = (IFile) resource;

+    }

+

+    /**

+     * The Constructor.

+     * 

+     * @param project the project

+     * @param paramPath the param path

+     */

+    public ParameterReader(IProject project, IPath paramPath) {

+        super();

+        this.paramPath = paramPath;

+        this.project = project;

+        paramPath = makeRelativeTo(paramPath, project.getLocation());

+        this.eclipseFile = project.getFile(paramPath);

+        if (!this.eclipseFile.exists()) {

+            throw new RuntimeException("No file exists at path: " + paramPath + " in " + project);

+        }

+        rootPathString = project.getLocation().addTrailingSeparator().toOSString();

+    }

+

+    /**

+     * Instantiates a new parameter reader.

+     * 

+     * @param projectName the project name

+     * @param path the path

+     */

+    public ParameterReader(String projectName, String path) {

+        this.paramPath = new Path(path);

+        this.projectName = projectName;

+        File file = new File(paramPath.toOSString());

+        if (!file.exists()) {

+            throw new RuntimeException("No file exists at system path: " + file);

+        }

+        int projectSegment = 0;

+        for (String segment : paramPath.segments()) {

+            if (segment.equals(projectName)) {

+                break;

+            }

+            projectSegment++;

+        }

+        rootPathString = paramPath.uptoSegment(projectSegment + 1).toOSString() + File.separator;

+    }

+

+    private static final Set<String> keywords = new HashSet<String>();

+

+    static {

+        keywords.add("model");

+        keywords.add("experiment");

+        keywords.add("comments");

+    }

+

+    // From Eclipse 3.5

+    /**

+     * Matching first segments.

+     * 

+     * @param target the target

+     * @param anotherPath the another path

+     * 

+     * @return the int

+     */

+    public static int matchingFirstSegments(IPath target, IPath anotherPath) {

+        Assert.isNotNull(anotherPath);

+        int anotherPathLen = anotherPath.segmentCount();

+        int max = Math.min(target.segments().length, anotherPathLen);

+        int count = 0;

+        for (int i = 0; i < max; i++) {

+            if (!target.segments()[i].equals(anotherPath.segment(i))) {

+                return count;

+            }

+            count++;

+        }

+        return count;

+    }

+

+    /**

+     * Make relative to.

+     * 

+     * @param target the target

+     * @param base the base

+     * 

+     * @return the i path

+     */

+    public static IPath makeRelativeTo(IPath target, IPath base) {

+        int commonLength = matchingFirstSegments(target, base);

+        IPath newPath = new Path("");

+        for (int i = 0; i < base.segmentCount() - commonLength; i++) {

+            newPath = newPath.append("../");

+        }

+        for (int i = commonLength; i < target.segmentCount(); i++) {

+            newPath = newPath.append(target.segments()[i]);

+        }

+        return newPath;

+    }

+

+    private BufferedReader createReader() {

+        InputStream is = null;

+        try {

+            if (eclipseFile != null) {

+                is = eclipseFile.getContents();

+            } else {

+                String directFilePath = paramPath.toPortableString();

+                try {

+                    File inputFile = new File(directFilePath);

+                    is = new FileInputStream(inputFile);

+                } catch (IOException e) {

+                    throw new RuntimeException("Couldn't read model file: " + directFilePath, e);

+                }

+            }

+        } catch (CoreException e) {

+            throw new RuntimeException("Couldn't read model file: " + eclipseFile.getFullPath(), e);

+        }

+        return new BufferedReader(new InputStreamReader(is));

+    }

+

+    /**

+     * Gets the relative.

+     * 

+     * @param newPath the new path

+     * 

+     * @return the relative

+     */

+    public ParameterReader getRelative(IPath newPath) {

+        if (project != null) {

+            return new ParameterReader(project, newPath);

+        } else {

+            return new ParameterReader(projectName, newPath.toOSString());

+        }

+    }

+

+    /**

+     * Gets the incorporated.

+     * 

+     * @param filePath the file path

+     * 

+     * @return the incorporated

+     */

+    public IPath getIncorporated(IPath filePath) {

+        if (!filePath.isAbsolute()) {

+            IPath curentPath = paramPath.removeLastSegments(1);

+            filePath = curentPath.append(filePath);

+        }

+        filePath = filePath.addFileExtension("apar");

+        return filePath;

+    }

+

+    /**

+     * Gets the tested.

+     * 

+     * @return the tested

+     */

+    public ParameterReader getTested() {

+        IPath testPath = null;

+        try {

+            BufferedReader reader = createReader();

+            String next = reader.readLine();

+            while (next != null) {

+                if (next.startsWith("tests")) {

+                    testPath = new Path(next.substring(6, next.length()));

+                    testPath = getIncorporated(testPath);

+                    break;

+                }

+                next = reader.readLine();

+            }

+        } catch (IOException e) {

+            throw new RuntimeException("Couldn't read model file: " + e);

+        }

+        if (testPath == null) {

+            testPath = paramPath.removeFileExtension().addFileExtension("apar");

+        }

+        return getRelative(testPath);

+    }

+

+    /**

+     * Pvs from file.

+     * 

+     * @return the list< param value>

+     */

+    public List<ParamValue> pvsFromFile() {

+        List<ParamValue> pvs = new ArrayList<ParamValue>();

+        BufferedReader reader = createReader();

+        String next;

+        try {

+            next = reader.readLine();

+            while (next != null) {

+                StringTokenizer t = new StringTokenizer(next, "\t");

+                try {

+                    String param = t.nextToken();

+                    String value = t.nextToken();

+                    value = StringUtils.replace(value, "|", rootPathString);

+                    if (param.equals("incorporates")) {

+                        IPath incorporatePath = new Path(value);

+                        incorporatePath = getIncorporated(incorporatePath);

+                        pvs = mergePV(pvs, getRelative(incorporatePath).pvsFromFile());

+                    } else {

+                        ParamValue pv = new ParamValue(param, value);

+                        pvs.add(pv);

+                    }

+                } catch (NoSuchElementException e) {

+                    System.out.println("Ignoring line: " + next);

+                }

+                next = reader.readLine();

+            }

+            return pvs;

+        } catch (IOException ioe) {

+            throw new RuntimeException("Problem reading file.", ioe);

+        }

+    }

+

+    /**

+     * Gets the constraints.

+     * 

+     * @return the constraints

+     */

+    public List<ExpectedValue> getConstraints() {

+        List<ExpectedValue> args = new ArrayList<ExpectedValue>();

+        BufferedReader reader = createReader();

+        String next;

+        try {

+            next = reader.readLine();

+            while (next != null) {

+                try {

+                    StringTokenizer t = new StringTokenizer(next, "\t");

+                    ExpectedValue ev = new ExpectedValue(t.nextToken(), t.nextToken(), t.nextToken());

+                    args.add(ev);

+                } catch (NoSuchElementException e) {

+                    System.out.println("Ignoring line: " + next);

+                }

+                next = reader.readLine();

+            }

+        } catch (IOException e1) {

+            throw new RuntimeException(e1);

+        }

+        return args;

+    }

+

+    /**

+     * Arg from pv.

+     * 

+     * @param pv the pv

+     * 

+     * @return the string

+     */

+    static String argFromPV(ParamValue pv) {

+        return pv.param.replaceAll(" ", "") + "=" + pv.value;

+    }

+

+    /**

+     * Args from pv.

+     * 

+     * @param pvArgs the pv args

+     * 

+     * @return the string[]

+     */

+    public static String[] argsFromPV(List<ParamValue> pvArgs) {

+        List<String> args = new ArrayList<String>();

+        for (ParamValue pv : pvArgs) {

+            if (!keywords.contains(pv.param)) {

+                args.add(argFromPV(pv));

+            }

+        }

+        return args.toArray(new String[0]);

+    }

+

+    /**

+     * Merge pv.

+     * 

+     * @param pv1 the pv1

+     * @param pv2 the pv2

+     * 

+     * @return the list< param value>

+     */

+    public static List<ParamValue> mergePV(List<ParamValue> pv1, List<ParamValue> pv2) {

+        List<ParamValue> args = new ArrayList<ParamValue>();

+        Set<String> overrides = new HashSet<String>();

+        for (ParamValue pv : pv2) {

+            overrides.add(pv.param);

+        }

+        for (ParamValue pv : pv1) {

+            if (!overrides.contains(pv.param)) {

+                args.add(pv);

+            }

+        }

+        for (ParamValue pv : pv2) {

+            args.add(pv);

+        }

+        return args;

+    }

+

+    /**

+     * Model class name from file.

+     * 

+     * @return the string

+     */

+    public String modelClassNameFromFile() {

+        List<ParamValue> pvs = pvsFromFile();

+        return valueForParam(pvs, "model");

+    }

+

+    /**

+     * Title from file.

+     * 

+     * @return the string

+     */

+    public String titleFromFile() {

+        List<ParamValue> pvs = pvsFromFile();

+        String name = valueForParam(pvs, "title");

+        if (name == null) {

+            name = paramPath.removeFileExtension().lastSegment();

+        }

+        if (name == null) {

+            throw new RuntimeException("Couldn't determine run title.");

+        }

+        return name;

+    }

+

+    /**

+     * Value for param.

+     * 

+     * @param pvs the pvs

+     * @param paramName the param name

+     * 

+     * @return the string

+     */

+    public String valueForParam(List<ParamValue> pvs, String paramName) {

+        for (ParamValue pv : pvs) {

+            if (pv.param.equalsIgnoreCase(paramName)) {

+                return pv.value;

+            }

+        }

+        return null;

+    }

+

+    /**

+     * Gets the name.

+     * 

+     * @return the name

+     */

+    public String getName() {

+        return getParamPath().removeFileExtension().lastSegment();

+    }

+

+    /**

+     * Gets the project.

+     * 

+     * @return the project

+     */

+    public IProject getProject() {

+        return project;

+    }

+

+    /**

+     * Gets the param path.

+     * 

+     * @return the param path

+     */

+    public IPath getParamPath() {

+        return paramPath;

+    }

+

+    /**

+     * Gets the file.

+     * 

+     * @return the file

+     */

+    public IFile getFile() {

+        return eclipseFile;

+    }

+

+    /**

+     * Gets the project name.

+     * 

+     * @return the project name

+     */

+    public String getProjectName() {

+        return projectName;

+    }

+}

diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/ProjectLoader.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/ProjectLoader.java
new file mode 100644
index 0000000..d0119d5
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/ProjectLoader.java
@@ -0,0 +1,98 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2009 Metascape, LLC.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: 
+ *   Metascape - Initial API and Implementation
+ *
+ * </copyright>
+ *
+*/
+package org.eclipse.amp.escape.ide;
+
+import java.io.File;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Provides class loading for a project, with a fall back to the main class-loader for all other classes. Overriding a
+ * specific class loader seems to be the only model that works. Decorator pattern does not find new classes.
+ * 
+ * @author milesparker
+ */
+public class ProjectLoader extends URLClassLoader {
+
+    IProject project;
+
+    public ClassLoader mainLoader;
+
+    /**
+     * Instantiates a new project loader.
+     * 
+     * @param project the project
+     * 
+     * @throws LoaderCreationException the loader creation exception
+     */
+    @SuppressWarnings("deprecation")
+    public ProjectLoader(IProject project) throws LoaderCreationException {
+        super(new URL[0]);
+        this.project = project;
+        try {
+            project.open(null);
+            IJavaProject javaProject = JavaCore.create(project);
+            URL[] outputURL = { new File(project.getLocation() + "/"
+                                         + javaProject.getOutputLocation().removeFirstSegments(1) + "/").toURL() };
+            addURL(outputURL[0]);
+            activate();
+        } catch (Exception e1) {
+            throw new LoaderCreationException("Couldn't load class", e1);
+        }
+    }
+
+    /**
+     * Activate.
+     * 
+     * @throws LoaderCreationException the loader creation exception
+     */
+    public void activate() throws LoaderCreationException {
+        mainLoader = Thread.currentThread().getContextClassLoader();
+        Thread.currentThread().setContextClassLoader(this);
+    }
+
+    /**
+     * Restore.
+     */
+    public void restore() {
+        Thread.currentThread().setContextClassLoader(mainLoader);
+    }
+
+    /* (non-Javadoc)
+     * @see java.lang.ClassLoader#loadClass(java.lang.String)
+     */
+    /**
+     *
+     * @see java.lang.ClassLoader#loadClass(java.lang.String)
+     */
+    @Override
+    public Class<?> loadClass(String name) throws ClassNotFoundException {
+        try {
+            return super.loadClass(name);
+        } catch (NoClassDefFoundError classNotFoundException) {
+            return mainLoader.loadClass(name);
+        } catch (ClassNotFoundException classNotFoundException) {
+            return mainLoader.loadClass(name);
+        } catch (UnsupportedClassVersionError classNotFoundException) {
+            throw new RuntimeException("Bad class: " + name, classNotFoundException);
+        }
+    }
+}
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/TestRunFileWizard.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/TestRunFileWizard.java
new file mode 100644
index 0000000..bef45fc
--- /dev/null
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/TestRunFileWizard.java
@@ -0,0 +1,30 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2009 Metascape, LLC.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: 
+ *   Metascape - Initial API and Implementation
+ *
+ * </copyright>
+ *
+*/
+package org.eclipse.amp.escape.ide;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class TestRunFileWizard.
+ */
+public class TestRunFileWizard extends AbstractFileWizard {
+
+    /**
+     * Instantiates a new test run file wizard.
+     */
+    public TestRunFileWizard() {
+        super("Escape Test", "atest", "Create a new Test file to check that execution results in expected values.");
+    }
+}