diff options
| author | Belqassim Djafer | 2015-02-10 10:29:15 +0000 |
|---|---|---|
| committer | Maxime Porhel | 2015-05-12 12:46:04 +0000 |
| commit | 0726c2fd312256b7a3e9b38fcccb05e5cc7fcdd8 (patch) | |
| tree | 8a034f745f8c27758da9b35636985a9867324156 | |
| parent | a95cd02acf0642adac3245f458d29c2aac599c92 (diff) | |
| download | org.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>
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); + } } |
