diff options
| author | Maxime Porhel | 2015-09-11 12:17:51 +0000 |
|---|---|---|
| committer | Maxime Porhel | 2015-09-14 12:14:05 +0000 |
| commit | 993182f60d15d6d413dee22ef50f6c2c8dd8a460 (patch) | |
| tree | 63dd8aea99eb1c8a93114aec7183b3f909a5d8d7 | |
| parent | 0869d6a397490821fe5feaeda1583b596d113786 (diff) | |
| download | org.eclipse.sirius-993182f60d15d6d413dee22ef50f6c2c8dd8a460.tar.gz org.eclipse.sirius-993182f60d15d6d413dee22ef50f6c2c8dd8a460.tar.xz org.eclipse.sirius-993182f60d15d6d413dee22ef50f6c2c8dd8a460.zip | |
[470859] Add no region validation rule for Sequence diagram
Correct some type in the validation messages too.
Bug: 470859
Change-Id: I496632cc9f70ec8579434bd15d4cb99acdeb3b6f
Signed-off-by: Maxime Porhel <maxime.porhel@obeo.fr>
5 files changed, 101 insertions, 5 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.sequence/META-INF/MANIFEST.MF b/plugins/org.eclipse.sirius.diagram.sequence/META-INF/MANIFEST.MF index 66b00b5f38..2353973335 100644 --- a/plugins/org.eclipse.sirius.diagram.sequence/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.sirius.diagram.sequence/META-INF/MANIFEST.MF @@ -40,6 +40,7 @@ Export-Package: org.eclipse.sirius.diagram.sequence;version="2.1.0", org.eclipse.sirius.diagram.sequence.template.impl;version="3.0.0", org.eclipse.sirius.diagram.sequence.template.util;version="2.0.4", org.eclipse.sirius.diagram.sequence.tool.internal.action.repair;x-internal:=true;version="2.0.4", + org.eclipse.sirius.diagram.sequence.tool.internal.validation.description.constraints;x-internal:=true;version="3.1.0", org.eclipse.sirius.diagram.sequence.util;version="3.0.0" Require-Bundle: org.eclipse.sirius.common;bundle-version="2.0.0", org.eclipse.sirius.ecore.extender;bundle-version="2.0.0", diff --git a/plugins/org.eclipse.sirius.diagram.sequence/plugin.properties b/plugins/org.eclipse.sirius.diagram.sequence/plugin.properties index f53a3ea8a1..458521a6c3 100644 --- a/plugins/org.eclipse.sirius.diagram.sequence/plugin.properties +++ b/plugins/org.eclipse.sirius.diagram.sequence/plugin.properties @@ -24,6 +24,11 @@ pluginName = Sirius Sequence Diagrams Model providerName = Eclipse Modeling Project +category.siriusSequenceDiagramConstraints.name = Sirius Sequence Diagram Constrains +constraint.noSequenceContainerRegionChildrenPresentation.name = No Regions in Sequence containers +constraint.noSequenceContainerRegionChildrenPresentation.message = Invalid children presentation on {0}: The horizontal/vertical stack children presentations are not supported for CombinedFragment, InteractionUse and Operand mappings. +constraint.noSequenceContainerRegionChildrenPresentation.description = Validates that the CombinedFragment, InteractionUse and Operand mappings are not configured as RegionContainer. + AbstractFrame_coverageProfilerTaskCategory = Sequence AbstractFrame_coverageProfilerTaskName = Compute interaction use coverage AbstractNodeEvent_nonAbstractNodeEventNode = The node does not represent an AbstractNodeEvent. diff --git a/plugins/org.eclipse.sirius.diagram.sequence/plugin.xml b/plugins/org.eclipse.sirius.diagram.sequence/plugin.xml index 3db8038714..dc69ae6cac 100644 --- a/plugins/org.eclipse.sirius.diagram.sequence/plugin.xml +++ b/plugins/org.eclipse.sirius.diagram.sequence/plugin.xml @@ -67,4 +67,39 @@ class="org.eclipse.sirius.diagram.sequence.business.internal.metamodel.SequenceDiagramMetamodelsProvider"> </descriptorprovider> </extension> + <extension + point="org.eclipse.emf.validation.constraintProviders"> + <category + id="org.eclipse.sirius.diagram.constraints" + name="%category.siriusSequenceDiagramConstraints.name"> + </category> + <constraintProvider + cache="true" + mode="Batch"> + <package + namespaceUri="http://www.eclipse.org/sirius/diagram/description/1.1.0"> + </package> + <constraints + categories="http://www.eclipse.org/sirius/diagram/sequence/description/2.0.0"> + </constraints> + <constraints + categories="org.eclipse.sirius.diagram.constraints"> + <constraint + class="org.eclipse.sirius.diagram.sequence.tool.internal.validation.description.constraints.SequenceContainerMappingChildrenPresentationConstraints" + id="org.eclipse.sirius.diagram.sequence.NoSequenceContainerRegionChildrenPresentation" + lang="Java" + mode="Batch" + name="%constraint.noSequenceContainerRegionChildrenPresentation.name" + severity="ERROR" + statusCode="1"> + <message> + %constraint.noSequenceContainerRegionChildrenPresentation.message + </message> + <description> + %constraint.noSequenceContainerRegionChildrenPresentation.description + </description> + </constraint> + </constraints> + </constraintProvider> + </extension> </plugin> diff --git a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/tool/internal/validation/description/constraints/SequenceContainerMappingChildrenPresentationConstraints.java b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/tool/internal/validation/description/constraints/SequenceContainerMappingChildrenPresentationConstraints.java new file mode 100644 index 0000000000..02b0e1bba3 --- /dev/null +++ b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/tool/internal/validation/description/constraints/SequenceContainerMappingChildrenPresentationConstraints.java @@ -0,0 +1,56 @@ +/******************************************************************************* + * 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.diagram.sequence.tool.internal.validation.description.constraints; + +import org.eclipse.core.runtime.IStatus; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.validation.AbstractModelConstraint; +import org.eclipse.emf.validation.IValidationContext; +import org.eclipse.sirius.diagram.business.api.query.ContainerMappingQuery; +import org.eclipse.sirius.diagram.description.ContainerMapping; +import org.eclipse.sirius.diagram.sequence.description.FrameMapping; +import org.eclipse.sirius.diagram.sequence.description.OperandMapping; + +/** + * Container children presentation related validation rules. + * + * @author mporhel + */ +public class SequenceContainerMappingChildrenPresentationConstraints extends AbstractModelConstraint { + + /** + * Sequence children presentation rule id. + */ + public static final String SEQUENCE_NO_REGION_RULE_ID = "org.eclipse.sirius.diagram.sequence.NoSequenceContainerRegionChildrenPresentation"; //$NON-NLS-1$ + + @Override + public IStatus validate(IValidationContext ctx) { + IStatus result = ctx.createSuccessStatus(); + final EObject eObj = ctx.getTarget(); + if (eObj instanceof ContainerMapping) { + ContainerMapping containerMapping = (ContainerMapping) eObj; + if (SEQUENCE_NO_REGION_RULE_ID.equals(ctx.getCurrentConstraintId())) { + result = validateNoRegionContainerMapping(ctx, containerMapping); + } + } + return result; + } + + private IStatus validateNoRegionContainerMapping(IValidationContext ctx, ContainerMapping containerMapping) { + if (containerMapping instanceof FrameMapping || containerMapping instanceof OperandMapping) { + if (new ContainerMappingQuery(containerMapping).isRegionContainer()) { + return ctx.createFailureStatus(new Object[] { containerMapping }); + } + } + return ctx.createSuccessStatus(); + } + +} diff --git a/plugins/org.eclipse.sirius.diagram/plugin.properties b/plugins/org.eclipse.sirius.diagram/plugin.properties index 50f4d4a034..7dbd78eeab 100644 --- a/plugins/org.eclipse.sirius.diagram/plugin.properties +++ b/plugins/org.eclipse.sirius.diagram/plugin.properties @@ -89,7 +89,7 @@ constraint.candidateExpressionExistsForRecursiveMapping.description = Validates constraint.candidateExpressionExistsForRecursiveMapping.message = The SemanticCandidatesExpression field of {0} does not accept a blank value because it is recursively imported by another ContainerMapping ({1}). This can cause infinite loop, StackOverflowError (except in case of not synchronized mapping). constraint.candidateExpressionExistsForRecursiveMapping.name = Blank Candidates Expression With Recursive Mapping constraint.compartmentRecursion.description = Validates that Region Container Mapping should not be a Region (contained by another RegionContainer) -constraint.compartmentRecursion.message = The Mapping {0} is defined as a Region Container (ie children presentation set to horizontal stack or vertical stack). It is also itself defined as a Region (ie contained in a Region Container), this could lead to unexpected empty area in the region layout. +constraint.compartmentRecursion.message = The mapping {0} is defined as a Region Container (ie children presentation set to horizontal stack or vertical stack). It is also itself defined as a Region (ie contained in a Region Container), this could lead to unexpected empty area in the region layout. constraint.compartmentRecursion.name = Compartment recursivity constraint constraint.containersInContainerList.description = Validates that Container mapping should not be contained by a List mapping. constraint.containersInContainerList.message = The Mapping {0} should not be defined as a container mapping as it is contained in a Container List. @@ -124,8 +124,8 @@ constraint.noSubNodesInRegionContainer.name = No sub nodes in region container c constraint.preconditionForDndTools.description = Drag and drop tools which accept Model or Both as source should have an explicit precondition. constraint.preconditionForDndTools.message = The Drop tool {0} accepts arbitrary elements from the Model Content view as drag source. You should specify a precondition to validate the nature of the dragged element. constraint.preconditionForDndTools.name = Check that drag and drop tools which accept the model as source have an explicit precondition. -constraint.regionMappingCardinality.description = Validates that Region Container Mapping should have at least one Region mapping. -constraint.regionMappingCardinality.message = The Mapping {0} is defined as a Region Container, it should have at least one Container mapping as child or reused mapping. +constraint.regionMappingCardinality.description = Validates that RegionContainer mapping should have at least one Region mapping. +constraint.regionMappingCardinality.message = The mapping {0} is defined as a Region Container, it should have at least one Container mapping as child or reused mapping. constraint.regionMappingCardinality.name = Region mapping cardinality constraint constraint.regionStyle.description = Validates that only Gradient and Image are used as style of RegionContainer and Region mappings. constraint.regionStyle.message = The style {0} is not valid for its parent mapping {1}. Only the gradient and image styles are supported for RegionContainer and Region mappings. @@ -133,7 +133,7 @@ constraint.regionStyle.name = RegionContainer and Region style constraint constraint.representationExtensionDescriptionRepresentationName.message = {0} constraint.representationExtensionDescriptionRepresentationName.name = Representation extension description representation name validation constraint.reuseContainersInContainerList.description = Validates that List mappings does not reuse container mappings. -constraint.reuseContainersInContainerList.message = The Container List Mapping {0} should not reuse container mappings {1}. +constraint.reuseContainersInContainerList.message = The List mapping {0} should not reuse container mappings {1}. constraint.reuseContainersInContainerList.name = Reused Containers in Container List constraint constraint.siriusValidationError.description = Validation Error constraint.siriusValidationError.message = {0} @@ -156,7 +156,6 @@ constraint.validVariable.name = Valid Variables extension-point.canonicalSynchronizerFactoryOverride.name = org.eclipse.sirius.diagram.canonicalSynchronizerFactoryOverride extension-point.diagramTypeProvider.name = org.eclipse.sirius.diagram.diagramTypeProvider - AbstractDDiagramConstraint_validationErrorMessage = Validation issues AbstractDiagramCommandBuilder_diagramVariableTaskLabel = Add diagram variable AbstractDiagramCommandBuilder_refreshTaskLabel = Set RefreshEditorsPrecommitListener options |
