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.");
+ }
+}