diff options
| author | cbrun | 2015-04-24 12:32:36 +0000 |
|---|---|---|
| committer | cbrun | 2015-04-27 12:00:22 +0000 |
| commit | 915df21a09b35f257dda2c3a0d72d91b666151cf (patch) | |
| tree | b2401db8ada9ba3c0e18524ad28ec4ff11d613fe | |
| parent | 366756a03360c0ad6c40e532fbc81d50d5d4c2b6 (diff) | |
| download | org.eclipse.sirius-915df21a09b35f257dda2c3a0d72d91b666151cf.tar.gz org.eclipse.sirius-915df21a09b35f257dda2c3a0d72d91b666151cf.tar.xz org.eclipse.sirius-915df21a09b35f257dda2c3a0d72d91b666151cf.zip | |
[465400] Add containerView var declaration for ToolDescription
Adding the declaration in two situations : when the parent context is a
ToolDescription *and* when the current VSM element is a ToolDescription
and the current feature is 'precondition'.
Bug: 465400
Change-Id: I7a9bd643608ae5b9f118734d664d31350927b335
Signed-off-by: Cedric Brun <cedric.brun@obeo.fr>
2 files changed, 71 insertions, 12 deletions
diff --git a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/vsm/interpreted/expression/variables/SiriusVariablesTest.java b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/vsm/interpreted/expression/variables/SiriusVariablesTest.java index 156845b87f..a3582c7222 100644 --- a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/vsm/interpreted/expression/variables/SiriusVariablesTest.java +++ b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/vsm/interpreted/expression/variables/SiriusVariablesTest.java @@ -10,10 +10,22 @@ *******************************************************************************/ package org.eclipse.sirius.tests.unit.api.vsm.interpreted.expression.variables; +import java.util.Set; + import org.eclipse.emf.ecore.EPackage; +import org.eclipse.sirius.common.tools.api.interpreter.IInterpreterContext; import org.eclipse.sirius.diagram.DiagramPackage; +import org.eclipse.sirius.diagram.description.DescriptionFactory; +import org.eclipse.sirius.diagram.description.DiagramDescription; +import org.eclipse.sirius.diagram.description.tool.ToolFactory; +import org.eclipse.sirius.diagram.description.tool.ToolSection; import org.eclipse.sirius.tests.support.api.AbstractInterpretedExpressionTestCase; +import org.eclipse.sirius.tools.api.interpreter.context.SiriusInterpreterContextFactory; import org.eclipse.sirius.viewpoint.ViewpointPackage; +import org.eclipse.sirius.viewpoint.description.tool.ChangeContext; +import org.eclipse.sirius.viewpoint.description.tool.InitialOperation; +import org.eclipse.sirius.viewpoint.description.tool.ToolDescription; +import org.eclipse.sirius.viewpoint.description.tool.ToolPackage; /** * Test documentation of interpreted expressions. @@ -22,16 +34,48 @@ import org.eclipse.sirius.viewpoint.ViewpointPackage; */ public class SiriusVariablesTest extends AbstractInterpretedExpressionTestCase { - @Override - protected void setUp() throws Exception { - setBasePackage(ViewpointPackage.eINSTANCE); - super.setUp(); - } - - @Override - protected EPackage getDialectPackage() { - // Required until Bug 450473 correction: viewpoint.ecore contains - // variables typed with diagram.Diagram - return DiagramPackage.eINSTANCE; - } + @Override + protected void setUp() throws Exception { + setBasePackage(ViewpointPackage.eINSTANCE); + super.setUp(); + } + + @Override + protected EPackage getDialectPackage() { + // Required until Bug 450473 correction: viewpoint.ecore contains + // variables typed with diagram.Diagram + return DiagramPackage.eINSTANCE; + } + + public void testGenericToolVariables() { + ToolDescription vsmElement = createGenericTool(); + IInterpreterContext context = SiriusInterpreterContextFactory.createInterpreterContext(vsmElement, ToolPackage.Literals.ABSTRACT_TOOL_DESCRIPTION__PRECONDITION); + Set<String> keySet = context.getVariables().keySet(); + assertTrue("The interpreter context should contains the variable containerView", keySet.contains("containerView")); + } + + public void testGenericToolVariablesInChildren() { + ToolDescription vsmElement = createGenericTool(); + + ChangeContext chgCtx = org.eclipse.sirius.viewpoint.description.tool.ToolFactory.eINSTANCE.createChangeContext(); + chgCtx.setBrowseExpression("var:containerView"); + + InitialOperation initOp = org.eclipse.sirius.viewpoint.description.tool.ToolFactory.eINSTANCE.createInitialOperation(); + initOp.setFirstModelOperations(chgCtx); + vsmElement.setInitialOperation(initOp); + + IInterpreterContext context = SiriusInterpreterContextFactory.createInterpreterContext(chgCtx, ToolPackage.Literals.CHANGE_CONTEXT__BROWSE_EXPRESSION); + Set<String> keySet = context.getVariables().keySet(); + assertTrue("The interpreter context should contains the variable containerView", keySet.contains("containerView")); + } + + private ToolDescription createGenericTool() { + ToolDescription vsmElement = org.eclipse.sirius.viewpoint.description.tool.ToolFactory.eINSTANCE.createToolDescription(); + DiagramDescription diagramDescription = DescriptionFactory.eINSTANCE.createDiagramDescription(); + ToolSection createToolSection = ToolFactory.eINSTANCE.createToolSection(); + diagramDescription.setToolSection(createToolSection); + createToolSection.getOwnedTools().add(vsmElement); + return vsmElement; + } + } diff --git a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/dialect/description/AbstractInterpretedExpressionQuery.java b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/dialect/description/AbstractInterpretedExpressionQuery.java index f8348d66c1..3f77c8e455 100644 --- a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/dialect/description/AbstractInterpretedExpressionQuery.java +++ b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/dialect/description/AbstractInterpretedExpressionQuery.java @@ -46,6 +46,7 @@ import org.eclipse.sirius.viewpoint.description.tool.ExternalJavaAction; import org.eclipse.sirius.viewpoint.description.tool.For; import org.eclipse.sirius.viewpoint.description.tool.InitialOperation; import org.eclipse.sirius.viewpoint.description.tool.ModelOperation; +import org.eclipse.sirius.viewpoint.description.tool.ToolDescription; import org.eclipse.sirius.viewpoint.description.tool.ToolPackage; import org.eclipse.sirius.viewpoint.description.tool.VariableContainer; import org.eclipse.sirius.viewpoint.description.validation.ValidationPackage; @@ -272,8 +273,22 @@ public abstract class AbstractInterpretedExpressionQuery implements IInterpreted if (toolContext.some()) { EObject operationContext = toolContext.get(); collectContextualVariableDefinitions(availableVariables, operationContext, target); + if (operationContext instanceof ToolDescription) { + /* + * the containerView variable is accessible in any Model + * operation which is a child of the ToolDescription. + */ + availableVariables.put("containerView", VariableType.fromString("viewpoint.DSemanticDecorator")); + } } collectLocalVariablesDefinitions(); + if (this.target instanceof ToolDescription && feature == ToolPackage.Literals.ABSTRACT_TOOL_DESCRIPTION__PRECONDITION) { + /* + * the containerView variable is accessible in the "precondition" + * feature of the ToolDescription. See GenericToolCommandBuilder. + */ + availableVariables.put("containerView", VariableType.fromString("viewpoint.DSemanticDecorator")); + } return availableVariables; } |
