Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcbrun2015-04-24 12:32:36 +0000
committercbrun2015-04-27 12:00:22 +0000
commit915df21a09b35f257dda2c3a0d72d91b666151cf (patch)
treeb2401db8ada9ba3c0e18524ad28ec4ff11d613fe
parent366756a03360c0ad6c40e532fbc81d50d5d4c2b6 (diff)
downloadorg.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>
-rw-r--r--plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/vsm/interpreted/expression/variables/SiriusVariablesTest.java68
-rw-r--r--plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/dialect/description/AbstractInterpretedExpressionQuery.java15
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;
}

Back to the top