Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorStéphane Bégaudeau2015-10-05 15:30:03 +0000
committerStéphane Bégaudeau2015-10-19 13:30:19 +0000
commit7d264bb9d3fdee55ade5c86084f61796d71a8cd4 (patch)
tree4ee4a7590dd4e5e89a4bec6a24a4932d26ce75db /doc
parent138e2f81cb0a37b723e1f8d68d894ebda98bc1dd (diff)
downloadorg.eclipse.eef-7d264bb9d3fdee55ade5c86084f61796d71a8cd4.tar.gz
org.eclipse.eef-7d264bb9d3fdee55ade5c86084f61796d71a8cd4.tar.xz
org.eclipse.eef-7d264bb9d3fdee55ade5c86084f61796d71a8cd4.zip
First version of the EEF 2.0 runtime
Change-Id: I4c4c55411422278c8d3e298bc5136011341bac94 Signed-off-by: Stéphane Bégaudeau <stephane.begaudeau@obeo.fr>
Diffstat (limited to 'doc')
-rw-r--r--doc/org.eclipse.eef.documentation.validator/.classpath7
-rw-r--r--doc/org.eclipse.eef.documentation.validator/.project28
-rw-r--r--doc/org.eclipse.eef.documentation.validator/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--doc/org.eclipse.eef.documentation.validator/META-INF/MANIFEST.MF9
-rw-r--r--doc/org.eclipse.eef.documentation.validator/about.html28
-rw-r--r--doc/org.eclipse.eef.documentation.validator/build.properties4
-rw-r--r--doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/AbstractValidationStatus.java22
-rw-r--r--doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/DocumentationValidator.java154
-rw-r--r--doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/EClassifierValidationStatus.java18
-rw-r--r--doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/EStructuralFeatureValidationStatus.java18
-rw-r--r--doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/ValidationStatusKind.java13
-rw-r--r--doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/Validator.java36
-rw-r--r--doc/org.eclipse.eef.documentation/.classpath5
-rw-r--r--doc/org.eclipse.eef.documentation/.project28
-rw-r--r--doc/org.eclipse.eef.documentation/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--doc/org.eclipse.eef.documentation/META-INF/MANIFEST.MF7
-rw-r--r--doc/org.eclipse.eef.documentation/about.html28
-rw-r--r--doc/org.eclipse.eef.documentation/build.properties14
-rw-r--r--doc/org.eclipse.eef.documentation/plugin.properties12
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-1.screen10
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-10.screen45
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-11.screen54
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-12.screen23
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-13.screen26
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-14.screen28
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-15.screen47
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-16.screen23
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-2.screen14
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-3.screen17
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-4.screen20
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-5.screen26
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-6.screen29
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-7.screen32
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-8.screen35
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-9.screen38
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-1.xmi11
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-10.xmi65
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-11.xmi73
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-12.xmi29
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-13.xmi31
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-14.xmi36
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-15.xmi41
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-16.xmi65
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-2.xmi14
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-3.xmi18
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-4.xmi22
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-5.xmi33
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-6.xmi43
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-7.xmi48
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-8.xmi55
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-9.xmi58
-rw-r--r--doc/org.eclipse.sirius.expression.design/.classpath7
-rw-r--r--doc/org.eclipse.sirius.expression.design/.project35
-rw-r--r--doc/org.eclipse.sirius.expression.design/META-INF/MANIFEST.MF13
-rw-r--r--doc/org.eclipse.sirius.expression.design/about.html28
-rw-r--r--doc/org.eclipse.sirius.expression.design/build.properties7
-rw-r--r--doc/org.eclipse.sirius.expression.design/description/expression.odesign192
-rw-r--r--doc/org.eclipse.sirius.expression.design/plugin.xml10
-rw-r--r--doc/org.eclipse.sirius.expression.design/src/org/eclipse/sirius/expression/design/Activator.java66
59 files changed, 1912 insertions, 0 deletions
diff --git a/doc/org.eclipse.eef.documentation.validator/.classpath b/doc/org.eclipse.eef.documentation.validator/.classpath
new file mode 100644
index 000000000..eca7bdba8
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/.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.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/doc/org.eclipse.eef.documentation.validator/.project b/doc/org.eclipse.eef.documentation.validator/.project
new file mode 100644
index 000000000..0606e959b
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.eef.documentation.validator</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/doc/org.eclipse.eef.documentation.validator/.settings/org.eclipse.jdt.core.prefs b/doc/org.eclipse.eef.documentation.validator/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..0c68a61dc
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/doc/org.eclipse.eef.documentation.validator/META-INF/MANIFEST.MF b/doc/org.eclipse.eef.documentation.validator/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..6ba10591b
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.eef.documentation.validator
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.emf.ecore,
+ org.eclipse.emf.ecore.xmi
diff --git a/doc/org.eclipse.eef.documentation.validator/about.html b/doc/org.eclipse.eef.documentation.validator/about.html
new file mode 100644
index 000000000..f3a55ce5f
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 15, 2010</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/doc/org.eclipse.eef.documentation.validator/build.properties b/doc/org.eclipse.eef.documentation.validator/build.properties
new file mode 100644
index 000000000..34d2e4d2d
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/AbstractValidationStatus.java b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/AbstractValidationStatus.java
new file mode 100644
index 000000000..ed1619312
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/AbstractValidationStatus.java
@@ -0,0 +1,22 @@
+package org.eclipse.eef.documentation.validator.api;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public abstract class AbstractValidationStatus {
+ private ValidationStatusKind validationStatusKind;
+
+ protected List<Object> additionalInformation = new ArrayList<>();
+
+ public AbstractValidationStatus(ValidationStatusKind validationStatusKind) {
+ this.validationStatusKind = validationStatusKind;
+ }
+
+ public ValidationStatusKind getValidationStatusKind() {
+ return validationStatusKind;
+ }
+
+ public List<Object> getAdditionalInformation() {
+ return additionalInformation;
+ }
+}
diff --git a/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/DocumentationValidator.java b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/DocumentationValidator.java
new file mode 100644
index 000000000..85d7026c3
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/DocumentationValidator.java
@@ -0,0 +1,154 @@
+package org.eclipse.eef.documentation.validator.api;
+
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Stream;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.resource.Resource;
+
+public class DocumentationValidator {
+ private Set<EClassifier> eClassifiers = new LinkedHashSet<>();
+ private Set<EStructuralFeature> eStructuralFeatures = new LinkedHashSet<>();
+
+ private List<AbstractValidationStatus> status = new ArrayList<>();
+
+ public void validateLines(Stream<String> lines, Resource resource) {
+ EObject eObject = resource.getContents().get(0);
+ if (eObject instanceof EPackage) {
+ EPackage ePackage = (EPackage) eObject;
+
+ // Validate the documentation
+ lines.forEach(line -> {
+ if (!line.contains("#")) {
+ validateEClassifier(line, ePackage);
+ } else {
+ validateEStructuralFeature(line, ePackage);
+ }
+ });
+
+ // Find the EClassifier that have not been documented
+ ePackage.getEClassifiers().forEach(eClassifier -> {
+ if (!eClassifiers.contains(eClassifier)) {
+ this.status.add(new EClassifierValidationStatus(eClassifier, ValidationStatusKind.UNDOCUMENTED_ECLASSIFIER));
+ System.out.println("Undocumented EClassifier \"" + eClassifier.getName() + "\"");
+ }
+
+ // Find the EStructuralFeature that have not been documented
+ if (eClassifier instanceof EClass) {
+ EClass eClass = (EClass) eClassifier;
+ eClass.getEStructuralFeatures().forEach(eStructuralFeature -> {
+ if (!eStructuralFeatures.contains(eStructuralFeature)) {
+ this.status.add(new EStructuralFeatureValidationStatus(eStructuralFeature, ValidationStatusKind.UNDOCUMENTED_ESTRUCTURAL_FEATURE));
+ System.out.println("Undocumented EStructuralFeature \"" + eClass.getName() + "#" + eStructuralFeature.getName() + "\"");
+ }
+ });
+ }
+ });
+
+ }
+ }
+
+ private String getQualifiedName(EStructuralFeature eStructuralFeature) {
+ return eStructuralFeature.getEContainingClass().getName() + "#" + eStructuralFeature.getName();
+ }
+
+ private void validateEClassifier(String line, EPackage ePackage) {
+ String eClassifierName = line.substring("* ".length()).trim();
+ EClassifier eClassifier = ePackage.getEClassifier(eClassifierName);
+ if (eClassifier == null) {
+ this.status.add(new EClassifierValidationStatus(eClassifier, ValidationStatusKind.ECLASSIFIER_NOT_FOUND));
+ System.err.println("EClassifier \"" + eClassifierName + "\" not found");
+ } else {
+ this.eClassifiers.add(eClassifier);
+ }
+ }
+
+ private void validateEStructuralFeature(String line, EPackage ePackage) {
+ String eStructuralFeatureDeclaration = line.substring("* ".length()).trim();
+ String eClassifierName = eStructuralFeatureDeclaration.substring(0, eStructuralFeatureDeclaration.indexOf('#'));
+ EClassifier eClassifier = ePackage.getEClassifier(eClassifierName);
+ if (eClassifier == null) {
+ this.status.add(new EClassifierValidationStatus(eClassifier, ValidationStatusKind.ECLASSIFIER_NOT_FOUND));
+ System.err.println("EClassifier \"" + eClassifierName + "\" not found");
+ } else {
+ // We won't add the EClassifier here, it needs to be referenced directly
+
+ String eStructuralFeatureName = eStructuralFeatureDeclaration.substring(eStructuralFeatureDeclaration.indexOf('#') + 1, eStructuralFeatureDeclaration.indexOf(':'));
+ if (eClassifier instanceof EClass) {
+ EClass eClass = (EClass) eClassifier;
+ EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature(eStructuralFeatureName);
+ if (eStructuralFeature == null) {
+ this.status.add(new EStructuralFeatureValidationStatus(eStructuralFeature, ValidationStatusKind.ESTRUCUTURAL_FEATURE_NOT_FOUND));
+ System.err.println("EStructuralFeature \"" + eClassifierName + "#" + eStructuralFeatureName + "\" not found");
+ } else {
+ this.eStructuralFeatures.add(eStructuralFeature);
+
+ validateEStructuralFeatureProperties(eStructuralFeatureDeclaration, eStructuralFeature);
+ }
+ }
+ }
+ }
+
+ private void validateEStructuralFeatureProperties(String eStructuralFeatureDeclaration, EStructuralFeature eStructuralFeature) {
+ String properties = eStructuralFeatureDeclaration.substring(eStructuralFeatureDeclaration.indexOf(":") + 1).trim();
+ if (eStructuralFeature instanceof EAttribute) {
+ // <type> [<lowerBound>..<upperBound>] return <type> [<lowerBound>..<upperBound>]
+ EAttribute eAttribute = (EAttribute) eStructuralFeature;
+
+ String type = properties.substring(0, properties.indexOf("[")).trim();
+ String eAttributeType = eAttribute.getEAttributeType().getName();
+ if (!eAttributeType.equals(type)) {
+ this.status.add(new EStructuralFeatureValidationStatus(eStructuralFeature, ValidationStatusKind.INVALID_EATTRIBUTE_TYPE));
+ System.err.println("Invalid EAttributeType for \"" + this.getQualifiedName(eStructuralFeature) + "\" expected \"" + eAttributeType + "\" but found \"" + type + "\"");
+ }
+
+ // <lowerBound> & <upperBound>
+ String bounds = properties.substring(properties.indexOf("[") + 1, properties.indexOf("]"));
+ this.validateBounds(bounds, eStructuralFeature);
+ } else {
+ // <type> [<lowerBound>..<upperBound>] <containment>
+ EReference eReference = (EReference) eStructuralFeature;
+
+ // <type>
+ String type = properties.substring(0, properties.indexOf("[")).trim();
+ String eReferenceType = eReference.getEReferenceType().getName();
+ if (!eReferenceType.equals(type)) {
+ this.status.add(new EStructuralFeatureValidationStatus(eStructuralFeature, ValidationStatusKind.INVALID_EREFERENCE_TYPE));
+ System.err.println("Invalid EReferenceType for \"" + this.getQualifiedName(eStructuralFeature) + "\" expected \"" + eReferenceType + "\" but found \"" + type + "\"");
+ }
+
+ // <lowerBound> & <upperBound>
+ String bounds = properties.substring(properties.indexOf("[") + 1, properties.indexOf("]"));
+ this.validateBounds(bounds, eStructuralFeature);
+
+ if (eReference.isContainment() && !properties.contains("containment")) {
+ System.err.println("EReference \"" + this.getQualifiedName(eStructuralFeature) + "\" containment expected but non containment found");
+ }
+ if (properties.contains("containment") && !eReference.isContainment()) {
+ System.err.println("EReference \"" + this.getQualifiedName(eStructuralFeature) + "\" non containment expected but containment found");
+ }
+ }
+ }
+
+ private void validateBounds(String bounds, EStructuralFeature eStructuralFeature) {
+ int lowerBound = Integer.parseInt(bounds.substring(0, bounds.indexOf("..")));
+ int upperBound = Integer.parseInt(bounds.substring(bounds.indexOf("..") + 2));
+
+ if (eStructuralFeature.getLowerBound() != lowerBound) {
+ System.err.println("Invalid lower bound for \"" + this.getQualifiedName(eStructuralFeature) + "\" expected \"" + eStructuralFeature.getLowerBound() + "\" but found \"" + lowerBound + "\"");
+ }
+ if (eStructuralFeature.getUpperBound() != upperBound) {
+ System.err.println("Invalid upper bound for \"" + this.getQualifiedName(eStructuralFeature) + "\" expected \"" + eStructuralFeature.getUpperBound() + "\" but found \"" + upperBound + "\"");
+ }
+ }
+
+}
diff --git a/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/EClassifierValidationStatus.java b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/EClassifierValidationStatus.java
new file mode 100644
index 000000000..e6b80d61d
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/EClassifierValidationStatus.java
@@ -0,0 +1,18 @@
+package org.eclipse.eef.documentation.validator.api;
+
+import org.eclipse.emf.ecore.EClassifier;
+
+public class EClassifierValidationStatus extends AbstractValidationStatus {
+
+ private EClassifier eClassifier;
+
+ public EClassifierValidationStatus(EClassifier eClassifier, ValidationStatusKind validationStatusKind) {
+ super(validationStatusKind);
+ this.eClassifier = eClassifier;
+ }
+
+ public EClassifier getEClassifier() {
+ return eClassifier;
+ }
+
+}
diff --git a/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/EStructuralFeatureValidationStatus.java b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/EStructuralFeatureValidationStatus.java
new file mode 100644
index 000000000..27d38f713
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/EStructuralFeatureValidationStatus.java
@@ -0,0 +1,18 @@
+package org.eclipse.eef.documentation.validator.api;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+public class EStructuralFeatureValidationStatus extends AbstractValidationStatus {
+
+ private EStructuralFeature eStructuralFeature;
+
+ public EStructuralFeatureValidationStatus(EStructuralFeature eStructuralFeature, ValidationStatusKind validationStatusKind) {
+ super(validationStatusKind);
+ this.eStructuralFeature = eStructuralFeature;
+ }
+
+ public EStructuralFeature getEStructuralFeature() {
+ return eStructuralFeature;
+ }
+
+}
diff --git a/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/ValidationStatusKind.java b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/ValidationStatusKind.java
new file mode 100644
index 000000000..785d457ce
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/ValidationStatusKind.java
@@ -0,0 +1,13 @@
+package org.eclipse.eef.documentation.validator.api;
+
+public enum ValidationStatusKind {
+ UNDOCUMENTED_ECLASSIFIER,
+ UNDOCUMENTED_ESTRUCTURAL_FEATURE,
+ ECLASSIFIER_NOT_FOUND,
+ ESTRUCUTURAL_FEATURE_NOT_FOUND,
+ INVALID_EATTRIBUTE_TYPE,
+ INVALID_EREFERENCE_TYPE,
+ INVALID_LOWER_BOUND,
+ INVALID_UPPER_BOUND,
+ INVALID_EREFERENCE_CONTAINMENT
+}
diff --git a/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/Validator.java b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/Validator.java
new file mode 100644
index 000000000..cadd5d614
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/Validator.java
@@ -0,0 +1,36 @@
+package org.eclipse.eef.documentation.validator.api;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.stream.Stream;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+public class Validator {
+ public static void main(String[] args) {
+ String eefEcorePath = args[0];
+ String metamodelMdPath = args[1];
+
+ // Load the eef.ecore model
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("ecore", new XMIResourceFactoryImpl());
+ URI uri = URI.createFileURI(new File(eefEcorePath).getAbsolutePath());
+ Resource resource = resourceSet.getResource(uri , true);
+
+ // Read the documentation
+ try {
+ Stream<String> lines = Files.lines(Paths.get(new File(metamodelMdPath).toURI())).filter(line -> line.startsWith("* "));
+ new DocumentationValidator().validateLines(lines, resource);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+
+}
diff --git a/doc/org.eclipse.eef.documentation/.classpath b/doc/org.eclipse.eef.documentation/.classpath
new file mode 100644
index 000000000..710b27a72
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/.classpath
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/doc/org.eclipse.eef.documentation/.project b/doc/org.eclipse.eef.documentation/.project
new file mode 100644
index 000000000..016e70aed
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.eef.documentation</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/doc/org.eclipse.eef.documentation/.settings/org.eclipse.jdt.core.prefs b/doc/org.eclipse.eef.documentation/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..f42de363a
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/doc/org.eclipse.eef.documentation/META-INF/MANIFEST.MF b/doc/org.eclipse.eef.documentation/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..4f4bc13b0
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.eef.documentation
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
diff --git a/doc/org.eclipse.eef.documentation/about.html b/doc/org.eclipse.eef.documentation/about.html
new file mode 100644
index 000000000..f3a55ce5f
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 15, 2010</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/doc/org.eclipse.eef.documentation/build.properties b/doc/org.eclipse.eef.documentation/build.properties
new file mode 100644
index 000000000..65f02c56e
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/build.properties
@@ -0,0 +1,14 @@
+#################################################################################
+# Copyright (c) 2015 Obeo.
+# 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:
+# Obeo - initial API and implementation
+#################################################################################
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ plugin.properties
diff --git a/doc/org.eclipse.eef.documentation/plugin.properties b/doc/org.eclipse.eef.documentation/plugin.properties
new file mode 100644
index 000000000..5bba1d8f1
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# Copyright (c) 2015 Obeo.
+# 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:
+# Obeo - initial API and implementation
+#################################################################################
+pluginName=EEF Documentation
+providerName=Eclipse Modeling Project \ No newline at end of file
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-1.screen b/doc/org.eclipse.eef.documentation/sketches/US-1.screen
new file mode 100644
index 000000000..51f3a0042
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-1.screen
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-10.screen b/doc/org.eclipse.eef.documentation/sketches/US-10.screen
new file mode 100644
index 000000000..9a4f409f5
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-10.screen
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="330" text="General" measuredWidth="509" measuredHeight="330" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="145" text="ENamedElement" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="5" x="146" y="288" width="427" height="145" text="EClass" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="6" x="156" y="144" text="Name" measuredWidth="38" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TextField" id="7" x="193" y="144" width="361" text="MyEClass" measuredWidth="361" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Checkbox" id="8" x="156" y="305" text="Abstract" measuredWidth="65" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="9" x="156" y="176" text="Description This is the label description." measuredWidth="216" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Link" id="10" x="156" y="198" text="Open documentation" measuredWidth="117" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="13" x="156" y="218" text="The EClass image" measuredWidth="92" measuredHeight="58" textAlignment="Center" icon="image (large)" iconPosition="top">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Icon" id="14" x="227" y="324" width="55" height="51" measuredWidth="55" measuredHeight="51" icon="image (large)"/>
+ <widgets xsi:type="model:Label" id="15" x="156" y="327" text="Image picker" measuredWidth="75" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Button" id="16" x="285" y="330" text="..." measuredWidth="29" measuredHeight="25">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-11.screen b/doc/org.eclipse.eef.documentation/sketches/US-11.screen
new file mode 100644
index 000000000..3a7090013
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-11.screen
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="393" text="Properties View" measuredWidth="529" measuredHeight="393" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="348" text="General" measuredWidth="509" measuredHeight="348" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="145" text="ENamedElement" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="5" x="146" y="288" width="427" height="169" text="EClass" measuredWidth="427" measuredHeight="169">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="6" x="156" y="144" text="Name" measuredWidth="38" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TextField" id="7" x="193" y="144" width="361" text="MyEClass" measuredWidth="361" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Checkbox" id="8" x="156" y="305" text="Abstract" measuredWidth="65" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="9" x="156" y="176" text="Description This is the label description." measuredWidth="216" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Link" id="10" x="156" y="198" text="Open documentation" measuredWidth="117" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="13" x="156" y="218" text="The EClass image" measuredWidth="92" measuredHeight="58" textAlignment="Center" icon="image (large)" iconPosition="top">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Icon" id="14" x="227" y="324" width="55" height="51" measuredWidth="55" measuredHeight="51" icon="image (large)"/>
+ <widgets xsi:type="model:Label" id="15" x="156" y="327" text="Image picker" measuredWidth="75" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Button" id="16" x="285" y="330" text="..." measuredWidth="29" measuredHeight="25">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:List" id="17" x="208" y="374" text="(o) public class&#xA;( ) protected class&#xA;( ) private class" measuredWidth="110" measuredHeight="70" border="false" alpha="0">
+ <font/>
+ <items x="0" y="2" width="110" height="22" text="(o) public class"/>
+ <items x="0" y="24" width="110" height="22" text="( ) protected class"/>
+ <items x="0" y="46" width="110" height="22" text="( ) private class"/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="18" x="156" y="397" text="Visibility" measuredWidth="50" measuredHeight="23">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-12.screen b/doc/org.eclipse.eef.documentation/sketches/US-12.screen
new file mode 100644
index 000000000..e96ac778a
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-12.screen
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="393" text="Properties View" measuredWidth="529" measuredHeight="393" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="348" text="General" measuredWidth="509" measuredHeight="348" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="328" text="EClass" measuredWidth="427" measuredHeight="328">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="19" x="156" y="144" text="Documentation" measuredWidth="89" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TextArea" id="21" x="244" y="144" width="319" height="65" text="A paragraph of text&#xA;A second row of text" measuredWidth="319" measuredHeight="65">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-13.screen b/doc/org.eclipse.eef.documentation/sketches/US-13.screen
new file mode 100644
index 000000000..86037936b
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-13.screen
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="393" text="Properties View" measuredWidth="529" measuredHeight="393" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="348" text="General" measuredWidth="509" measuredHeight="348" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="328" text="EClass" measuredWidth="427" measuredHeight="328">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="23" x="156" y="144" text="ESuperTypes" measuredWidth="73" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:List" id="24" x="228" y="144" text="FirstEClass&#xA;|SecondEClass&#xA;|ThirdEClass" measuredWidth="82" measuredHeight="67">
+ <font/>
+ <items x="0" y="2" width="82" height="21" text="FirstEClass"/>
+ <items x="0" y="23" width="82" height="21" text="|SecondEClass"/>
+ <items x="0" y="44" width="82" height="21" text="|ThirdEClass"/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-14.screen b/doc/org.eclipse.eef.documentation/sketches/US-14.screen
new file mode 100644
index 000000000..a72646020
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-14.screen
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="393" text="Properties View" measuredWidth="529" measuredHeight="393" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="348" text="General" measuredWidth="509" measuredHeight="348" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="328" text="EClass" measuredWidth="427" measuredHeight="328">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Tree" id="25" x="222" y="148" text="v CurrentEClass&#xA;--FirstChildEAttribute&#xA;-SecondChildEAttribute&#xA;-FirstChildEReference&#xA;-SecondChildEReference" measuredWidth="178" measuredHeight="115">
+ <items x="0" y="5" width="178" height="21" text="v CurrentEClass"/>
+ <items x="0" y="26" width="178" height="21" text="--FirstChildEAttribute"/>
+ <items x="0" y="47" width="178" height="21" text="-SecondChildEAttribute"/>
+ <items x="0" y="68" width="178" height="21" text="-FirstChildEReference"/>
+ <items x="0" y="89" width="178" height="21" text="-SecondChildEReference"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="26" x="156" y="148" text="EAllContent" measuredWidth="67" measuredHeight="23">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-15.screen b/doc/org.eclipse.eef.documentation/sketches/US-15.screen
new file mode 100644
index 000000000..3123e582f
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-15.screen
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="393" text="Properties View" measuredWidth="529" measuredHeight="393" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="348" text="General" measuredWidth="509" measuredHeight="348" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="328" text="EClass" measuredWidth="427" measuredHeight="328">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="26" x="156" y="148" text="EAllContent" measuredWidth="67" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:List" id="27" x="222" y="148" width="163" text="FirstChildEAttribute&#xA;FirstChildEReference" measuredWidth="163" measuredHeight="46">
+ <font/>
+ <items x="0" y="2" width="163" height="21" text="FirstChildEAttribute"/>
+ <items x="0" y="23" width="163" height="21" text="FirstChildEReference"/>
+ </widgets>
+ <widgets xsi:type="model:Button" id="28" x="392" y="147" text="..." measuredWidth="29" measuredHeight="25">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Window" id="29" x="608" y="80" width="265" height="185" text="Select EAllContent" measuredWidth="265" measuredHeight="185"/>
+ <widgets xsi:type="model:Tree" id="30" x="688" y="107" text="v CurrentEClass&#xA;|--FirstChildEAttribute&#xA;-SecondChildEAttribute&#xA;|-FirstChildEReference&#xA;-SecondChildEReference" measuredWidth="178" measuredHeight="115" selection="3">
+ <items x="0" y="5" width="178" height="21" text="v CurrentEClass"/>
+ <items x="0" y="26" width="178" height="21" text="|--FirstChildEAttribute"/>
+ <items x="0" y="47" width="178" height="21" text="-SecondChildEAttribute"/>
+ <items x="0" y="68" width="178" height="21" text="|-FirstChildEReference"/>
+ <items x="0" y="89" width="178" height="21" text="-SecondChildEReference"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="31" x="622" y="107" text="EAllContent" measuredWidth="67" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Button" id="32" x="830" y="235" text="OK" measuredWidth="36" measuredHeight="25">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Button" id="33" x="772" y="235" text="Cancel" measuredWidth="55" measuredHeight="25">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Arrow" id="36" x="420" y="100" width="189" height="61" measuredWidth="189" measuredHeight="61" left="false" right="true" direction="bottom"/>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-16.screen b/doc/org.eclipse.eef.documentation/sketches/US-16.screen
new file mode 100644
index 000000000..dd8a87bc1
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-16.screen
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="393" text="Properties View" measuredWidth="529" measuredHeight="393" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="348" text="General" measuredWidth="509" measuredHeight="348" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="328" text="EClass" measuredWidth="427" measuredHeight="328">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="26" x="156" y="148" text="EAllContent" measuredWidth="67" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Table" id="37" x="156" y="170" text="Name,EType, Derived&#xA;FirstChildEAttribute,EBoolean,[]&#xA;SecondChildEAttribute,EString,[]&#xA;FirstChildEReference,MyEClass,[x]&#xA;SecondChildEReference,MyEClass,[]" measuredWidth="248" measuredHeight="113" alternative="#eeeeee">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-2.screen b/doc/org.eclipse.eef.documentation/sketches/US-2.screen
new file mode 100644
index 000000000..5f85ffe06
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-2.screen
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="330" text="General" measuredWidth="509" measuredHeight="330" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-3.screen b/doc/org.eclipse.eef.documentation/sketches/US-3.screen
new file mode 100644
index 000000000..55300e895
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-3.screen
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="330" text="General" measuredWidth="509" measuredHeight="330" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="145" text="ENamedElement" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-4.screen b/doc/org.eclipse.eef.documentation/sketches/US-4.screen
new file mode 100644
index 000000000..88a766d3f
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-4.screen
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="330" text="General" measuredWidth="509" measuredHeight="330" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="145" text="ENamedElement" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="5" x="146" y="288" width="427" height="145" text="EClass" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-5.screen b/doc/org.eclipse.eef.documentation/sketches/US-5.screen
new file mode 100644
index 000000000..2fb6e12db
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-5.screen
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="330" text="General" measuredWidth="509" measuredHeight="330" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="145" text="ENamedElement" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="5" x="146" y="288" width="427" height="145" text="EClass" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="6" x="156" y="144" text="Name" measuredWidth="38" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TextField" id="7" x="193" y="144" width="361" text="MyEClass" measuredWidth="361" measuredHeight="23">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-6.screen b/doc/org.eclipse.eef.documentation/sketches/US-6.screen
new file mode 100644
index 000000000..600859c81
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-6.screen
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="330" text="General" measuredWidth="509" measuredHeight="330" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="145" text="ENamedElement" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="5" x="146" y="288" width="427" height="145" text="EClass" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="6" x="156" y="144" text="Name" measuredWidth="38" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TextField" id="7" x="193" y="144" width="361" text="MyEClass" measuredWidth="361" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Checkbox" id="8" x="156" y="305" text="Abstract" measuredWidth="65" measuredHeight="23">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-7.screen b/doc/org.eclipse.eef.documentation/sketches/US-7.screen
new file mode 100644
index 000000000..98f3e184d
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-7.screen
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="330" text="General" measuredWidth="509" measuredHeight="330" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="145" text="ENamedElement" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="5" x="146" y="288" width="427" height="145" text="EClass" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="6" x="156" y="144" text="Name" measuredWidth="38" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TextField" id="7" x="193" y="144" width="361" text="MyEClass" measuredWidth="361" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Checkbox" id="8" x="156" y="305" text="Abstract" measuredWidth="65" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="9" x="156" y="176" text="Description This is the label description." measuredWidth="216" measuredHeight="23">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-8.screen b/doc/org.eclipse.eef.documentation/sketches/US-8.screen
new file mode 100644
index 000000000..ad176e324
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-8.screen
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="330" text="General" measuredWidth="509" measuredHeight="330" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="145" text="ENamedElement" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="5" x="146" y="288" width="427" height="145" text="EClass" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="6" x="156" y="144" text="Name" measuredWidth="38" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TextField" id="7" x="193" y="144" width="361" text="MyEClass" measuredWidth="361" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Checkbox" id="8" x="156" y="305" text="Abstract" measuredWidth="65" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="9" x="156" y="176" text="Description This is the label description." measuredWidth="216" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Link" id="10" x="156" y="198" text="Open documentation" measuredWidth="117" measuredHeight="23">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-9.screen b/doc/org.eclipse.eef.documentation/sketches/US-9.screen
new file mode 100644
index 000000000..f8b0d43d5
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-9.screen
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="330" text="General" measuredWidth="509" measuredHeight="330" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="145" text="ENamedElement" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="5" x="146" y="288" width="427" height="145" text="EClass" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="6" x="156" y="144" text="Name" measuredWidth="38" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TextField" id="7" x="193" y="144" width="361" text="MyEClass" measuredWidth="361" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Checkbox" id="8" x="156" y="305" text="Abstract" measuredWidth="65" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="9" x="156" y="176" text="Description This is the label description." measuredWidth="216" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Link" id="10" x="156" y="198" text="Open documentation" measuredWidth="117" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="13" x="156" y="218" text="The EClass image" measuredWidth="92" measuredHeight="58" textAlignment="Center" icon="image (large)" iconPosition="top">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-1.xmi b/doc/org.eclipse.eef.documentation/userstories/US-1.xmi
new file mode 100644
index 000000000..efa29d111
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-1.xmi
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-10.xmi b/doc/org.eclipse.eef.documentation/userstories/US-10.xmi
new file mode 100644
index 000000000..e278f45ee
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-10.xmi
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.enamedelement"
+ labelExpression="aql:'ENamedElement'"
+ domainClass="ecore.ENamedElement"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.enamedelement.container"
+ domainClass="ecore.ENamedElement">
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.name"
+ labelExpression="aql:'Name'"
+ valueExpression="aql:viewSemanticCandidate.name"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('name'), newValue)"/>
+ <widgets
+ xsi:type="eef:EEFLabelDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.description"
+ labelExpression="aql:'Description'"
+ valueExpression="aql:'This is the label description.'"/>
+ <widgets
+ xsi:type="eef:EEFLinkDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.opendocumentation"
+ labelExpression="aql:'Open documentation'"
+ onClickExpression="aql:viewSemanticCandidate.openDocumentation()"/>
+ <widgets
+ xsi:type="eef:EEFImageDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.image"
+ labelExpression="aql:'The EClass image'"
+ valueExpression="aql:'platform:/plugins/org/eclipse/emf/icons/obj16/EClass.gif'"/>
+ </container>
+ </groups>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFCheckboxDescription"
+ identifier="org.eclipse.eef.ecore.eclass.abstract"
+ labelExpression="aql:'Abstract'"
+ valueExpression="aql:viewSemanticCandidate.isAbstract"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('abstract'), newValue)"/>
+ <widgets
+ xsi:type="eef:EEFImagePickerDescription"
+ identifier="org.eclipse.eef.ecore.eclass.imagepicker"
+ labelExpression="aql:'Image picker'"
+ valueExpression="aql:'platform:/plugins/org.eclipse.emf/icons/obj16/EClass.gif'"
+ editExpression="aql:viewSemanticCandidate.updateImage(newImage)"
+ candidatesExpression="aql:viewSemanticCandidate.getCandidateImages()"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-11.xmi b/doc/org.eclipse.eef.documentation/userstories/US-11.xmi
new file mode 100644
index 000000000..d7e87e9ad
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-11.xmi
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.enamedelement"
+ labelExpression="aql:'ENamedElement'"
+ domainClass="ecore.ENamedElement"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.enamedelement.container"
+ domainClass="ecore.ENamedElement">
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.name"
+ labelExpression="aql:'Name'"
+ valueExpression="aql:viewSemanticCandidate.name"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('name'), newName)"/>
+ <widgets
+ xsi:type="eef:EEFLabelDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.description"
+ labelExpression="aql:'Description'"
+ valueExpression="aql:'This is the label description.'"/>
+ <widgets
+ xsi:type="eef:EEFLinkDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.opendocumentation"
+ labelExpression="aql:'Open documentation'"
+ onClickExpression="aql:viewSemanticCandidate.openDocumentation()"/>
+ <widgets
+ xsi:type="eef:EEFImageDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.image"
+ labelExpression="aql:'The EClass image'"
+ valueExpression="aql:'platform:/plugins/org/eclipse/emf/icons/obj16/EClass.gif'"/>
+ </container>
+ </groups>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFCheckboxDescription"
+ identifier="org.eclipse.eef.ecore.eclass.abstract"
+ labelExpression="aql:'Abstract'"
+ valueExpression="aql:viewSemanticCandidate.isAbstract"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('abstract'), newValue)"/>
+ <widgets
+ xsi:type="eef:EEFImagePickerDescription"
+ identifier="org.eclipse.eef.ecore.eclass.imagepicker"
+ labelExpression="aql:'Image picker'"
+ valueExpression="aql:'platform:/plugins/org.eclipse.emf/icons/obj16/EClass.gif'"
+ editExpression="aql:viewSemanticCandidate.updateImage(newImage)"
+ candidatesExpression="aql:viewSemanticCandidate.getCandidateImages()"/>
+ <widgets
+ xsi:type="eef:EEFRadioDescription"
+ identifier="org.eclipse.eef.ecore.eclass.visibility"
+ labelExpression="aql:'Visibility'"
+ valueExpression="aql:viewSemanticCandidate.getVisibility()"
+ editExpression="aql:viewSemanticCandidate.updateVisibility(newVisibility)"
+ candidatesExpression="aql:Sequence{'public','protected', 'private'}"
+ candidateDisplayExpression="aql:visibility+' class'"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-12.xmi b/doc/org.eclipse.eef.documentation/userstories/US-12.xmi
new file mode 100644
index 000000000..41cad8afb
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-12.xmi
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.documentation"
+ labelExpression="aql:'Documentation'"
+ valueExpression="aql:viewSemanticCandidate.getDocumentation()"
+ editExpression="aql:viewSemanticCandidate.updateDocumentation(newValue)"
+ lineCount="4"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-13.xmi b/doc/org.eclipse.eef.documentation/userstories/US-13.xmi
new file mode 100644
index 000000000..18ead82ab
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-13.xmi
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFSelectDescription"
+ identifier="org.eclipse.eef.ecore.eclass.esupertypes"
+ labelExpression="aql:'ESuperTypes'"
+ valueExpression="aql:viewSemanticCandidate.eSuperTypes"
+ editExpression="aql:viewSemanticCandidate.updateSuperTypes(newSuperTypes)"
+ candidatesExpression="aql:viewSemanticCandidate.eResource().eAllContents(ecore::EClass)"
+ multiple="true"
+ candidateDisplayExpression="aql:candidate.name"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-14.xmi b/doc/org.eclipse.eef.documentation/userstories/US-14.xmi
new file mode 100644
index 000000000..7746fdd37
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-14.xmi
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFTreeDescription"
+ identifier="org.eclipse.eef.ecore.eclass.eallcontent"
+ labelExpression="aql:'EAllContent'"
+ valueExpression="aql:viewSemanticCandidate.getRelatedObjects()"
+ treeStructure="//@treeStructures.0"
+ editExpression="aql:viewSemanticCandidate.updateRelatedObjects(newValue)"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+ <treeStructures
+ xsi:type="eef:EEFInterpretedTreeStructureDescription"
+ identifier="org.eclipse.eef.ecore.treestructure"
+ rootsExpression="aql:containerSemanticCandidate"
+ childrenExpression="aql:parent.eContents()"
+ selectablePredicateExpression="aql:candidate.ancestors.contains(containerSemanticCandidate)"
+ candidateDisplayExpression="aql:candidate.name"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-15.xmi b/doc/org.eclipse.eef.documentation/userstories/US-15.xmi
new file mode 100644
index 000000000..0876ec959
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-15.xmi
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFTreeDescription"
+ identifier="org.eclipse.eef.ecore.eclass.eallcontent"
+ labelExpression="aql:'EAllContent'"
+ valueExpression="aql:viewSemanticCandidate.getRelatedObjects()"
+ treeStructure="//@treeStructures.0"
+ editExpression="aql:viewSemanticCandidate.updateRelatedObjects(newValue)"/>
+ <widgets
+ xsi:type="eef:EEFTreeDialogSelectDescription"
+ labelExpression=""
+ semanticCandidateExpression=""
+ tree="//@groups.0/@container/@widgets.0"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+ <treeStructures
+ xsi:type="eef:EEFInterpretedTreeStructureDescription"
+ identifier="org.eclipse.eef.ecore.treestructure"
+ rootsExpression="aql:containerSemanticCandidate"
+ childrenExpression="aql:parent.eContents()"
+ selectablePredicateExpression="aql:candidate.ancestors.contains(containerSemanticCandidate)"
+ candidateDisplayExpression="aql:candidate.name"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-16.xmi b/doc/org.eclipse.eef.documentation/userstories/US-16.xmi
new file mode 100644
index 000000000..eb652fbb5
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-16.xmi
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFTableDescription"
+ identifier="org.eclipse.eef.ecore.eclass.eallcontent"
+ labelExpression="aql:'EAllContent'"
+ valueExpression="aql:viewSemanticCandidate.getRelatedObjects()"
+ editExpression="aql:viewSemanticCandidate.updateRelatedObjects(selection)"
+ tableStructure="//@tableStructures.0"/>
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.tabledescription.name"
+ labelExpression=""
+ valueExpression="aql:viewSemanticCandidate.name"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('name'), newValue)"/>
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.tabledescription.type"
+ labelExpression=""
+ valueExpression="aql:viewSemanticCandidate.eType"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('eType'), newValue)"/>
+ <widgets
+ xsi:type="eef:EEFCheckboxDescription"
+ identifier="org.eclipse.eef.ecore.tabledescription.derived"
+ labelExpression=""
+ valueExpression="aql:viewSemanticCandidate.derived"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('derived'), newValue)"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+ <tableStructures
+ xsi:type="eef:EEFInterpretedTableStructureDescription"
+ identifier="org.eclipse.eef.ecore.tablestructure">
+ <columns
+ headerExpression="aql:'Name'"
+ cellWidget="//@groups.0/@container/@widgets.1"
+ contextCandidatesExpression=""/>
+ <columns
+ headerExpression="aql:'EType'"
+ cellWidget="//@groups.0/@container/@widgets.2"
+ contextCandidatesExpression=""/>
+ <columns
+ headerExpression="aql:'Derived'"
+ cellWidget="//@groups.0/@container/@widgets.3"/>
+ <line headerExpression=""
+ semanticCandidatesExpression="aql:viewSemanticCandidate.getRelatedObjects()"
+ domainClass="ecore::EClass"/>
+ </tableStructures>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-2.xmi b/doc/org.eclipse.eef.documentation/userstories/US-2.xmi
new file mode 100644
index 000000000..d4ba96239
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-2.xmi
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-3.xmi b/doc/org.eclipse.eef.documentation/userstories/US-3.xmi
new file mode 100644
index 000000000..2d6ebe703
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-3.xmi
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.properties"
+ labelExpression="aql:'ENamedElement'"
+ domainClass="ecore.ENamedElement"
+ semanticCandidateExpression=""/>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-4.xmi b/doc/org.eclipse.eef.documentation/userstories/US-4.xmi
new file mode 100644
index 000000000..6acdc7a46
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-4.xmi
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.enamedelement"
+ labelExpression="aql:'ENamedElement'"
+ domainClass="ecore.ENamedElement"
+ semanticCandidateExpression=""/>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression=""/>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-5.xmi b/doc/org.eclipse.eef.documentation/userstories/US-5.xmi
new file mode 100644
index 000000000..b209e3480
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-5.xmi
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.enamedelement"
+ labelExpression="aql:'ENamedElement'"
+ domainClass="ecore.ENamedElement"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.enamedelement.container"
+ domainClass="ecore.ENamedElement">
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.name"
+ labelExpression="aql:'Name'"
+ valueExpression="aql:viewSemanticCandidate.name"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('name'), newValue)"/>
+ </container>
+ </groups>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression=""/>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-6.xmi b/doc/org.eclipse.eef.documentation/userstories/US-6.xmi
new file mode 100644
index 000000000..c38559882
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-6.xmi
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.enamedelement"
+ labelExpression="aql:'ENamedElement'"
+ domainClass="ecore.ENamedElement"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.enamedelement.container"
+ domainClass="ecore.ENamedElement">
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.name"
+ labelExpression="aql:'Name'"
+ valueExpression="aql:viewSemanticCandidate.name"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('name'), newName)"/>
+ </container>
+ </groups>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFCheckboxDescription"
+ identifier="org.eclipse.eef.ecore.eclass.abstract"
+ labelExpression="aql:'Abstract'"
+ valueExpression="aql:viewSemanticCandidate.isAbstract"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('abstract'), newAbstract)"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-7.xmi b/doc/org.eclipse.eef.documentation/userstories/US-7.xmi
new file mode 100644
index 000000000..6cb19e0e9
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-7.xmi
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.enamedelement"
+ labelExpression="aql:'ENamedElement'"
+ domainClass="ecore.ENamedElement"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.enamedelement.container"
+ domainClass="ecore.ENamedElement">
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.name"
+ labelExpression="aql:'Name'"
+ valueExpression="aql:viewSemanticCandidate.name"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('name'), newValue)"/>
+ <widgets
+ xsi:type="eef:EEFLabelDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.description"
+ labelExpression="aql:'Description'"
+ valueExpression="aql:'This is the label description.'"/>
+ </container>
+ </groups>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFCheckboxDescription"
+ identifier="org.eclipse.eef.ecore.eclass.abstract"
+ labelExpression="aql:'Abstract'"
+ valueExpression="aql:viewSemanticCandidate.isAbstract"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('abstract'), newValue)"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-8.xmi b/doc/org.eclipse.eef.documentation/userstories/US-8.xmi
new file mode 100644
index 000000000..9a372d748
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-8.xmi
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.enamedelement"
+ labelExpression="aql:'ENamedElement'"
+ domainClass="ecore.ENamedElement"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.enamedelement.container"
+ domainClass="ecore.ENamedElement">
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.name"
+ labelExpression="aql:'Name'"
+ valueExpression="aql:viewSemanticCandidate.name"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('name'), newValue)"/>
+ <widgets
+ xsi:type="eef:EEFLabelDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.description"
+ labelExpression="aql:'Description'"
+ valueExpression="aql:'This is the label description.'"/>
+ <widgets
+ xsi:type="eef:EEFLinkDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.opendocumentation"
+ labelExpression="aql:'Open documentation'"
+ onClickExpression="aql:viewSemanticCandidate.openDocumentation()"/>
+ </container>
+ </groups>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFCheckboxDescription"
+ identifier="org.eclipse.eef.ecore.eclass.abstract"
+ labelExpression="aql:'Abstract'"
+ valueExpression="aql:viewSemanticCandidate.isAbstract"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('abstract'), newValue)"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+ <javaExtensions
+ qualifiedName="org.eclipse.eef.myview.Service"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-9.xmi b/doc/org.eclipse.eef.documentation/userstories/US-9.xmi
new file mode 100644
index 000000000..a86109976
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-9.xmi
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.enamedelement"
+ labelExpression="aql:'ENamedElement'"
+ domainClass="ecore.ENamedElement"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.enamedelement.container"
+ domainClass="ecore.ENamedElement">
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.name"
+ labelExpression="aql:'Name'"
+ valueExpression="aql:viewSemanticCandidate.name"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('name'), newValue)"/>
+ <widgets
+ xsi:type="eef:EEFLabelDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.description"
+ labelExpression="aql:'Description'"
+ valueExpression="aql:'This is the label description.'"/>
+ <widgets
+ xsi:type="eef:EEFLinkDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.opendocumentation"
+ labelExpression="aql:'Open documentation'"
+ onClickExpression="aql:viewSemanticCandidate.openDocumentation()"/>
+ <widgets
+ xsi:type="eef:EEFImageDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.image"
+ labelExpression="aql:'The EClass image'"
+ valueExpression="aql:'platform:/plugins/org/eclipse/emf/icons/obj16/EClass.gif'"/>
+ </container>
+ </groups>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFCheckboxDescription"
+ identifier="org.eclipse.eef.ecore.eclass.abstract"
+ labelExpression="aql:'Abstract'"
+ valueExpression="aql:viewSemanticCandidate.isAbstract"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('abstract'), newValue)"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.sirius.expression.design/.classpath b/doc/org.eclipse.sirius.expression.design/.classpath
new file mode 100644
index 000000000..39810b7d6
--- /dev/null
+++ b/doc/org.eclipse.sirius.expression.design/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/doc/org.eclipse.sirius.expression.design/.project b/doc/org.eclipse.sirius.expression.design/.project
new file mode 100644
index 000000000..ba1d71323
--- /dev/null
+++ b/doc/org.eclipse.sirius.expression.design/.project
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.sirius.expression.design</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>
+ <buildCommand>
+ <name>org.eclipse.acceleo.ide.ui.acceleoBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.acceleo.ide.ui.acceleoNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
+
diff --git a/doc/org.eclipse.sirius.expression.design/META-INF/MANIFEST.MF b/doc/org.eclipse.sirius.expression.design/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..b9132d898
--- /dev/null
+++ b/doc/org.eclipse.sirius.expression.design/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.sirius.expression.design
+Bundle-SymbolicName: org.eclipse.sirius.expression.design;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-Activator: org.eclipse.sirius.expression.design.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.sirius,
+ org.eclipse.sirius.common.acceleo.mtl
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/doc/org.eclipse.sirius.expression.design/about.html b/doc/org.eclipse.sirius.expression.design/about.html
new file mode 100644
index 000000000..f3a55ce5f
--- /dev/null
+++ b/doc/org.eclipse.sirius.expression.design/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 15, 2010</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/doc/org.eclipse.sirius.expression.design/build.properties b/doc/org.eclipse.sirius.expression.design/build.properties
new file mode 100644
index 000000000..bbbc4ce49
--- /dev/null
+++ b/doc/org.eclipse.sirius.expression.design/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ description/,\
+ plugin.xml
+customBuildCallbacks = build.acceleo
diff --git a/doc/org.eclipse.sirius.expression.design/description/expression.odesign b/doc/org.eclipse.sirius.expression.design/description/expression.odesign
new file mode 100644
index 000000000..e76d4b847
--- /dev/null
+++ b/doc/org.eclipse.sirius.expression.design/description/expression.odesign
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<description:Group xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:description_2="http://www.eclipse.org/sirius/table/description/1.1.0" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:tool="http://www.eclipse.org/sirius/diagram/description/tool/1.1.0" xmlns:tool_1="http://www.eclipse.org/sirius/description/tool/1.1.0" name="expression" version="10.0.0.201505222000">
+ <ownedViewpoints name="Design">
+ <ownedRepresentations xsi:type="description_1:DiagramDescription" name="Design" domainClass="expression.ExpressionPackage" enablePopupBars="true">
+ <metamodel href="../../org.eclipse.sirius.expression/model/expression.ecore#/"/>
+ <metamodel href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ <defaultLayer name="Default">
+ <edgeMappings name="Expressions" sourceMapping="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Design']/@defaultLayer/@containerMappings[name='ExpressionClass']/@subContainerMappings[name='ExpressionDescription']" targetMapping="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Design']/@defaultLayer/@containerMappings[name='EClass']/@subNodeMappings[name='Expression']" targetFinderExpression="feature:expression">
+ <style sizeComputationExpression="2">
+ <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <centerLabelStyleDescription>
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ </style>
+ </edgeMappings>
+ <containerMappings name="ExpressionClass" semanticCandidatesExpression="feature:expressionClasses" domainClass="expression.ExpressionClass">
+ <subContainerMappings name="ExpressionDescription" labelDirectEdit="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Design']/@defaultLayer/@toolSections.0/@ownedTools[name='ExpressionDescriptionEdit']" semanticCandidatesExpression="feature:expressionDescriptions" domainClass="expression.ExpressionDescription">
+ <style xsi:type="style:FlatContainerStyleDescription" showIcon="false" labelExpression="aql:self.label + '['+ self.lowerBound+'..'+self.upperBound+']:'+self.returnType.name">
+ <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ </style>
+ </subContainerMappings>
+ <subContainerMappings name="Variable" labelDirectEdit="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Design']/@additionalLayers[name='Variables']/@toolSections.0/@ownedTools[name='VariableEdit']" semanticCandidatesExpression="feature:variables" domainClass="expression.Variable">
+ <style xsi:type="style:FlatContainerStyleDescription" showIcon="false">
+ <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/>
+ </style>
+ </subContainerMappings>
+ <style xsi:type="style:FlatContainerStyleDescription" showIcon="false" labelExpression="feature:label">
+ <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_gray']"/>
+ </style>
+ </containerMappings>
+ <containerMappings name="EClass" semanticCandidatesExpression="aql:self.ePackage.eClassifiers->filter(ecore::EClass)" domainClass="ecore.EClass">
+ <subNodeMappings name="Expression" semanticCandidatesExpression="aql:self.eAllContents(ecore::EAttribute)->select(e|e.name.contains('Expression'))" domainClass="ecore.EAttribute">
+ <style xsi:type="style:SquareDescription" showIcon="false" sizeComputationExpression="5" labelPosition="node" resizeKind="NSEW">
+ <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='purple']"/>
+ </style>
+ </subNodeMappings>
+ <style xsi:type="style:FlatContainerStyleDescription">
+ <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_orange']"/>
+ </style>
+ </containerMappings>
+ <toolSections>
+ <ownedTools xsi:type="tool:ContainerCreationDescription" name="ExpressionClassCreate" label="ExpressionClass" containerMappings="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Design']/@defaultLayer/@containerMappings[name='ExpressionClass']" extraMappings="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Design']/@defaultLayer/@containerMappings[name='EClass']">
+ <variable name="container"/>
+ <viewVariable name="containerView"/>
+ <initialOperation>
+ <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="aql:containerView.eContainer().target">
+ <subModelOperations xsi:type="tool_1:CreateInstance" typeName="expression.ExpressionClass" referenceName="expressionClasses">
+ <subModelOperations xsi:type="tool_1:SetValue" featureName="label" valueExpression="aql:containerView.target.name"/>
+ </subModelOperations>
+ </firstModelOperations>
+ </initialOperation>
+ </ownedTools>
+ <ownedTools xsi:type="tool:ContainerCreationDescription" name="ExpressionDescriptionCreate" label="ExpressionDescription" containerMappings="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Design']/@defaultLayer/@containerMappings[name='ExpressionClass']/@subContainerMappings[name='ExpressionDescription']">
+ <variable name="container"/>
+ <viewVariable name="containerView"/>
+ <initialOperation>
+ <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="var:self">
+ <subModelOperations xsi:type="tool_1:CreateInstance" typeName="expression.ExpressionDescription" referenceName="expressionDescriptions"/>
+ </firstModelOperations>
+ </initialOperation>
+ </ownedTools>
+ <ownedTools xsi:type="tool:DirectEditLabel" name="ExpressionDescriptionEdit">
+ <mask mask="{0}[{1}..{2}]:{3}"/>
+ <initialOperation>
+ <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="var:self">
+ <subModelOperations xsi:type="tool_1:SetValue" featureName="label" valueExpression="var:arg0"/>
+ <subModelOperations xsi:type="tool_1:SetValue" featureName="lowerBound" valueExpression="var:arg1"/>
+ <subModelOperations xsi:type="tool_1:SetValue" featureName="upperBound" valueExpression="var:arg2"/>
+ </firstModelOperations>
+ </initialOperation>
+ </ownedTools>
+ <ownedTools xsi:type="tool:EdgeCreationDescription" name="ExpressionDescriptionToExpression" edgeMappings="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Design']/@defaultLayer/@edgeMappings[name='Expressions']">
+ <sourceVariable name="source"/>
+ <targetVariable name="target"/>
+ <sourceViewVariable name="sourceView"/>
+ <targetViewVariable name="targetView"/>
+ <initialOperation>
+ <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="var:source">
+ <subModelOperations xsi:type="tool_1:SetValue" featureName="expression" valueExpression="var:target"/>
+ <subModelOperations xsi:type="tool_1:SetValue" featureName="label" valueExpression="aql:target.name"/>
+ </firstModelOperations>
+ </initialOperation>
+ </ownedTools>
+ </toolSections>
+ </defaultLayer>
+ <additionalLayers name="Variables">
+ <edgeMappings name="Variables" sourceMapping="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Design']/@defaultLayer/@containerMappings[name='ExpressionClass']/@subContainerMappings[name='ExpressionDescription']" targetMapping="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Design']/@defaultLayer/@containerMappings[name='ExpressionClass']/@subContainerMappings[name='Variable']" targetFinderExpression="feature:variables">
+ <style sizeComputationExpression="2">
+ <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
+ <centerLabelStyleDescription>
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ </style>
+ </edgeMappings>
+ <toolSections>
+ <ownedTools xsi:type="tool:EdgeCreationDescription" name="ExpressionToVariable" edgeMappings="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Design']/@additionalLayers[name='Variables']/@edgeMappings[name='Variables']">
+ <sourceVariable name="source"/>
+ <targetVariable name="target"/>
+ <sourceViewVariable name="sourceView"/>
+ <targetViewVariable name="targetView"/>
+ <initialOperation>
+ <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="var:source">
+ <subModelOperations xsi:type="tool_1:SetValue" featureName="variables" valueExpression="var:target"/>
+ </firstModelOperations>
+ </initialOperation>
+ </ownedTools>
+ <ownedTools xsi:type="tool:ContainerCreationDescription" name="VariableCreate" label="Variable" containerMappings="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Design']/@defaultLayer/@containerMappings[name='ExpressionClass']/@subContainerMappings[name='Variable']">
+ <variable name="container"/>
+ <viewVariable name="containerView"/>
+ <initialOperation>
+ <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="var:container">
+ <subModelOperations xsi:type="tool_1:CreateInstance" typeName="expression.Variable" referenceName="variables"/>
+ </firstModelOperations>
+ </initialOperation>
+ </ownedTools>
+ <ownedTools xsi:type="tool:DirectEditLabel" name="VariableEdit">
+ <mask mask="{0}"/>
+ <initialOperation>
+ <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="var:self">
+ <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="var:arg0"/>
+ </firstModelOperations>
+ </initialOperation>
+ </ownedTools>
+ </toolSections>
+ </additionalLayers>
+ </ownedRepresentations>
+ <ownedRepresentations xsi:type="description_2:CrossTableDescription" name="ExpressionToVariables" domainClass="expression.ExpressionPackage">
+ <metamodel href="../../org.eclipse.sirius.expression/model/expression.ecore#/"/>
+ <ownedLineMappings name="ExpressionClass" domainClass="expression.ExpressionClass" semanticCandidatesExpression="feature:expressionClasses" headerLabelExpression="feature:label">
+ <ownedSubLines name="ExpressionDescription" domainClass="expression.ExpressionDescription" semanticCandidatesExpression="feature:expressionDescriptions" headerLabelExpression="feature:label"/>
+ </ownedLineMappings>
+ <ownedColumnMappings name="Variables" headerLabelExpression="aql:self.eContainer().label+'\n'+self.name" initialWidth="100" domainClass="expression.Variable"/>
+ <intersection name="Variables" lineMapping="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='ExpressionToVariables']/@ownedLineMappings[name='ExpressionClass']/@ownedSubLines[name='ExpressionDescription']" columnMapping="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='ExpressionToVariables']/@ownedColumnMappings.0" labelExpression="x" columnFinderExpression="feature:variables">
+ <directEdit>
+ <variables name="element" documentation="The currently edited element."/>
+ <variables name="lineSemantic" documentation="The semantic element corresponding to the line."/>
+ <variables name="columnSemantic" documentation="The semantic element corresponding to the column (only available for Intersection Mapping)."/>
+ <variables name="root" documentation="The semantic element of the table."/>
+ <firstModelOperation xsi:type="tool_1:ChangeContext" browseExpression="var:lineSemantic">
+ <subModelOperations xsi:type="tool_1:If" conditionExpression="aql:arg0&lt;>''">
+ <subModelOperations xsi:type="tool_1:SetValue" featureName="variables" valueExpression="var:columnSemantic"/>
+ </subModelOperations>
+ <subModelOperations xsi:type="tool_1:If" conditionExpression="aql:arg0=''">
+ <subModelOperations xsi:type="tool_1:Unset" featureName="variables" elementExpression="var:columnSemantic"/>
+ </subModelOperations>
+ </firstModelOperation>
+ <mask mask="{0}"/>
+ </directEdit>
+ </intersection>
+ </ownedRepresentations>
+ <ownedRepresentations xsi:type="description_2:CrossTableDescription" name="ExpressionToContextableElements" domainClass="expression.ExpressionPackage">
+ <metamodel href="../../org.eclipse.sirius.expression/model/expression.ecore#/"/>
+ <metamodel href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ <ownedLineMappings name="ExpressionClass" domainClass="expression.ExpressionClass" semanticCandidatesExpression="feature:expressionClasses" headerLabelExpression="feature:label">
+ <ownedSubLines name="ExpressionDescription" domainClass="expression.ExpressionDescription" semanticCandidatesExpression="feature:expressionDescriptions" headerLabelExpression="feature:label"/>
+ </ownedLineMappings>
+ <ownedColumnMappings name="ContextableElement" headerLabelExpression="feature:name" domainClass="ecore.EClass" semanticCandidatesExpression="aql:self.ePackage.eClassifiers->filter(ecore::EClass)"/>
+ <intersection name="ContextableElements" lineMapping="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='ExpressionToContextableElements']/@ownedLineMappings[name='ExpressionClass']/@ownedSubLines[name='ExpressionDescription']" columnMapping="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='ExpressionToContextableElements']/@ownedColumnMappings.0" labelExpression="x" columnFinderExpression="aql:self.contextableElements">
+ <directEdit>
+ <variables name="element" documentation="The currently edited element."/>
+ <variables name="lineSemantic" documentation="The semantic element corresponding to the line."/>
+ <variables name="columnSemantic" documentation="The semantic element corresponding to the column (only available for Intersection Mapping)."/>
+ <variables name="root" documentation="The semantic element of the table."/>
+ <firstModelOperation xsi:type="tool_1:ChangeContext" browseExpression="var:lineSemantic">
+ <subModelOperations xsi:type="tool_1:If" conditionExpression="[arg0&lt;>''/]">
+ <subModelOperations xsi:type="tool_1:SetValue" featureName="contextableElements" valueExpression="var:columnSemantic"/>
+ </subModelOperations>
+ <subModelOperations xsi:type="tool_1:If" conditionExpression="[arg0=''/]">
+ <subModelOperations xsi:type="tool_1:Unset" featureName="contextableElements" elementExpression="var:columnSemantic"/>
+ </subModelOperations>
+ </firstModelOperation>
+ <mask mask="{0}"/>
+ </directEdit>
+ </intersection>
+ </ownedRepresentations>
+ <ownedJavaExtensions/>
+ </ownedViewpoints>
+</description:Group>
diff --git a/doc/org.eclipse.sirius.expression.design/plugin.xml b/doc/org.eclipse.sirius.expression.design/plugin.xml
new file mode 100644
index 000000000..5ecb2c479
--- /dev/null
+++ b/doc/org.eclipse.sirius.expression.design/plugin.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+ <extension point="org.eclipse.sirius.componentization">
+ <component class="org.eclipse.sirius.expression.design.Activator"
+ id="org.eclipse.sirius.expression.design"
+ name="expression">
+ </component>
+ </extension>
+</plugin>
diff --git a/doc/org.eclipse.sirius.expression.design/src/org/eclipse/sirius/expression/design/Activator.java b/doc/org.eclipse.sirius.expression.design/src/org/eclipse/sirius/expression/design/Activator.java
new file mode 100644
index 000000000..f4b15886c
--- /dev/null
+++ b/doc/org.eclipse.sirius.expression.design/src/org/eclipse/sirius/expression/design/Activator.java
@@ -0,0 +1,66 @@
+package org.eclipse.sirius.expression.design;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.sirius.business.api.componentization.ViewpointRegistry;
+import org.eclipse.sirius.viewpoint.description.Viewpoint;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.sirius.expression.design";
+
+ // The shared instance
+ private static Activator plugin;
+
+ private static Set<Viewpoint> viewpoints;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (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;
+ viewpoints = new HashSet<Viewpoint>();
+ viewpoints.addAll(ViewpointRegistry.getInstance().registerFromPlugin(PLUGIN_ID + "/description/expression.odesign"));
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ if (viewpoints != null) {
+ for (final Viewpoint viewpoint: viewpoints) {
+ ViewpointRegistry.getInstance().disposeFromPlugin(viewpoint);
+ }
+ viewpoints.clear();
+ viewpoints = null;
+ }
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+}

Back to the top