diff options
author | Camille Letavernier | 2014-12-08 10:14:52 +0000 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org | 2014-12-08 10:14:52 +0000 |
commit | 6b8bc6f45db4bc6f9438c6597ab860d6c96f3ac3 (patch) | |
tree | 93f0939a0278e1b7841342751d642e53877dd0ec /plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence | |
parent | 0e870a32e4e0eed4fd74fae894c1671469d8c97f (diff) | |
parent | 5835a92af5f72dc7029b0908df07c30379a180f7 (diff) | |
download | org.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.java | 26 |
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);
|