Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java72
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();

Back to the top