Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorashatilov2015-07-06 22:04:50 +0000
committerGerrit Code Review @ Eclipse.org2015-08-03 12:22:23 +0000
commite6846e7efbc79c14851338e5842f25cf42034a3f (patch)
treebe6289c5191db00984ffc6467cadd3fcfcdc018c /plugins/uml/org.eclipse.papyrus.uml.service.types
parenta4d0e95d6b048a529107149224659418914eb27e (diff)
downloadorg.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.java26
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) {

Back to the top