diff options
Diffstat (limited to 'plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/ExecutionSpecificationGraphicalNodeEditPolicy.java')
-rw-r--r-- | plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/ExecutionSpecificationGraphicalNodeEditPolicy.java | 72 |
1 files changed, 8 insertions, 64 deletions
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/ExecutionSpecificationGraphicalNodeEditPolicy.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/ExecutionSpecificationGraphicalNodeEditPolicy.java index 5ebddd4714d..19b20d395d1 100644 --- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/ExecutionSpecificationGraphicalNodeEditPolicy.java +++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/ExecutionSpecificationGraphicalNodeEditPolicy.java @@ -12,25 +12,17 @@ *****************************************************************************/ package org.eclipse.papyrus.uml.diagram.sequence.edit.policies; -import java.util.List; - import org.eclipse.draw2d.Connection; import org.eclipse.draw2d.PolylineConnection; -import org.eclipse.draw2d.geometry.Point; -import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.gef.Request; import org.eclipse.gef.commands.Command; import org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy; import org.eclipse.gef.requests.CreateConnectionRequest; -import org.eclipse.gef.requests.CreateRequest; -import org.eclipse.gmf.runtime.diagram.core.edithelpers.CreateElementRequestAdapter; import org.eclipse.gmf.runtime.diagram.ui.requests.CreateConnectionViewAndElementRequest; -import org.eclipse.gmf.runtime.emf.type.core.IElementType; import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; import org.eclipse.gmf.runtime.notation.View; -import org.eclipse.papyrus.infra.gmfdiag.common.service.palette.AspectUnspecifiedTypeConnectionTool.CreateAspectUnspecifiedTypeConnectionRequest; import org.eclipse.papyrus.uml.diagram.sequence.figures.DurationLinkFigure; -import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes; +import org.eclipse.papyrus.uml.diagram.sequence.util.DurationLinkUtil; import org.eclipse.papyrus.uml.service.types.utils.SequenceRequestConstant; import org.eclipse.uml2.uml.ExecutionSpecification; import org.eclipse.uml2.uml.OccurrenceSpecification; @@ -46,13 +38,13 @@ public class ExecutionSpecificationGraphicalNodeEditPolicy extends ElementCreati // Source (First half of the request) @Override protected Command getConnectionCreateCommand(CreateConnectionRequest request) { - if (isCreateDurationLink(request)) { - CreateRelationshipRequest createRequest = getCreateRelationshipRequest(request); + if (DurationLinkUtil.isCreateDurationLink(request)) { + CreateRelationshipRequest createRequest = DurationLinkUtil.getCreateRelationshipRequest(request); if (createRequest != null) { OccurrenceSpecification sourceOccurrence; ExecutionSpecification execSpec = getExecutionSpecification(); if (execSpec != null) { - if (isStart(request)) { + if (DurationLinkUtil.isStart(getHostFigure(), request)) { sourceOccurrence = execSpec.getStart(); } else { sourceOccurrence = execSpec.getFinish(); @@ -73,33 +65,16 @@ public class ExecutionSpecificationGraphicalNodeEditPolicy extends ElementCreati return null; } - /** - * Test whether the given request is closer to the start (top) or to the finish (bottom) point of the execution specification - * - * @param createRequest - * The create request - * @return - * <code>true</code> if the given request is closer to the top of the figure; false if it is closer to the bottom - */ - private boolean isStart(CreateRequest createRequest) { - Point location = createRequest.getLocation(); - Rectangle bounds = getHostFigure().getBounds(); - - double distanceToTop = location.getDistance(bounds.getTop()); - double distanceToBottom = location.getDistance(bounds.getBottom()); - return distanceToTop < distanceToBottom; - } - // Target (Second half of the request) @Override protected Command getConnectionAndRelationshipCompleteCommand(CreateConnectionViewAndElementRequest request) { - if (isCreateDurationLink(request)) { - CreateRelationshipRequest createRequest = getCreateRelationshipRequest(request); + if (DurationLinkUtil.isCreateDurationLink(request)) { + CreateRelationshipRequest createRequest = DurationLinkUtil.getCreateRelationshipRequest(request); if (createRequest != null) { OccurrenceSpecification targetOccurrence; ExecutionSpecification execSpec = getExecutionSpecification(); if (execSpec != null) { - if (isStart(request)) { + if (DurationLinkUtil.isStart(getHostFigure(), request)) { targetOccurrence = execSpec.getStart(); } else { targetOccurrence = execSpec.getFinish(); @@ -112,40 +87,9 @@ public class ExecutionSpecificationGraphicalNodeEditPolicy extends ElementCreati return super.getConnectionAndRelationshipCompleteCommand(request); } - private boolean isCreateDurationLink(CreateConnectionRequest request) { - CreateRelationshipRequest createElementRequest = getCreateRelationshipRequest(request); - if (createElementRequest == null) { - if (request instanceof CreateAspectUnspecifiedTypeConnectionRequest) { - CreateAspectUnspecifiedTypeConnectionRequest createRequest = (CreateAspectUnspecifiedTypeConnectionRequest) request; - List<?> types = createRequest.getElementTypes(); - if (types.stream().allMatch( - type -> type == UMLElementTypes.DurationConstraint_Edge || - type == UMLElementTypes.DurationObservation_Edge)) { - return true; - } - } - } else { - IElementType type = createElementRequest.getElementType(); - return type == UMLElementTypes.DurationConstraint_Edge || type == UMLElementTypes.DurationObservation_Edge; - } - return false; - } - - private CreateRelationshipRequest getCreateRelationshipRequest(CreateConnectionRequest request) { - if (false == request instanceof CreateConnectionViewAndElementRequest) { - return null; - } - CreateElementRequestAdapter requestAdapter = ((CreateConnectionViewAndElementRequest) request).getConnectionViewAndElementDescriptor().getCreateElementRequestAdapter(); - if (requestAdapter == null) { - return null; - } - CreateRelationshipRequest createElementRequest = (CreateRelationshipRequest) requestAdapter.getAdapter(CreateRelationshipRequest.class); - return createElementRequest; - } - @Override protected Connection createDummyConnection(Request req) { - if (req instanceof CreateConnectionRequest && isCreateDurationLink((CreateConnectionRequest) req)) { + if (req instanceof CreateConnectionRequest && DurationLinkUtil.isCreateDurationLink((CreateConnectionRequest) req)) { return new DurationLinkFigure(); } return new PolylineConnection(); |