Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBelqassim Djafer2015-02-10 10:29:15 +0000
committerMaxime Porhel2015-05-12 12:46:04 +0000
commit0726c2fd312256b7a3e9b38fcccb05e5cc7fcdd8 (patch)
tree8a034f745f8c27758da9b35636985a9867324156
parenta95cd02acf0642adac3245f458d29c2aac599c92 (diff)
downloadorg.eclipse.sirius-0726c2fd312256b7a3e9b38fcccb05e5cc7fcdd8.tar.gz
org.eclipse.sirius-0726c2fd312256b7a3e9b38fcccb05e5cc7fcdd8.tar.xz
org.eclipse.sirius-0726c2fd312256b7a3e9b38fcccb05e5cc7fcdd8.zip
[456140] Add variables for TreeItem semantic candidates expression
Add the available variables (container, containerView and tree) for TreeItem's semantic candidates expression. Bug: 456140 Change-Id: Iad75f023ea35b518ff8cd5d3ba3593eaa6ab486c Signed-off-by: Belqassim Djafer <belqassim.djafer@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.doc/doc/Release Notes.html14
-rw-r--r--plugins/org.eclipse.sirius.doc/doc/Release Notes.textile5
-rw-r--r--plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/RefreshPlanner.java4
-rw-r--r--plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/SemanticPartition.java15
-rw-r--r--plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/SemanticPartitionInvalidator.java2
-rw-r--r--plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/SemanticPartitions.java2
-rw-r--r--plugins/org.eclipse.sirius.tests.junit/data/tree/unit/variables/My.ecore3
-rw-r--r--plugins/org.eclipse.sirius.tests.junit/data/tree/unit/variables/project.odesign79
-rw-r--r--plugins/org.eclipse.sirius.tests.junit/data/tree/unit/variables/representations.aird203
-rw-r--r--plugins/org.eclipse.sirius.tests.tree/src/org/eclipse/sirius/tests/suite/tree/AllTreePluginTests.java3
-rw-r--r--plugins/org.eclipse.sirius.tests.tree/src/org/eclipse/sirius/tests/unit/tree/MappingBasedPartitionTests.java4
-rw-r--r--plugins/org.eclipse.sirius.tests.tree/src/org/eclipse/sirius/tests/unit/tree/TreeVariablesTest.java121
-rw-r--r--plugins/org.eclipse.sirius.tree/src/org/eclipse/sirius/tree/business/internal/dialect/common/viewpoint/MappingBasedPartition.java36
13 files changed, 477 insertions, 14 deletions
diff --git a/plugins/org.eclipse.sirius.doc/doc/Release Notes.html b/plugins/org.eclipse.sirius.doc/doc/Release Notes.html
index e17be05352..6d7973305e 100644
--- a/plugins/org.eclipse.sirius.doc/doc/Release Notes.html
+++ b/plugins/org.eclipse.sirius.doc/doc/Release Notes.html
@@ -622,6 +622,20 @@
<code>org.eclipse.sirius.diagram.ui.business.api.view.ValidateAction.getDSemanticDecorator()</code> for an example.
</li>
</ul>
+ <h4 id="Changesinorg.eclipse.sirius.synchronizer">Changes in
+ <code>org.eclipse.sirius.synchronizer</code>
+ </h4>
+ <ul>
+ <li>The method
+ <code>org.eclipse.sirius.synchronizer.SemanticPartitionInvalidator.hasFastResult(EObject, SemanticPartition, CreatedOutput)</code> now takes a
+ <code>CreatedOutput</code> as additional parameter element to allow to have the parent output element.
+ </li>
+ <li>The method
+ <code>org.eclipse.sirius.synchronizer.SemanticPartition.evaluate(EObject, CreatedOutput)</code> now takes a
+ <code>CreatedOutput</code> as additional parameter. This
+ <code>CreatedOutput</code> represents the output model element which will become the parent of the elements created from the evaluation result.
+ </li>
+ </ul>
<h4 id="Changesinorg.eclipse.sirius.tests.junit.support">Changes in
<code>org.eclipse.sirius.tests.junit.support</code>
</h4>
diff --git a/plugins/org.eclipse.sirius.doc/doc/Release Notes.textile b/plugins/org.eclipse.sirius.doc/doc/Release Notes.textile
index 8d3edf287e..92e2fe542d 100644
--- a/plugins/org.eclipse.sirius.doc/doc/Release Notes.textile
+++ b/plugins/org.eclipse.sirius.doc/doc/Release Notes.textile
@@ -177,6 +177,11 @@ h4. Changes in @org.eclipse.sirius.diagram.ui@
* @org.eclipse.sirius.diagram.ui.business.api.provider.DDiagramElementContainerLabelItemProvider@ has been added to represent container and list labels as virtual nodes in the Show/Hide wizards.
* The method @org.eclipse.sirius.diagram.ui.part.SiriusDiagramEditorUtil.findView()@ has been deleted in flavor of @SiriusGMFHelper.getGmfView()@. If you was using @SiriusDiagramEditorUtil.findView()@ with a semantic element in parameter, retrieve before the corresponding @DDiagram@ or @DDiagramElement@ and use @SiriusGMFHelper.getGmfView(DSemanticDecorator)@ from this last to get the corresponding GMF View. To get a @DDiagram@ or @DDiagramElement@ from a semantic element, you can use @EObjectQuery.getInverseReferences(EReference)@ API, see @org.eclipse.sirius.diagram.ui.business.api.view.ValidateAction.getDSemanticDecorator()@ for an example.
+h4. Changes in @org.eclipse.sirius.synchronizer@
+
+* The method @org.eclipse.sirius.synchronizer.SemanticPartitionInvalidator.hasFastResult(EObject, SemanticPartition, CreatedOutput)@ now takes a @CreatedOutput@ as additional parameter element to allow to have the parent output element.
+* The method @org.eclipse.sirius.synchronizer.SemanticPartition.evaluate(EObject, CreatedOutput)@ now takes a @CreatedOutput@ as additional parameter. This @CreatedOutput@ represents the output model element which will become the parent of the elements created from the evaluation result.
+
h4. Changes in @org.eclipse.sirius.tests.junit.support@
* The method @org.eclipse.sirius.tests.support.api.EclipseTestsSupportHelper.setReadOnlyStatus(boolean, IResource...)@ has been added to change the read only status of the given resources.
diff --git a/plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/RefreshPlanner.java b/plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/RefreshPlanner.java
index 40037172d0..d872de162e 100644
--- a/plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/RefreshPlanner.java
+++ b/plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/RefreshPlanner.java
@@ -98,9 +98,9 @@ public class RefreshPlanner {
while (it.hasNext()) {
Mapping cur = it.next();
if (cur.isEnabled() && cur.getCreator().some()) {
- Option<EvaluatedSemanticPartition> par = invalidator.hasFastResult(container.getDescriptor().getSourceElement(), cur.getSemanticPartition());
+ Option<EvaluatedSemanticPartition> par = invalidator.hasFastResult(container.getDescriptor().getSourceElement(), cur.getSemanticPartition(), container);
if (!par.some()) {
- par = Options.newSome(cur.getSemanticPartition().evaluate(container.getDescriptor().getSourceElement()));
+ par = Options.newSome(cur.getSemanticPartition().evaluate(container.getDescriptor().getSourceElement(), container));
}
Collection<? extends OutputDescriptor> allCandidateDescriptors = cur.getCreator().get().computeDescriptors(container, par.get().elements());
post.appendOutputDescritorsKeepingTheMostSpecific(allCandidateDescriptors);
diff --git a/plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/SemanticPartition.java b/plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/SemanticPartition.java
index b58e53f084..546d30f39a 100644
--- a/plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/SemanticPartition.java
+++ b/plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/SemanticPartition.java
@@ -29,7 +29,7 @@ public interface SemanticPartition {
*/
SemanticPartition NONE = new SemanticPartition() {
- public EvaluatedSemanticPartition evaluate(EObject context) {
+ public EvaluatedSemanticPartition evaluate(EObject context, CreatedOutput parentElement) {
return new EvaluatedSemanticPartition() {
public boolean isElementOf(EObject sem) {
@@ -43,6 +43,17 @@ public interface SemanticPartition {
}
};
- EvaluatedSemanticPartition evaluate(EObject context);
+ /**
+ * Evaluate the semantic partition on the given context for the given parent
+ * output.
+ *
+ * @param context
+ * the EObject instance to evaluate on.
+ * @param parentElement
+ * the output element which will become the parent of output
+ * elements created from the evaluation result.
+ * @return the semantic partition evaluation result.
+ */
+ EvaluatedSemanticPartition evaluate(EObject context, CreatedOutput parentElement);
}
diff --git a/plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/SemanticPartitionInvalidator.java b/plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/SemanticPartitionInvalidator.java
index cd88fef3d3..b62b133792 100644
--- a/plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/SemanticPartitionInvalidator.java
+++ b/plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/SemanticPartitionInvalidator.java
@@ -23,7 +23,7 @@ import org.eclipse.sirius.ext.base.Options;
*/
public class SemanticPartitionInvalidator {
- public Option<EvaluatedSemanticPartition> hasFastResult(EObject sourceElement, SemanticPartition semanticPartition) {
+ public Option<EvaluatedSemanticPartition> hasFastResult(EObject sourceElement, SemanticPartition semanticPartition, CreatedOutput parentElement) {
return Options.newNone();
}
diff --git a/plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/SemanticPartitions.java b/plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/SemanticPartitions.java
index 98eb088798..6d97dcd949 100644
--- a/plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/SemanticPartitions.java
+++ b/plugins/org.eclipse.sirius.synchronizer/src/org/eclipse/sirius/synchronizer/SemanticPartitions.java
@@ -42,7 +42,7 @@ public class SemanticPartitions {
class EAllContentsPartition implements SemanticPartition {
- public EvaluatedSemanticPartition evaluate(EObject root) {
+ public EvaluatedSemanticPartition evaluate(EObject root, CreatedOutput parentElement) {
return new EObjectList(Lists.newArrayList(root.eAllContents()));
}
diff --git a/plugins/org.eclipse.sirius.tests.junit/data/tree/unit/variables/My.ecore b/plugins/org.eclipse.sirius.tests.junit/data/tree/unit/variables/My.ecore
new file mode 100644
index 0000000000..3e121735f5
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.junit/data/tree/unit/variables/My.ecore
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ name="p"/>
diff --git a/plugins/org.eclipse.sirius.tests.junit/data/tree/unit/variables/project.odesign b/plugins/org.eclipse.sirius.tests.junit/data/tree/unit/variables/project.odesign
new file mode 100644
index 0000000000..83547520b3
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.junit/data/tree/unit/variables/project.odesign
@@ -0,0 +1,79 @@
+<?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/tree/description/1.0.0" name="project" version="10.0.0.201411061000">
+ <ownedViewpoints name="Tree">
+ <ownedRepresentations xsi:type="description_1:TreeDescription" name="Tree" domainClass="ecore.EPackage">
+ <subItemMappings name="p1" domainClass="ecore.EPackage" semanticCandidatesExpression="var:self">
+ <defaultStyle labelExpression="[name + '1'/]">
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ </defaultStyle>
+ <subItemMappings name="p1.1-reuse-p1.2" domainClass="ecore.EPackage" semanticCandidatesExpression="var:container" reusedTreeItemMappings="//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p1']/@subItemMappings[name='p1.2']">
+ <defaultStyle labelExpression="[name + '2'/]">
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ </defaultStyle>
+ </subItemMappings>
+ <subItemMappings name="p1.2" domainClass="ecore.EPackage" semanticCandidatesExpression="[container/]">
+ <defaultStyle labelExpression="[name + '3'/]">
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ </defaultStyle>
+ </subItemMappings>
+ <subItemMappings name="p1.3-reuse-p1.2" domainClass="ecore.EPackage" semanticCandidatesExpression="var:container" reusedTreeItemMappings="//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p1']/@subItemMappings[name='p1.1-reuse-p1.2']">
+ <defaultStyle labelExpression="[name + '4'/]">
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ </defaultStyle>
+ </subItemMappings>
+ </subItemMappings>
+ <subItemMappings name="p2" domainClass="ecore.EPackage" semanticCandidatesExpression="var:self">
+ <defaultStyle labelExpression="[name + '5'/]">
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ </defaultStyle>
+ <subItemMappings name="p2.1-reuse-p2.2" domainClass="ecore.EPackage" semanticCandidatesExpression="var:container" reusedTreeItemMappings="//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p2']/@subItemMappings[name='p2.2']">
+ <defaultStyle labelExpression="[name + '6'/]">
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ </defaultStyle>
+ </subItemMappings>
+ <subItemMappings name="p2.2" domainClass="ecore.EPackage" semanticCandidatesExpression="[container/]">
+ <defaultStyle labelExpression="[name + '7'/]">
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ </defaultStyle>
+ </subItemMappings>
+ <subItemMappings name="p2.3-reuse-p2.1" domainClass="ecore.EPackage" semanticCandidatesExpression="var:container" reusedTreeItemMappings="//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p2']/@subItemMappings[name='p2.1-reuse-p2.2']">
+ <defaultStyle labelExpression="[name + '8'/]">
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ </defaultStyle>
+ </subItemMappings>
+ <subItemMappings name="p3" domainClass="ecore.EPackage" semanticCandidatesExpression="var:self">
+ <defaultStyle labelExpression="[name + '9'/]">
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ </defaultStyle>
+ <subItemMappings name="p3.1-reuse-p3.2" domainClass="ecore.EPackage" semanticCandidatesExpression="var:container" reusedTreeItemMappings="//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p2']/@subItemMappings[name='p3']/@subItemMappings[name='p3.2']">
+ <defaultStyle labelExpression="[name + '10'/]">
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ </defaultStyle>
+ </subItemMappings>
+ <subItemMappings name="p3.2" domainClass="ecore.EPackage" semanticCandidatesExpression="[container/]">
+ <defaultStyle labelExpression="[name + '11'/]">
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ </defaultStyle>
+ </subItemMappings>
+ <subItemMappings name="p3.3-reuse-p2" domainClass="ecore.EPackage" semanticCandidatesExpression="var:container" reusedTreeItemMappings="//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p2']/@subItemMappings[name='p3']/@subItemMappings[name='p3.1-reuse-p3.2']">
+ <defaultStyle labelExpression="[name + '12'/]">
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ </defaultStyle>
+ </subItemMappings>
+ </subItemMappings>
+ </subItemMappings>
+ </ownedRepresentations>
+ </ownedViewpoints>
+</description:Group>
diff --git a/plugins/org.eclipse.sirius.tests.junit/data/tree/unit/variables/representations.aird b/plugins/org.eclipse.sirius.tests.junit/data/tree/unit/variables/representations.aird
new file mode 100644
index 0000000000..1508094a06
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.junit/data/tree/unit/variables/representations.aird
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<viewpoint:DAnalysis 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/tree/description/1.0.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:tree="http://www.eclipse.org/sirius/tree/1.0.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/tree/description/1.0.0 http://www.eclipse.org/sirius/tree/1.0.0#//description" xmi:id="_KpzNQIFVEeSotqVgOhyafg" selectedViews="_Pjl08LNhEeSDfIge-GfFOQ" version="10.0.0.201412231738">
+ <models xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_NWSBoIFVEeSotqVgOhyafg" initialized="true">
+ <viewpoint xmi:type="description:Viewpoint" href="platform:/resource/my.project.design/description/project.odesign#//@ownedViewpoints[name='a']"/>
+ </ownedViews>
+ <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_Pjl08LNhEeSDfIge-GfFOQ" initialized="true">
+ <ownedRepresentations xmi:type="tree:DTree" xmi:id="_0gU0MLNmEeSDfIge-GfFOQ" name="new Tree">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_0gU0MbNmEeSDfIge-GfFOQ" name="p1" expanded="true">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_2IJWAO9QEeSKRItqswzrVw" name="p2" expanded="true">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_2IKkIu9QEeSKRItqswzrVw" name="p3">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_2IKkI-9QEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_2xTnwe9QEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_2xTnwO9QEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p1']/@subItemMappings[name='p1.2']"/>
+ </ownedTreeItems>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_2IJWAe9QEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_2IJWBe9QEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_2IJWBO9QEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p1']/@subItemMappings[name='p1.1-reuse-p1.2']"/>
+ </ownedTreeItems>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_2IJ9EO9QEeSKRItqswzrVw" name="p3">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_2IJ9Ee9QEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_2IJ9Fe9QEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_2IJ9FO9QEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p1']/@subItemMappings[name='p1.2']"/>
+ </ownedTreeItems>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_2IJ9Fu9QEeSKRItqswzrVw" name="p4" expanded="true">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_2ILLMO9QEeSKRItqswzrVw" name="p2" expanded="true">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_2b0f8O9QEeSKRItqswzrVw" name="p3">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_2b0f8e9QEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_2jQkse9QEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_2jQksO9QEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p1']/@subItemMappings[name='p1.2']"/>
+ </ownedTreeItems>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_2ILLMe9QEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_2b0f9e9QEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_2b0f9O9QEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p1']/@subItemMappings[name='p1.1-reuse-p1.2']"/>
+ </ownedTreeItems>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_2IJ9F-9QEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_2IKkIe9QEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_2IKkIO9QEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p1']/@subItemMappings[name='p1.3-reuse-p1.2']"/>
+ </ownedTreeItems>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_0gU0NrNmEeSDfIge-GfFOQ">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_0gU0N7NmEeSDfIge-GfFOQ"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_0gU0OLNmEeSDfIge-GfFOQ" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p1']"/>
+ </ownedTreeItems>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_sy8WoO9PEeSKRItqswzrVw" name="p5" expanded="true">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_2ILLNO9QEeSKRItqswzrVw" name="p6" expanded="true">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_2-Th8O9QEeSKRItqswzrVw" name="p7">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_2-Th8e9QEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_3E6gQe9QEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_3E6gQO9QEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p2']/@subItemMappings[name='p2.2']"/>
+ </ownedTreeItems>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_2ILLNe9QEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_2-V-Me9QEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_2-V-MO9QEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p2']/@subItemMappings[name='p2.1-reuse-p2.2']"/>
+ </ownedTreeItems>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_2-OCYO9QEeSKRItqswzrVw" name="p7">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_2-OCYe9QEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_2-Opce9QEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_2-OpcO9QEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p2']/@subItemMappings[name='p2.2']"/>
+ </ownedTreeItems>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_2-P3kO9QEeSKRItqswzrVw" name="p8" expanded="true">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_2-UJAO9QEeSKRItqswzrVw" name="p6" expanded="true">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_3PhNwO9QEeSKRItqswzrVw" name="p7">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_3PhNwe9QEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_3aRsQe9QEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_3aRsQO9QEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p2']/@subItemMappings[name='p2.2']"/>
+ </ownedTreeItems>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_2-UJAe9QEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_3Ph00e9QEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_3Ph00O9QEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p2']/@subItemMappings[name='p2.1-reuse-p2.2']"/>
+ </ownedTreeItems>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_2-P3ke9QEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_2-Qeoe9QEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_2-QeoO9QEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p2']/@subItemMappings[name='p2.3-reuse-p2.1']"/>
+ </ownedTreeItems>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_2-RswO9QEeSKRItqswzrVw" name="p9" expanded="true">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_2-VXIO9QEeSKRItqswzrVw" name="p10" expanded="true">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_3VONIO9QEeSKRItqswzrVw" name="p11">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_3VONIe9QEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_3fdHMe9QEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_3fdHMO9QEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p2']/@subItemMappings[name='p3']/@subItemMappings[name='p3.2']"/>
+ </ownedTreeItems>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_2-VXIe9QEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_3VPbRe9QEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_3VPbRO9QEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p2']/@subItemMappings[name='p3']/@subItemMappings[name='p3.1-reuse-p3.2']"/>
+ </ownedTreeItems>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_3VKiwO9QEeSKRItqswzrVw" name="p11">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_3VKiwe9QEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_3VLJ0e9QEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_3VLJ0O9QEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p2']/@subItemMappings[name='p3']/@subItemMappings[name='p3.2']"/>
+ </ownedTreeItems>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_3VMX8O9QEeSKRItqswzrVw" name="p12" expanded="true">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_3VPbQO9QEeSKRItqswzrVw" name="p10" expanded="true">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedTreeItems xmi:type="tree:DTreeItem" xmi:id="_3l34QO9QEeSKRItqswzrVw" name="p11">
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_3l34Qe9QEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_3u4qUO9QEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_3u4DQO9QEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p2']/@subItemMappings[name='p3']/@subItemMappings[name='p3.2']"/>
+ </ownedTreeItems>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_3VPbQe9QEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_3l4fUe9QEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_3l4fUO9QEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p2']/@subItemMappings[name='p3']/@subItemMappings[name='p3.1-reuse-p3.2']"/>
+ </ownedTreeItems>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_3VMX8e9QEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_3VM_AO9QEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_3VMX9O9QEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p2']/@subItemMappings[name='p3']/@subItemMappings[name='p3.3-reuse-p2']"/>
+ </ownedTreeItems>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_2-Rswe9QEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_2-Rsxe9QEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_2-RsxO9QEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p2']/@subItemMappings[name='p3']"/>
+ </ownedTreeItems>
+ <semanticElements xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ <ownedStyle xmi:type="tree:TreeItemStyle" xmi:id="_sy8Woe9PEeSKRItqswzrVw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_sy8Wpe9PEeSKRItqswzrVw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_sy8WpO9PEeSKRItqswzrVw" red="255" green="255" blue="255"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:TreeItemMapping" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']/@subItemMappings[name='p2']"/>
+ </ownedTreeItems>
+ <description xmi:type="description_1:TreeDescription" href="project.odesign#//@ownedViewpoints[name='Tree']/@ownedRepresentations[name='Tree']"/>
+ </ownedRepresentations>
+ <viewpoint xmi:type="description:Viewpoint" href="project.odesign#//@ownedViewpoints[name='Tree']"/>
+ </ownedViews>
+</viewpoint:DAnalysis>
diff --git a/plugins/org.eclipse.sirius.tests.tree/src/org/eclipse/sirius/tests/suite/tree/AllTreePluginTests.java b/plugins/org.eclipse.sirius.tests.tree/src/org/eclipse/sirius/tests/suite/tree/AllTreePluginTests.java
index 666560b157..e69838d065 100644
--- a/plugins/org.eclipse.sirius.tests.tree/src/org/eclipse/sirius/tests/suite/tree/AllTreePluginTests.java
+++ b/plugins/org.eclipse.sirius.tests.tree/src/org/eclipse/sirius/tests/suite/tree/AllTreePluginTests.java
@@ -14,6 +14,7 @@ import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import junit.textui.TestRunner;
+
import org.eclipse.sirius.tests.api.tools.RefreshWhenSeveralEditorsOpenTest;
import org.eclipse.sirius.tests.api.tools.TreeItemCreationToolsTest;
import org.eclipse.sirius.tests.api.tools.TreeItemDeletionToolsTest;
@@ -24,6 +25,7 @@ import org.eclipse.sirius.tests.api.tools.TreeItemRefreshWithToolsTest;
import org.eclipse.sirius.tests.unit.tree.MappingHierarchyTableTest;
import org.eclipse.sirius.tests.unit.tree.TreeItemOrderTests;
import org.eclipse.sirius.tests.unit.tree.TreeRefreshTests;
+import org.eclipse.sirius.tests.unit.tree.TreeVariablesTest;
/**
* The designer main test suite for the tree component.
@@ -59,6 +61,7 @@ public class AllTreePluginTests extends TestCase {
suite.addTestSuite(MappingHierarchyTableTest.class);
suite.addTestSuite(TreeItemEditionToolTest.class);
suite.addTestSuite(TreeRefreshTests.class);
+ suite.addTestSuite(TreeVariablesTest.class);
suite.addTestSuite(TreeItemDragAndDropToolTest.class);
suite.addTestSuite(TreeItemDragAndDropToolUsingRecordingCommandCompositionTest.class);
suite.addTestSuite(RefreshWhenSeveralEditorsOpenTest.class);
diff --git a/plugins/org.eclipse.sirius.tests.tree/src/org/eclipse/sirius/tests/unit/tree/MappingBasedPartitionTests.java b/plugins/org.eclipse.sirius.tests.tree/src/org/eclipse/sirius/tests/unit/tree/MappingBasedPartitionTests.java
index 8d5e11555c..f34cdf9a7f 100644
--- a/plugins/org.eclipse.sirius.tests.tree/src/org/eclipse/sirius/tests/unit/tree/MappingBasedPartitionTests.java
+++ b/plugins/org.eclipse.sirius.tests.tree/src/org/eclipse/sirius/tests/unit/tree/MappingBasedPartitionTests.java
@@ -56,7 +56,7 @@ public class MappingBasedPartitionTests {
MappingBasedPartition partition = new MappingBasedPartition(ctx, "EObject", Options.newSome("<%eClassifiers%>"), Options.<EObject> newNone());
EPackage semanticModel = (EPackage) EcoreUtil.copy(EcorePackage.eINSTANCE);
- Iterator<EObject> itTree = partition.evaluate(semanticModel).elements();
+ Iterator<EObject> itTree = partition.evaluate(semanticModel, null).elements();
Iterator<EClassifier> itSemContent = semanticModel.getEClassifiers().iterator();
Assert.assertTrue(itTree.hasNext());
@@ -73,7 +73,7 @@ public class MappingBasedPartitionTests {
MappingBasedPartition partition = new MappingBasedPartition(ctx, "EClass", Options.newSome("<%eClassifiers%>"), Options.<EObject> newNone());
EPackage semanticModel = (EPackage) EcoreUtil.copy(EcorePackage.eINSTANCE);
- Iterator<EObject> itTree = partition.evaluate(semanticModel).elements();
+ Iterator<EObject> itTree = partition.evaluate(semanticModel, null).elements();
Iterator<EClassifier> itSemContent = semanticModel.getEClassifiers().iterator();
Assert.assertTrue(itTree.hasNext());
diff --git a/plugins/org.eclipse.sirius.tests.tree/src/org/eclipse/sirius/tests/unit/tree/TreeVariablesTest.java b/plugins/org.eclipse.sirius.tests.tree/src/org/eclipse/sirius/tests/unit/tree/TreeVariablesTest.java
new file mode 100644
index 0000000000..939a3e027c
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.tree/src/org/eclipse/sirius/tests/unit/tree/TreeVariablesTest.java
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ * 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
+ *******************************************************************************/
+package org.eclipse.sirius.tests.unit.tree;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.sirius.tests.SiriusTestsPlugin;
+import org.eclipse.sirius.tests.support.api.TestsUtil;
+import org.eclipse.sirius.tests.support.api.TreeTestCase;
+import org.eclipse.sirius.tree.DTree;
+import org.eclipse.sirius.tree.ui.business.api.helper.TreeUIHelper;
+import org.eclipse.sirius.ui.business.api.dialect.DialectUIManager;
+import org.eclipse.sirius.ui.tools.internal.editor.AbstractDTreeEditor;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.ui.IEditorPart;
+
+/**
+ * Test available variables for TreeItem's semantic candidates expression.
+ *
+ * @author <a href="mailto:belqassim.djafer@obeo.fr">Belqassim Djafer</a>
+ *
+ */
+public class TreeVariablesTest extends TreeTestCase {
+
+ /**
+ * Representation name.
+ */
+ private static String TREE_REPRESENTATION_NAME = "Tree";
+
+ /**
+ * The path for resources test.
+ */
+ private static String PATH = "/data/tree/unit/variables/";
+
+ /**
+ * Semantic model path.
+ */
+ private static String SEMANTIC_RESOURCE_FILENAME = "My.ecore";
+
+ /**
+ * Viewpoint specific model filename.
+ */
+ private static String MODELER_RESOURCE_FILENAME = "project.odesign";
+
+ /**
+ * Session name.
+ */
+ private static String SESSION_RESOURCE_FILENAME = "representations.aird";
+
+ final String SEMANTIC_MODEL_PATH = "/" + SiriusTestsPlugin.PLUGIN_ID + PATH + SEMANTIC_RESOURCE_FILENAME;
+
+ final String MODELER_PATH = "/" + SiriusTestsPlugin.PLUGIN_ID + PATH + MODELER_RESOURCE_FILENAME;
+
+ final String SESSION_PATH = "/" + SiriusTestsPlugin.PLUGIN_ID + PATH + SESSION_RESOURCE_FILENAME;
+
+ /**
+ * the opened editor.
+ */
+ private IEditorPart openedEditor;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ genericSetUp(SEMANTIC_MODEL_PATH, MODELER_PATH, SESSION_PATH);
+ DTree tree = (DTree) getRepresentations(TREE_REPRESENTATION_NAME).toArray()[0];
+ openedEditor = DialectUIManager.INSTANCE.openEditor(session, tree, new NullProgressMonitor());
+ TestsUtil.synchronizationWithUIThread();
+ }
+
+ /**
+ * Ensure that available variables for TreeItem's semantic candidates
+ * expression are correctly executed and all tree elements are represented
+ * as expected.
+ */
+ public void testAvailableVariablesForTreeItem() {
+ // Get the HTML format of opened tree
+ AbstractDTreeEditor treeEditor = (AbstractDTreeEditor) openedEditor;
+ Tree tree = treeEditor.getTableViewer().getTreeViewer().getTree();
+ String currentHtml = TreeUIHelper.toContentHTMl(tree);
+
+ // Check that all elements are present in the tree
+ assertEquals("Elements are not represented as expected", getModelHtml(), currentHtml);
+ }
+
+ private static String getModelHtml() {
+ List<String> expected = new ArrayList<String>();
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p1"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p2"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p3"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p3"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p4"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p2"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p3"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p5"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p6"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p7"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p7"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p8"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p6"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p7"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p9"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p10"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p11"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p11"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p12"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p10"));
+ TreeUIHelper.addLineToTree(expected, String.valueOf("p11"));
+ return TreeUIHelper.toHTML(expected);
+ }
+
+}
diff --git a/plugins/org.eclipse.sirius.tree/src/org/eclipse/sirius/tree/business/internal/dialect/common/viewpoint/MappingBasedPartition.java b/plugins/org.eclipse.sirius.tree/src/org/eclipse/sirius/tree/business/internal/dialect/common/viewpoint/MappingBasedPartition.java
index 46d0944e0e..07ad59c06d 100644
--- a/plugins/org.eclipse.sirius.tree/src/org/eclipse/sirius/tree/business/internal/dialect/common/viewpoint/MappingBasedPartition.java
+++ b/plugins/org.eclipse.sirius.tree/src/org/eclipse/sirius/tree/business/internal/dialect/common/viewpoint/MappingBasedPartition.java
@@ -17,10 +17,14 @@ import java.util.Iterator;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.sirius.common.tools.api.interpreter.EvaluationException;
+import org.eclipse.sirius.common.tools.api.interpreter.IInterpreterSiriusVariables;
import org.eclipse.sirius.ext.base.Option;
+import org.eclipse.sirius.synchronizer.CreatedOutput;
import org.eclipse.sirius.synchronizer.EvaluatedSemanticPartition;
+import org.eclipse.sirius.synchronizer.OutputDescriptor;
import org.eclipse.sirius.synchronizer.SemanticPartition;
import org.eclipse.sirius.synchronizer.SemanticPartitions;
+import org.eclipse.sirius.tree.business.internal.helper.TreeHelper;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
@@ -35,6 +39,8 @@ import com.google.common.collect.Lists;
*/
public class MappingBasedPartition implements SemanticPartition {
+ private static final String TREE = "tree";
+
private String domainClass;
private Option<String> semanticCandidate;
@@ -62,12 +68,9 @@ public class MappingBasedPartition implements SemanticPartition {
this.specificationAttachment = specificationAttachment;
}
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.sirius.tree.internal.business.dialect.common.SemanticPartition#evaluate(org.eclipse.emf.ecore.EObject)
- */
- public EvaluatedSemanticPartition evaluate(EObject root) {
+ @Override
+ public EvaluatedSemanticPartition evaluate(EObject root, CreatedOutput parentElement) {
+ setTreeElementVariables(parentElement);
Iterator<EObject> elements = Collections.<EObject> emptyList().iterator();
if (semanticCandidate.some()) {
try {
@@ -78,6 +81,7 @@ public class MappingBasedPartition implements SemanticPartition {
} else {
elements = allEObjectsOfTheSession();
}
+ unSetTreeElementVariables();
return SemanticPartitions.eObjectList(ImmutableList.copyOf(Iterators.filter(elements, new Predicate<EObject>() {
public boolean apply(EObject input) {
@@ -106,4 +110,24 @@ public class MappingBasedPartition implements SemanticPartition {
}
return semanticRoots;
}
+
+ private void setTreeElementVariables(CreatedOutput element) {
+ if (element != null) {
+ OutputDescriptor descriptor = element.getDescriptor();
+ if (descriptor != null && descriptor.getSourceElement() != null) {
+ ctx.getInterpreter().setVariable(IInterpreterSiriusVariables.CONTAINER, descriptor.getSourceElement());
+ }
+ EObject createdElement = element.getCreatedElement();
+ if (createdElement != null) {
+ ctx.getInterpreter().setVariable(IInterpreterSiriusVariables.CONTAINER_VIEW, createdElement);
+ ctx.getInterpreter().setVariable(TREE, TreeHelper.getTree(createdElement));
+ }
+ }
+ }
+
+ private void unSetTreeElementVariables() {
+ ctx.getInterpreter().unSetVariable(IInterpreterSiriusVariables.CONTAINER);
+ ctx.getInterpreter().unSetVariable(IInterpreterSiriusVariables.CONTAINER_VIEW);
+ ctx.getInterpreter().unSetVariable(TREE);
+ }
}

Back to the top