Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCamille Letavernier2014-12-08 10:14:52 +0000
committerGerrit Code Review @ Eclipse.org2014-12-08 10:14:52 +0000
commit6b8bc6f45db4bc6f9438c6597ab860d6c96f3ac3 (patch)
tree93f0939a0278e1b7841342751d642e53877dd0ec /plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence
parent0e870a32e4e0eed4fd74fae894c1671469d8c97f (diff)
parent5835a92af5f72dc7029b0908df07c30379a180f7 (diff)
downloadorg.eclipse.papyrus-6b8bc6f45db4bc6f9438c6597ab860d6c96f3ac3.tar.gz
org.eclipse.papyrus-6b8bc6f45db4bc6f9438c6597ab860d6c96f3ac3.tar.xz
org.eclipse.papyrus-6b8bc6f45db4bc6f9438c6597ab860d6c96f3ac3.zip
Merge "Bug 442969 - [Sequence Diagram] Cannot create a message from a Gate to an Execution Specification"
Diffstat (limited to 'plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence')
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/command/ExecutionOccurrenceSpecificationMessageCreateCommand.java26
1 files changed, 21 insertions, 5 deletions
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/command/ExecutionOccurrenceSpecificationMessageCreateCommand.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/command/ExecutionOccurrenceSpecificationMessageCreateCommand.java
index 2ce21c3ad7b..8c02c77a29c 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/command/ExecutionOccurrenceSpecificationMessageCreateCommand.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/command/ExecutionOccurrenceSpecificationMessageCreateCommand.java
@@ -29,8 +29,10 @@ import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
import org.eclipse.papyrus.uml.diagram.sequence.util.CommandHelper;
import org.eclipse.papyrus.uml.diagram.sequence.util.OccurrenceSpecificationHelper;
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceRequestConstant;
+import org.eclipse.uml2.uml.Element;
import org.eclipse.uml2.uml.ExecutionOccurrenceSpecification;
import org.eclipse.uml2.uml.ExecutionSpecification;
+import org.eclipse.uml2.uml.Gate;
import org.eclipse.uml2.uml.Interaction;
import org.eclipse.uml2.uml.InteractionFragment;
import org.eclipse.uml2.uml.Lifeline;
@@ -88,11 +90,17 @@ public class ExecutionOccurrenceSpecificationMessageCreateCommand extends EditEl
} else {
return CommandResult.newCancelledCommandResult();
}
- Lifeline sourceLifeline = deduceLifeline(source);
- Lifeline targetLifeline = deduceLifeline(target);
+ Element sourceObject = deduceLifeline(source);
+ if (null == sourceObject && source instanceof Gate) {
+ sourceObject = (Gate)source;
+ }
+ Element targetObject = deduceLifeline(target);
+ if (null == targetObject && target instanceof Gate) {
+ targetObject = (Gate)target;
+ }
InteractionFragment sourceContainer = (InteractionFragment) getRequest().getParameters().get(SequenceRequestConstant.SOURCE_MODEL_CONTAINER);
InteractionFragment targetContainer = (InteractionFragment) getRequest().getParameters().get(SequenceRequestConstant.TARGET_MODEL_CONTAINER);
- Message message = CommandHelper.doCreateMessage(deduceContainer(source, target), messageSort, sourceLifeline, targetLifeline, sourceContainer, targetContainer);
+ Message message = CommandHelper.doCreateMessage(deduceContainer(source, target), messageSort, sourceObject, targetObject, sourceContainer, targetContainer);
if (message != null) {
// Reset the finish of target ExecutionSpecification to message end. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=402975F
if (source instanceof ExecutionOccurrenceSpecification && ((ExecutionOccurrenceSpecification) source).getExecution() != null) {
@@ -123,8 +131,16 @@ public class ExecutionOccurrenceSpecificationMessageCreateCommand extends EditEl
ConfigureRequest configureRequest = new ConfigureRequest(getEditingDomain(), newElement, elementType);
configureRequest.setClientContext(((CreateElementRequest) getRequest()).getClientContext());
configureRequest.addParameters(getRequest().getParameters());
- configureRequest.setParameter(CreateRelationshipRequest.SOURCE, deduceLifeline(source));
- configureRequest.setParameter(CreateRelationshipRequest.TARGET, deduceLifeline(target));
+ EObject sourceObject = deduceLifeline(source);
+ if (null == sourceObject && source instanceof Gate) {
+ sourceObject = source;
+ }
+ EObject targetObject = deduceLifeline(target);
+ if (null == targetObject && target instanceof Gate) {
+ targetObject = target;
+ }
+ configureRequest.setParameter(CreateRelationshipRequest.SOURCE, sourceObject);
+ configureRequest.setParameter(CreateRelationshipRequest.TARGET, targetObject);
ICommand configureCommand = elementType.getEditCommand(configureRequest);
if (configureCommand != null && configureCommand.canExecute()) {
configureCommand.execute(monitor, info);

Back to the top