diff options
author | ashatilov | 2015-07-06 22:04:50 +0000 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org | 2015-08-03 12:22:23 +0000 |
commit | e6846e7efbc79c14851338e5842f25cf42034a3f (patch) | |
tree | be6289c5191db00984ffc6467cadd3fcfcdc018c /plugins/uml/org.eclipse.papyrus.uml.service.types | |
parent | a4d0e95d6b048a529107149224659418914eb27e (diff) | |
download | org.eclipse.papyrus-e6846e7efbc79c14851338e5842f25cf42034a3f.tar.gz org.eclipse.papyrus-e6846e7efbc79c14851338e5842f25cf42034a3f.tar.xz org.eclipse.papyrus-e6846e7efbc79c14851338e5842f25cf42034a3f.zip |
Bug 463990 - [State Machine] Entry/exit point transitions do not work
Change-Id: I9a97a3990d6c1cec766053e367d549499ee4eb31
Signed-off-by: ashatilov <shatilov@montages.com>
Diffstat (limited to 'plugins/uml/org.eclipse.papyrus.uml.service.types')
-rw-r--r-- | plugins/uml/org.eclipse.papyrus.uml.service.types/src/org/eclipse/papyrus/uml/service/types/helper/TransitionEditHelper.java | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/plugins/uml/org.eclipse.papyrus.uml.service.types/src/org/eclipse/papyrus/uml/service/types/helper/TransitionEditHelper.java b/plugins/uml/org.eclipse.papyrus.uml.service.types/src/org/eclipse/papyrus/uml/service/types/helper/TransitionEditHelper.java index 64eed4f96b6..cc9ffbc4670 100644 --- a/plugins/uml/org.eclipse.papyrus.uml.service.types/src/org/eclipse/papyrus/uml/service/types/helper/TransitionEditHelper.java +++ b/plugins/uml/org.eclipse.papyrus.uml.service.types/src/org/eclipse/papyrus/uml/service/types/helper/TransitionEditHelper.java @@ -27,6 +27,7 @@ import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand; import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest; import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest; +import org.eclipse.uml2.uml.Region; import org.eclipse.uml2.uml.Transition; import org.eclipse.uml2.uml.UMLPackage; import org.eclipse.uml2.uml.Vertex; @@ -60,16 +61,29 @@ public class TransitionEditHelper extends ElementEditHelper { if (false == target instanceof Vertex) { return UnexecutableCommand.INSTANCE; } - - setContainerAndFeature(req, (Vertex) source); + Region container = findRegionContainer((Vertex) source); + if (container == null) { + return UnexecutableCommand.INSTANCE; + } + setContainerAndFeature(req, container); return super.getCreateRelationshipCommand(req); } - private void setContainerAndFeature(CreateRelationshipRequest req, Vertex vertex) { - req.setContainer(vertex.getContainer()); + private void setContainerAndFeature(CreateRelationshipRequest req, Region container) { + req.setContainer(container); req.setContainmentFeature(UMLPackage.eINSTANCE.getRegion_Transition()); } + private Region findRegionContainer(Vertex source) { + if (source == null || source.eContainer() == null) { + return null; + } + if (source.eContainer() instanceof Vertex) { + return findRegionContainer((Vertex) source.eContainer()); + } + return source.eContainer() instanceof Region ? (Region) source.eContainer() : null; + } + /** * {@inheritDoc} */ @@ -80,10 +94,10 @@ public class TransitionEditHelper extends ElementEditHelper { protected CommandResult doExecuteWithResult(IProgressMonitor progressMonitor, IAdaptable info) throws ExecutionException { EObject elementToConfigure = req.getElementToConfigure(); if (!(elementToConfigure instanceof Transition)) { - return CommandResult.newErrorCommandResult("This configure command should be run against a transition. element to configure was: "+elementToConfigure); + return CommandResult.newErrorCommandResult("This configure command should be run against a transition. element to configure was: " + elementToConfigure); } Transition transition = (Transition) elementToConfigure; - + Object source = req.getParameter(CreateRelationshipRequest.SOURCE); Object target = req.getParameter(CreateRelationshipRequest.TARGET); if (source instanceof Vertex) { |