Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 377501 | Differences between
and this patch

Collapse All | Expand All

(-)custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/AbstractMessageItemSemanticEditPolicy.java (+67 lines)
Line 0 Link Here
1
/*****************************************************************************
2
 * Copyright (c) 2009 CEA
3
 *
4
 *    
5
 * All rights reserved. This program and the accompanying materials
6
 * are made available under the terms of the Eclipse Public License v1.0
7
 * which accompanies this distribution, and is available at
8
 * http://www.eclipse.org/legal/epl-v10.html
9
 *
10
 * Contributors:
11
 *   Soyatec - Initial API and implementation
12
 *
13
 *****************************************************************************/
14
package org.eclipse.papyrus.uml.diagram.sequence.edit.policies;
15
16
import org.eclipse.emf.ecore.EObject;
17
import org.eclipse.emf.transaction.TransactionalEditingDomain;
18
import org.eclipse.gef.commands.Command;
19
import org.eclipse.gef.requests.ReconnectRequest;
20
import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
21
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
22
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
23
import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;
24
import org.eclipse.gmf.runtime.notation.View;
25
26
27
/**
28
 * Abstract ItemSemanticEditPolicy for messages.
29
 * 
30
 * Try to fixed bugs about reorient target of messages, because all Message EditParts implementing ITreeBranchEditPart, if we want to reorient target
31
 * of a message to another message, the new target would be redirected to the target of the message. GMF use this to merge two links, but we doesn't
32
 * need them for message creation.
33
 * 
34
 * @author Jin Liu (jin.liu@soyatec.com)
35
 */
36
public class AbstractMessageItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
37
38
	protected AbstractMessageItemSemanticEditPolicy(IElementType elementType) {
39
		super(elementType);
40
	}
41
42
	protected Command getReorientRelationshipTargetCommand(ReconnectRequest request) {
43
		EObject connectionSemElement = ViewUtil.resolveSemanticElement((View)request.getConnectionEditPart().getModel());
44
		EObject targetSemElement = ViewUtil.resolveSemanticElement((View)request.getTarget().getModel());
45
		EObject oldSemElement = ViewUtil.resolveSemanticElement((View)request.getConnectionEditPart().getTarget().getModel());
46
47
		// check if we need to redirect the semantic request because of a tree
48
		// gesture.
49
		//		String connectionHint = ViewUtil.getSemanticElementClassId((View)request.getConnectionEditPart().getModel());
50
		//		if(((View)request.getTarget().getModel()).getElement() != null) {
51
		//			String targetHint = ViewUtil.getSemanticElementClassId((View)request.getTarget().getModel());
52
		//			if(request.getConnectionEditPart() instanceof ITreeBranchEditPart && request.getTarget() instanceof ITreeBranchEditPart && connectionHint.equals(targetHint)) {
53
		//				ITreeBranchEditPart targetBranch = (ITreeBranchEditPart)request.getTarget();
54
		//
55
		//				targetSemElement = ViewUtil.resolveSemanticElement((View)targetBranch.getTarget().getModel());
56
		//			}
57
		//		}
58
59
		TransactionalEditingDomain editingDomain = ((IGraphicalEditPart)getHost()).getEditingDomain();
60
		ReorientRelationshipRequest semRequest = new ReorientRelationshipRequest(editingDomain, connectionSemElement, targetSemElement, oldSemElement, ReorientRelationshipRequest.REORIENT_TARGET);
61
62
		semRequest.addParameters(request.getExtendedData());
63
64
		return getSemanticCommand(semRequest);
65
	}
66
67
}
(-)custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/SequenceGraphicalNodeEditPolicy.java (-7 / +74 lines)
Lines 23-28 Link Here
23
import org.eclipse.draw2d.ConnectionRouter;
23
import org.eclipse.draw2d.ConnectionRouter;
24
import org.eclipse.draw2d.IFigure;
24
import org.eclipse.draw2d.IFigure;
25
import org.eclipse.draw2d.Polyline;
25
import org.eclipse.draw2d.Polyline;
26
import org.eclipse.draw2d.Viewport;
26
import org.eclipse.draw2d.geometry.Point;
27
import org.eclipse.draw2d.geometry.Point;
27
import org.eclipse.draw2d.geometry.Rectangle;
28
import org.eclipse.draw2d.geometry.Rectangle;
28
import org.eclipse.gef.ConnectionEditPart;
29
import org.eclipse.gef.ConnectionEditPart;
Lines 209-222 Link Here
209
			}
210
			}
210
211
211
		}
212
		}
212
213
		
213
		request.getExtendedData().put(
214
		/**
214
				SequenceRequestConstant.SOURCE_LOCATION_DATA,
215
		 * Sometime, the viewport would be scrolled when drag to select the target of connection by using AutoexposeHelper. We need to adjust the source
215
				request.getLocation());
216
		 * location if needed.
216
217
		 */
218
		PointEx sourcePoint = new PointEx(request.getLocation());
219
		Viewport vp = findViewport((GraphicalEditPart)getHost().getViewer().getRootEditPart());
220
		if(vp != null) {
221
			Point loc1 = vp.getClientArea().getLocation().getCopy();
222
			sourcePoint.setViewportLocation(loc1);
223
		}
224
		request.getExtendedData().put(SequenceRequestConstant.SOURCE_LOCATION_DATA, sourcePoint);
225
		//Safely calculate the source model container here.
226
		request.getExtendedData().put(SequenceRequestConstant.SOURCE_MODEL_CONTAINER, SequenceUtil.findInteractionFragmentContainerAt(sourcePoint, getHost()));
217
		return super.getConnectionCreateCommand(request);
227
		return super.getConnectionCreateCommand(request);
218
	}
228
	}
219
229
230
	protected Viewport findViewport(GraphicalEditPart part) {
231
		IFigure figure = null;
232
		Viewport port = null;
233
		do {
234
			if(figure == null)
235
				figure = part.getContentPane();
236
			else
237
				figure = figure.getParent();
238
			if(figure instanceof Viewport) {
239
				port = (Viewport)figure;
240
				break;
241
			}
242
		} while(figure != part.getFigure() && figure != null);
243
		return port;
244
	}
245
220
	/**
246
	/**
221
	 * Overrides to disable uphill message
247
	 * Overrides to disable uphill message
222
	 */
248
	 */
Lines 245-251 Link Here
245
271
246
		Point sourcePoint = (Point)request.getExtendedData().get(SequenceRequestConstant.SOURCE_LOCATION_DATA);
272
		Point sourcePoint = (Point)request.getExtendedData().get(SequenceRequestConstant.SOURCE_LOCATION_DATA);
247
		Point targetPoint = request.getLocation();
273
		Point targetPoint = request.getLocation();
248
274
		
275
		//Adjust source location to current coordinate system (the viewport may be scrolled by AutoexposeHelper.).
276
		if(sourcePoint instanceof PointEx) {
277
			Viewport vp = findViewport((GraphicalEditPart)getHost().getViewer().getRootEditPart());
278
			if(vp != null) {
279
				Point loc2 = vp.getClientArea().getLocation();
280
				sourcePoint = ((PointEx)sourcePoint).adjustToFitNewViewport(loc2);
281
			}
282
		}
249
		// prevent uphill message (leave margin for horizontal messages)
283
		// prevent uphill message (leave margin for horizontal messages)
250
		boolean messageCreate =((IHintedType)UMLElementTypes.Message_4006).getSemanticHint().equals(requestHint);
284
		boolean messageCreate =((IHintedType)UMLElementTypes.Message_4006).getSemanticHint().equals(requestHint);
251
		if(sourcePoint == null || sourcePoint.y >= targetPoint.y + MARGIN) {
285
		if(sourcePoint == null || sourcePoint.y >= targetPoint.y + MARGIN) {
Lines 275-281 Link Here
275
				return UnexecutableCommand.INSTANCE;
309
				return UnexecutableCommand.INSTANCE;
276
		}
310
		}
277
311
278
		request.getExtendedData().put(SequenceRequestConstant.SOURCE_MODEL_CONTAINER, SequenceUtil.findInteractionFragmentContainerAt(sourcePoint, getHost()));
312
		//The SOURCE MODEL should be calculated when connection started, the scroll bar maybe already changed when connection come to finished.
313
		//		request.getExtendedData().put(SequenceRequestConstant.SOURCE_MODEL_CONTAINER, SequenceUtil.findInteractionFragmentContainerAt(sourcePoint, getHost()));
279
		request.getExtendedData().put(SequenceRequestConstant.TARGET_MODEL_CONTAINER, SequenceUtil.findInteractionFragmentContainerAt(targetPoint, getHost()));
314
		request.getExtendedData().put(SequenceRequestConstant.TARGET_MODEL_CONTAINER, SequenceUtil.findInteractionFragmentContainerAt(targetPoint, getHost()));
280
		// In case we are creating a connection to/from a CoRegion, we will need the lifeline element where is drawn the CoRegion later in the process.
315
		// In case we are creating a connection to/from a CoRegion, we will need the lifeline element where is drawn the CoRegion later in the process.
281
		EditPart targetEditPart = getTargetEditPart(request);
316
		EditPart targetEditPart = getTargetEditPart(request);
Lines 521-524 Link Here
521
		}
556
		}
522
		return super.getDummyConnectionRouter(req);
557
		return super.getDummyConnectionRouter(req);
523
	}
558
	}
559
	
560
	/**
561
	 * A new point class which can hold the location of the viewpoint. The user can use adjustToFitNewViewport() service to get the correctly point in
562
	 * given viewport.
563
	 * 
564
	 * @author Jin Liu
565
	 */
566
	private static class PointEx extends Point {
567
568
		private static final long serialVersionUID = -3049675238350676816L;
569
570
		private Point viewportLocation;
571
572
		public PointEx(Point pt) {
573
			super(pt);
574
		}
575
576
		public void setViewportLocation(Point p) {
577
			if(p != null) {
578
				viewportLocation = p.getCopy();
579
			}
580
		}
581
582
		public Point adjustToFitNewViewport(Point newViewportLoc) {
583
			Point pt = getCopy();
584
			if(newViewportLoc != null && viewportLocation != null && !newViewportLoc.equals(viewportLocation)) {
585
				pt.x += (viewportLocation.x - newViewportLoc.x);
586
				pt.y += (viewportLocation.y - newViewportLoc.y);
587
			}
588
			return pt;
589
		}
590
	}
524
}
591
}
(-)custom-src/org/eclipse/papyrus/uml/diagram/sequence/util/LifelineMessageCreateHelper.java (-1 / +1 lines)
Lines 167-173 Link Here
167
167
168
	public static Command reconnectMessageCreateTarget(ReconnectRequest request, Command command) {
168
	public static Command reconnectMessageCreateTarget(ReconnectRequest request, Command command) {
169
		LifelineEditPart oldTarget = (LifelineEditPart)request.getConnectionEditPart().getTarget();
169
		LifelineEditPart oldTarget = (LifelineEditPart)request.getConnectionEditPart().getTarget();
170
		LifelineEditPart source = (LifelineEditPart)request.getConnectionEditPart().getSource();
170
//		LifelineEditPart source = (LifelineEditPart)request.getConnectionEditPart().getSource();
171
		LifelineEditPart newTarget = (LifelineEditPart)request.getTarget();
171
		LifelineEditPart newTarget = (LifelineEditPart)request.getTarget();
172
		// move up the original connection target lifeline, it has only one create message, which will be removed
172
		// move up the original connection target lifeline, it has only one create message, which will be removed
173
		if(getIncomingMessageCreate(oldTarget).size() == 1) {
173
		if(getIncomingMessageCreate(oldTarget).size() == 1) {
(-)custom-src/org/eclipse/papyrus/uml/diagram/sequence/util/ReconnectMessageHelper.java (-28 lines)
Lines 24-30 Link Here
24
import org.eclipse.uml2.uml.Message;
24
import org.eclipse.uml2.uml.Message;
25
import org.eclipse.uml2.uml.MessageEnd;
25
import org.eclipse.uml2.uml.MessageEnd;
26
import org.eclipse.uml2.uml.MessageOccurrenceSpecification;
26
import org.eclipse.uml2.uml.MessageOccurrenceSpecification;
27
import org.eclipse.uml2.uml.MessageSort;
28
import org.eclipse.uml2.uml.OccurrenceSpecification;
27
import org.eclipse.uml2.uml.OccurrenceSpecification;
29
28
30
/**
29
/**
Lines 152-182 Link Here
152
		}
151
		}
153
	}
152
	}
154
153
155
	/**
156
	 * It seems that OCL constraints can not hold everything about reconnecting messages.
157
	 * 
158
	 * @param message
159
	 * @param newTarget
160
	 */
161
	public static boolean canReorientTarget(Message message, Element newTarget) {
162
		if(message == null || newTarget == null) {
163
			return false;
164
		}
165
		MessageSort messageSort = message.getMessageSort();
166
		if(MessageSort.SYNCH_CALL_LITERAL == messageSort) {
167
			return newTarget instanceof ExecutionSpecification;
168
		}
169
		return true;
170
	}
171
172
	public static boolean canReorientSource(Message message, Element newSource) {
173
		if(message == null || newSource == null) {
174
			return false;
175
		}
176
		MessageSort messageSort = message.getMessageSort();
177
		if(MessageSort.SYNCH_CALL_LITERAL == messageSort) {
178
			return newSource instanceof ExecutionSpecification;
179
		}
180
		return true;
181
	}
182
}
154
}
(-)custom-src/org/eclipse/papyrus/uml/diagram/sequence/util/MessageConnectionHelper.java (+184 lines)
Line 0 Link Here
1
/*****************************************************************************
2
 * Copyright (c) 2009 CEA
3
 *
4
 *    
5
 * All rights reserved. This program and the accompanying materials
6
 * are made available under the terms of the Eclipse Public License v1.0
7
 * which accompanies this distribution, and is available at
8
 * http://www.eclipse.org/legal/epl-v10.html
9
 *
10
 * Contributors:
11
 *   Soyatec - Initial API and implementation
12
 *
13
 *****************************************************************************/
14
package org.eclipse.papyrus.uml.diagram.sequence.util;
15
16
import org.eclipse.emf.common.util.EList;
17
import org.eclipse.uml2.uml.Element;
18
import org.eclipse.uml2.uml.ExecutionSpecification;
19
import org.eclipse.uml2.uml.Gate;
20
import org.eclipse.uml2.uml.Lifeline;
21
import org.eclipse.uml2.uml.Message;
22
import org.eclipse.uml2.uml.MessageEnd;
23
import org.eclipse.uml2.uml.MessageSort;
24
import org.eclipse.uml2.uml.NamedElement;
25
import org.eclipse.uml2.uml.OccurrenceSpecification;
26
27
28
/**
29
 * Helper class for determine the message connections. Both for connecting and reconnecting.
30
 * 
31
 * @author Jin Liu (jin.liu@soyatec.com)
32
 */
33
public class MessageConnectionHelper {
34
35
	public static boolean debug = false;
36
37
	private MessageConnectionHelper() {
38
	}
39
40
	public static boolean canReorientSource(Message message, Element newSource) {
41
		if(message == null || newSource == null) {
42
			return false;
43
		}
44
		Element target = null;
45
		MessageEnd receiveEvent = message.getReceiveEvent();
46
		if(receiveEvent instanceof OccurrenceSpecification) {
47
			EList<Lifeline> covereds = ((OccurrenceSpecification)receiveEvent).getCovereds();
48
			if(!covereds.isEmpty()) {
49
				target = covereds.get(0);
50
			}
51
		} else if(receiveEvent instanceof Gate) {
52
			target = ((Gate)receiveEvent).getOwner();
53
		}
54
		return canExist(message.getMessageSort(), newSource, target);
55
	}
56
57
	public static boolean canReorientTarget(Message message, Element newTarget) {
58
		if(message == null || newTarget == null) {
59
			return false;
60
		}
61
		Element source = null;
62
		MessageEnd sendEvent = message.getSendEvent();
63
		if(sendEvent instanceof OccurrenceSpecification) {
64
			EList<Lifeline> covereds = ((OccurrenceSpecification)sendEvent).getCovereds();
65
			if(!covereds.isEmpty()) {
66
				source = covereds.get(0);
67
			}
68
		} else if(sendEvent instanceof Gate) {
69
			source = ((Gate)sendEvent).getOwner();
70
		}
71
		return canExist(message.getMessageSort(), source, newTarget);
72
	}
73
74
	public static boolean canExist(MessageSort messageSort, Element source, Element target) {
75
		if(debug) {
76
			print(messageSort, source, target);
77
		}
78
		if(MessageSort.ASYNCH_CALL_LITERAL == messageSort) {
79
			return canExistAsynchMessage(source, target);
80
		} else if(MessageSort.ASYNCH_SIGNAL_LITERAL == messageSort) {
81
			if(source == null) {
82
				return canExistFoundMessage(target);
83
			}
84
			if(target == null) {
85
				return canExistLostMessage(source);
86
			}
87
		} else if(MessageSort.SYNCH_CALL_LITERAL == messageSort) {
88
			return canExistSynchMessage(source, target);
89
		} else if(MessageSort.CREATE_MESSAGE_LITERAL == messageSort) {
90
			return canExistCreateMessage(source, target);
91
		} else if(MessageSort.DELETE_MESSAGE_LITERAL == messageSort) {
92
			return canExistDeleteMessage(source, target);
93
		} else if(MessageSort.REPLY_LITERAL == messageSort) {
94
			return canExistReplyMessage(source, target);
95
		}
96
		return false;
97
	}
98
99
	private static void print(MessageSort messageSort, Element source, Element target) {
100
		StringBuffer buf = new StringBuffer();
101
		if(messageSort != null) {
102
			buf.append(messageSort.getName());
103
			buf.append("[");
104
		}
105
		buf.append("Source: ");
106
		if(source != null) {
107
			buf.append(source.eClass().getName());
108
			if(source instanceof NamedElement) {
109
				buf.append("(");
110
				buf.append(((NamedElement)source).getName());
111
				buf.append(")");
112
			}
113
		} else {
114
			buf.append("null");
115
		}
116
		buf.append(", Target: ");
117
		if(target != null) {
118
			buf.append(target.eClass().getName());
119
			if(target instanceof NamedElement) {
120
				buf.append("(");
121
				buf.append(((NamedElement)target).getName());
122
				buf.append(")");
123
			}
124
		} else {
125
			buf.append("null");
126
		}
127
		buf.append("]");
128
		System.out.println(new String(buf));
129
	}
130
131
	public static boolean canExistReplyMessage(Element source, Element target) {
132
		if(target instanceof Message) {
133
			return false;
134
		}
135
		if(source instanceof ExecutionSpecification && target instanceof Lifeline) {
136
			if(((ExecutionSpecification)source).getCovereds().contains(target)) {
137
				return false;
138
			}
139
		}
140
		return true;
141
	}
142
143
	public static boolean canExistDeleteMessage(Element source, Element target) {
144
		return true;
145
	}
146
147
	public static boolean canExistCreateMessage(Element source, Element target) {
148
		if(target != null) {
149
			if(false == target instanceof Lifeline) {
150
				return false;
151
			}
152
			if(target == source) {
153
				return false;
154
			}
155
		}
156
		return true;
157
	}
158
159
	public static boolean canExistSynchMessage(Element source, Element target) {
160
		if(source != null && false == source instanceof ExecutionSpecification) {
161
			return false;
162
		}
163
		if(target != null && !(target instanceof ExecutionSpecification || target instanceof Lifeline)) {
164
			return false;
165
		}
166
		return true;
167
	}
168
169
	public static boolean canExistLostMessage(Element source) {
170
		return true;
171
	}
172
173
	public static boolean canExistFoundMessage(Element target) {
174
		return true;
175
	}
176
177
	public static boolean canExistAsynchMessage(Element source, Element target) {
178
		if(target instanceof Message) {
179
			return false;
180
		}
181
		return true;
182
	}
183
184
}
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/commands/Message7ReorientCommand.java (-3 / +9 lines)
Lines 75-81 Link Here
75
	}
75
	}
76
76
77
	/**
77
	/**
78
	 * @generated
78
	 * @generated NOT
79
	 */
79
	 */
80
	protected boolean canReorientSource() {
80
	protected boolean canReorientSource() {
81
		if(!(oldEnd instanceof Element && newEnd instanceof Element)) {
81
		if(!(oldEnd instanceof Element && newEnd instanceof Element)) {
Lines 93-99 Link Here
93
	}
93
	}
94
94
95
	/**
95
	/**
96
	 * @generated
96
	 * @generated NOT
97
	 */
97
	 */
98
	protected boolean canReorientTarget() {
98
	protected boolean canReorientTarget() {
99
		if(!(oldEnd instanceof Element && newEnd instanceof Element)) {
99
		if(!(oldEnd instanceof Element && newEnd instanceof Element)) {
Lines 104-110 Link Here
104
			return false;
104
			return false;
105
		}
105
		}
106
		Interaction container = (Interaction)getLink().eContainer();
106
		Interaction container = (Interaction)getLink().eContainer();
107
		return UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4009(container, getLink(), source, getNewTarget());
107
		//Fixed bug about message reconnection.
108
		if(!UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4009(container, getLink(), source, getNewTarget())) {
109
			return false;
110
		}
111
		//FIXME: Please complete reorientTarget() firstly.
112
		return false;
113
//		return MessageConnectionHelper.canReorientTarget(getLink(), getNewTarget());
108
	}
114
	}
109
115
110
	/**
116
	/**
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/commands/Message4ReorientCommand.java (-3 / +10 lines)
Lines 21-26 Link Here
21
import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;
21
import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;
22
import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;
22
import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;
23
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
23
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
24
import org.eclipse.papyrus.uml.diagram.sequence.util.MessageConnectionHelper;
24
import org.eclipse.papyrus.uml.diagram.sequence.util.ReconnectMessageHelper;
25
import org.eclipse.papyrus.uml.diagram.sequence.util.ReconnectMessageHelper;
25
import org.eclipse.uml2.uml.Element;
26
import org.eclipse.uml2.uml.Element;
26
import org.eclipse.uml2.uml.Interaction;
27
import org.eclipse.uml2.uml.Interaction;
Lines 84-94 Link Here
84
		}
85
		}
85
		Interaction container = (Interaction)getLink().eContainer();
86
		Interaction container = (Interaction)getLink().eContainer();
86
87
87
		return UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4006(container, getLink(), getNewSource(), getOldTarget());
88
		if(!UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4006(container, getLink(), getNewSource(), getOldTarget())) {
89
			return false;
90
		}
91
		return MessageConnectionHelper.canReorientSource(getLink(), getNewSource());
88
	}
92
	}
89
93
90
	/**
94
	/**
91
	 * @generated
95
	 * @generated NOT
92
	 */
96
	 */
93
	protected boolean canReorientTarget() {
97
	protected boolean canReorientTarget() {
94
		if(!(oldEnd instanceof Element && newEnd instanceof Element)) {
98
		if(!(oldEnd instanceof Element && newEnd instanceof Element)) {
Lines 99-105 Link Here
99
			return false;
103
			return false;
100
		}
104
		}
101
		Interaction container = (Interaction)getLink().eContainer();
105
		Interaction container = (Interaction)getLink().eContainer();
102
		return UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4006(container, getLink(), source, getNewTarget());
106
		if(!UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4006(container, getLink(), source, getNewTarget())) {
107
			return false;
108
		}
109
		return MessageConnectionHelper.canReorientTarget(getLink(), getNewTarget());
103
	}
110
	}
104
111
105
	/**
112
	/**
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/commands/MessageCreateCommand.java (-1 / +5 lines)
Lines 26-31 Link Here
26
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
26
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
27
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
27
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
28
import org.eclipse.papyrus.uml.diagram.sequence.util.CommandHelper;
28
import org.eclipse.papyrus.uml.diagram.sequence.util.CommandHelper;
29
import org.eclipse.papyrus.uml.diagram.sequence.util.MessageConnectionHelper;
29
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceRequestConstant;
30
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceRequestConstant;
30
import org.eclipse.uml2.uml.Element;
31
import org.eclipse.uml2.uml.Element;
31
import org.eclipse.uml2.uml.Interaction;
32
import org.eclipse.uml2.uml.Interaction;
Lines 93-99 Link Here
93
			}
94
			}
94
		}
95
		}
95
96
96
		return UMLBaseItemSemanticEditPolicy.getLinkConstraints().canCreateMessage_4003(getContainer(), getSource(), getTarget());
97
		if (! UMLBaseItemSemanticEditPolicy.getLinkConstraints().canCreateMessage_4003(getContainer(), getSource(), getTarget())){
98
			return false;
99
		}
100
		return MessageConnectionHelper.canExist(MessageSort.SYNCH_CALL_LITERAL, (Element)source, (Element)target);
97
	}
101
	}
98
102
99
	/**
103
	/**
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/commands/Message3ReorientCommand.java (-3 / +10 lines)
Lines 21-26 Link Here
21
import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;
21
import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;
22
import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;
22
import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;
23
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
23
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
24
import org.eclipse.papyrus.uml.diagram.sequence.util.MessageConnectionHelper;
24
import org.eclipse.papyrus.uml.diagram.sequence.util.ReconnectMessageHelper;
25
import org.eclipse.papyrus.uml.diagram.sequence.util.ReconnectMessageHelper;
25
import org.eclipse.uml2.uml.Element;
26
import org.eclipse.uml2.uml.Element;
26
import org.eclipse.uml2.uml.Interaction;
27
import org.eclipse.uml2.uml.Interaction;
Lines 83-93 Link Here
83
			return false;
84
			return false;
84
		}
85
		}
85
		Interaction container = (Interaction)getLink().eContainer();
86
		Interaction container = (Interaction)getLink().eContainer();
86
		return UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4005(container, getLink(), getNewSource(), getOldTarget());
87
		if(!UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4005(container, getLink(), getNewSource(), getOldTarget())) {
88
			return false;
89
		}
90
		return MessageConnectionHelper.canReorientSource(getLink(), getNewSource());
87
	}
91
	}
88
92
89
	/**
93
	/**
90
	 * @generated
94
	 * @generated NOT
91
	 */
95
	 */
92
	protected boolean canReorientTarget() {
96
	protected boolean canReorientTarget() {
93
		if(!(oldEnd instanceof Element && newEnd instanceof Element)) {
97
		if(!(oldEnd instanceof Element && newEnd instanceof Element)) {
Lines 98-104 Link Here
98
			return false;
102
			return false;
99
		}
103
		}
100
		Interaction container = (Interaction)getLink().eContainer();
104
		Interaction container = (Interaction)getLink().eContainer();
101
		return UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4005(container, getLink(), source, getNewTarget());
105
		if(!UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4005(container, getLink(), source, getNewTarget())) {
106
			return false;
107
		}
108
		return MessageConnectionHelper.canReorientTarget(getLink(), getNewTarget());
102
	}
109
	}
103
110
104
	/**
111
	/**
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/commands/Message2ReorientCommand.java (-3 / +10 lines)
Lines 21-26 Link Here
21
import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;
21
import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;
22
import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;
22
import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;
23
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
23
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
24
import org.eclipse.papyrus.uml.diagram.sequence.util.MessageConnectionHelper;
24
import org.eclipse.papyrus.uml.diagram.sequence.util.ReconnectMessageHelper;
25
import org.eclipse.papyrus.uml.diagram.sequence.util.ReconnectMessageHelper;
25
import org.eclipse.uml2.uml.Element;
26
import org.eclipse.uml2.uml.Element;
26
import org.eclipse.uml2.uml.Interaction;
27
import org.eclipse.uml2.uml.Interaction;
Lines 83-93 Link Here
83
			return false;
84
			return false;
84
		}
85
		}
85
		Interaction container = (Interaction)getLink().eContainer();
86
		Interaction container = (Interaction)getLink().eContainer();
86
		return UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4004(container, getLink(), getNewSource(), getOldTarget());
87
		if(!UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4004(container, getLink(), getNewSource(), getOldTarget())) {
88
			return false;
89
		}
90
		return MessageConnectionHelper.canReorientSource(getLink(), getNewSource());
87
	}
91
	}
88
92
89
	/**
93
	/**
90
	 * @generated
94
	 * @generated NOT
91
	 */
95
	 */
92
	protected boolean canReorientTarget() {
96
	protected boolean canReorientTarget() {
93
		if(!(oldEnd instanceof Element && newEnd instanceof Element)) {
97
		if(!(oldEnd instanceof Element && newEnd instanceof Element)) {
Lines 98-104 Link Here
98
			return false;
102
			return false;
99
		}
103
		}
100
		Interaction container = (Interaction)getLink().eContainer();
104
		Interaction container = (Interaction)getLink().eContainer();
101
		return UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4004(container, getLink(), source, getNewTarget());
105
		if(!UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4004(container, getLink(), source, getNewTarget())) {
106
			return false;
107
		}
108
		return MessageConnectionHelper.canReorientTarget(getLink(), getNewTarget());
102
	}
109
	}
103
110
104
	/**
111
	/**
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/commands/Message2CreateCommand.java (-1 / +6 lines)
Lines 28-36 Link Here
28
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
28
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
29
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
29
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
30
import org.eclipse.papyrus.uml.diagram.sequence.util.CommandHelper;
30
import org.eclipse.papyrus.uml.diagram.sequence.util.CommandHelper;
31
import org.eclipse.papyrus.uml.diagram.sequence.util.MessageConnectionHelper;
31
import org.eclipse.uml2.uml.Element;
32
import org.eclipse.uml2.uml.Element;
32
import org.eclipse.uml2.uml.Interaction;
33
import org.eclipse.uml2.uml.Interaction;
33
import org.eclipse.uml2.uml.Message;
34
import org.eclipse.uml2.uml.Message;
35
import org.eclipse.uml2.uml.MessageSort;
34
36
35
/**
37
/**
36
 * @generated
38
 * @generated
Lines 100-106 Link Here
100
				return false;
102
				return false;
101
			}
103
			}
102
		}
104
		}
103
		return UMLBaseItemSemanticEditPolicy.getLinkConstraints().canCreateMessage_4004(getContainer(), getSource(), getTarget());
105
		if(!UMLBaseItemSemanticEditPolicy.getLinkConstraints().canCreateMessage_4004(getContainer(), getSource(), getTarget())) {
106
			return false;
107
		}
108
		return MessageConnectionHelper.canExist(MessageSort.ASYNCH_CALL_LITERAL, getSource(), getTarget());
104
	}
109
	}
105
110
106
	/**
111
	/**
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/commands/Message3CreateCommand.java (-1 / +5 lines)
Lines 26-31 Link Here
26
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
26
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
27
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
27
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
28
import org.eclipse.papyrus.uml.diagram.sequence.util.CommandHelper;
28
import org.eclipse.papyrus.uml.diagram.sequence.util.CommandHelper;
29
import org.eclipse.papyrus.uml.diagram.sequence.util.MessageConnectionHelper;
29
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceRequestConstant;
30
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceRequestConstant;
30
import org.eclipse.uml2.uml.Element;
31
import org.eclipse.uml2.uml.Element;
31
import org.eclipse.uml2.uml.Interaction;
32
import org.eclipse.uml2.uml.Interaction;
Lines 91-97 Link Here
91
				return false;
92
				return false;
92
			}
93
			}
93
		}
94
		}
94
		return UMLBaseItemSemanticEditPolicy.getLinkConstraints().canCreateMessage_4005(getContainer(), getSource(), getTarget());
95
		if(!UMLBaseItemSemanticEditPolicy.getLinkConstraints().canCreateMessage_4005(getContainer(), getSource(), getTarget())) {
96
			return false;
97
		}
98
		return MessageConnectionHelper.canExist(MessageSort.REPLY_LITERAL, getSource(), getTarget());
95
	}
99
	}
96
100
97
	/**
101
	/**
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/commands/Message6ReorientCommand.java (-2 / +6 lines)
Lines 21-26 Link Here
21
import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;
21
import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;
22
import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;
22
import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;
23
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
23
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
24
import org.eclipse.papyrus.uml.diagram.sequence.util.MessageConnectionHelper;
24
import org.eclipse.uml2.uml.Element;
25
import org.eclipse.uml2.uml.Element;
25
import org.eclipse.uml2.uml.Interaction;
26
import org.eclipse.uml2.uml.Interaction;
26
import org.eclipse.uml2.uml.Message;
27
import org.eclipse.uml2.uml.Message;
Lines 75-81 Link Here
75
	}
76
	}
76
77
77
	/**
78
	/**
78
	 * @generated
79
	 * @generated NOT
79
	 */
80
	 */
80
	protected boolean canReorientSource() {
81
	protected boolean canReorientSource() {
81
		if(!(oldEnd instanceof Element && newEnd instanceof Element)) {
82
		if(!(oldEnd instanceof Element && newEnd instanceof Element)) {
Lines 89-95 Link Here
89
			return false;
90
			return false;
90
		}
91
		}
91
		Interaction container = (Interaction)getLink().eContainer();
92
		Interaction container = (Interaction)getLink().eContainer();
92
		return UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4008(container, getLink(), getNewSource(), target);
93
		if(!UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4008(container, getLink(), getNewSource(), target)){
94
			return false;
95
		}
96
		return MessageConnectionHelper.canReorientSource(getLink(), getNewSource());
93
	}
97
	}
94
98
95
	/**
99
	/**
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/commands/Message5CreateCommand.java (-1 / +5 lines)
Lines 31-36 Link Here
31
import org.eclipse.papyrus.uml.diagram.common.commands.EObjectInheritanceCopyCommand;
31
import org.eclipse.papyrus.uml.diagram.common.commands.EObjectInheritanceCopyCommand;
32
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
32
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
33
import org.eclipse.papyrus.uml.diagram.sequence.util.CommandHelper;
33
import org.eclipse.papyrus.uml.diagram.sequence.util.CommandHelper;
34
import org.eclipse.papyrus.uml.diagram.sequence.util.MessageConnectionHelper;
34
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceRequestConstant;
35
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceRequestConstant;
35
import org.eclipse.uml2.uml.DestructionOccurrenceSpecification;
36
import org.eclipse.uml2.uml.DestructionOccurrenceSpecification;
36
import org.eclipse.uml2.uml.Element;
37
import org.eclipse.uml2.uml.Element;
Lines 102-108 Link Here
102
				return false;
103
				return false;
103
			}
104
			}
104
		}
105
		}
105
		return UMLBaseItemSemanticEditPolicy.getLinkConstraints().canCreateMessage_4007(getContainer(), getSource(), getTarget());
106
		if(!UMLBaseItemSemanticEditPolicy.getLinkConstraints().canCreateMessage_4007(getContainer(), getSource(), getTarget())) {
107
			return false;
108
		}
109
		return MessageConnectionHelper.canExist(MessageSort.DELETE_MESSAGE_LITERAL, getSource(), getTarget());
106
	}
110
	}
107
111
108
	/**
112
	/**
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/commands/MessageReorientCommand.java (-2 / +3 lines)
Lines 21-26 Link Here
21
import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;
21
import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;
22
import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;
22
import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;
23
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
23
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
24
import org.eclipse.papyrus.uml.diagram.sequence.util.MessageConnectionHelper;
24
import org.eclipse.papyrus.uml.diagram.sequence.util.ReconnectMessageHelper;
25
import org.eclipse.papyrus.uml.diagram.sequence.util.ReconnectMessageHelper;
25
import org.eclipse.uml2.uml.Element;
26
import org.eclipse.uml2.uml.Element;
26
import org.eclipse.uml2.uml.Interaction;
27
import org.eclipse.uml2.uml.Interaction;
Lines 88-94 Link Here
88
			return false;
89
			return false;
89
		}
90
		}
90
		//Fixed bug about reconnect messages.
91
		//Fixed bug about reconnect messages.
91
		return ReconnectMessageHelper.canReorientSource(getLink(), getNewSource());
92
		return MessageConnectionHelper.canReorientSource(getLink(), getNewSource());
92
	}
93
	}
93
94
94
	/**
95
	/**
Lines 106-112 Link Here
106
		if(!UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4003(container, getLink(), source, getNewTarget())) {
107
		if(!UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4003(container, getLink(), source, getNewTarget())) {
107
			return false;
108
			return false;
108
		}
109
		}
109
		return ReconnectMessageHelper.canReorientTarget(getLink(), getNewTarget());
110
		return MessageConnectionHelper.canReorientTarget(getLink(), getNewTarget());
110
	}
111
	}
111
112
112
	/**
113
	/**
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/commands/Message4CreateCommand.java (-1 / +5 lines)
Lines 26-31 Link Here
26
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
26
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
27
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
27
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
28
import org.eclipse.papyrus.uml.diagram.sequence.util.CommandHelper;
28
import org.eclipse.papyrus.uml.diagram.sequence.util.CommandHelper;
29
import org.eclipse.papyrus.uml.diagram.sequence.util.MessageConnectionHelper;
29
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceRequestConstant;
30
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceRequestConstant;
30
import org.eclipse.uml2.uml.Element;
31
import org.eclipse.uml2.uml.Element;
31
import org.eclipse.uml2.uml.Interaction;
32
import org.eclipse.uml2.uml.Interaction;
Lines 91-97 Link Here
91
				return false;
92
				return false;
92
			}
93
			}
93
		}
94
		}
94
		return UMLBaseItemSemanticEditPolicy.getLinkConstraints().canCreateMessage_4006(getContainer(), getSource(), getTarget());
95
		if(!UMLBaseItemSemanticEditPolicy.getLinkConstraints().canCreateMessage_4006(getContainer(), getSource(), getTarget())) {
96
			return false;
97
		}
98
		return MessageConnectionHelper.canExist(MessageSort.CREATE_MESSAGE_LITERAL, getSource(), getTarget());
95
	}
99
	}
96
100
97
	/**
101
	/**
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/commands/Message6CreateCommand.java (-1 / +5 lines)
Lines 26-31 Link Here
26
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
26
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
27
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
27
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
28
import org.eclipse.papyrus.uml.diagram.sequence.util.CommandHelper;
28
import org.eclipse.papyrus.uml.diagram.sequence.util.CommandHelper;
29
import org.eclipse.papyrus.uml.diagram.sequence.util.MessageConnectionHelper;
29
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceRequestConstant;
30
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceRequestConstant;
30
import org.eclipse.uml2.uml.Element;
31
import org.eclipse.uml2.uml.Element;
31
import org.eclipse.uml2.uml.Interaction;
32
import org.eclipse.uml2.uml.Interaction;
Lines 91-97 Link Here
91
				return false;
92
				return false;
92
			}
93
			}
93
		}
94
		}
94
		return UMLBaseItemSemanticEditPolicy.getLinkConstraints().canCreateMessage_4008(getContainer(), getSource(), getTarget());
95
		if (!UMLBaseItemSemanticEditPolicy.getLinkConstraints().canCreateMessage_4008(getContainer(), getSource(), getTarget())){
96
			return false;
97
		}
98
		return MessageConnectionHelper.canExist(MessageSort.ASYNCH_SIGNAL_LITERAL, getSource(), null);
95
	}
99
	}
96
100
97
	/**
101
	/**
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/commands/Message5ReorientCommand.java (-3 / +10 lines)
Lines 21-26 Link Here
21
import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;
21
import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;
22
import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;
22
import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;
23
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
23
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
24
import org.eclipse.papyrus.uml.diagram.sequence.util.MessageConnectionHelper;
24
import org.eclipse.papyrus.uml.diagram.sequence.util.ReconnectMessageHelper;
25
import org.eclipse.papyrus.uml.diagram.sequence.util.ReconnectMessageHelper;
25
import org.eclipse.uml2.uml.Element;
26
import org.eclipse.uml2.uml.Element;
26
import org.eclipse.uml2.uml.Interaction;
27
import org.eclipse.uml2.uml.Interaction;
Lines 83-93 Link Here
83
			return false;
84
			return false;
84
		}
85
		}
85
		Interaction container = (Interaction)getLink().eContainer();
86
		Interaction container = (Interaction)getLink().eContainer();
86
		return UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4007(container, getLink(), getNewSource(), getOldTarget());
87
		if(!UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4007(container, getLink(), getNewSource(), getOldTarget())) {
88
			return false;
89
		}
90
		return MessageConnectionHelper.canReorientSource(getLink(), getNewSource());
87
	}
91
	}
88
92
89
	/**
93
	/**
90
	 * @generated
94
	 * @generated NOT
91
	 */
95
	 */
92
	protected boolean canReorientTarget() {
96
	protected boolean canReorientTarget() {
93
		if(!(oldEnd instanceof Element && newEnd instanceof Element)) {
97
		if(!(oldEnd instanceof Element && newEnd instanceof Element)) {
Lines 98-104 Link Here
98
			return false;
102
			return false;
99
		}
103
		}
100
		Interaction container = (Interaction)getLink().eContainer();
104
		Interaction container = (Interaction)getLink().eContainer();
101
		return UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4007(container, getLink(), source, getNewTarget());
105
		if(!UMLBaseItemSemanticEditPolicy.getLinkConstraints().canExistMessage_4007(container, getLink(), source, getNewTarget())) {
106
			return false;
107
		}
108
		return MessageConnectionHelper.canReorientTarget(getLink(), getNewTarget());
102
	}
109
	}
103
110
104
	/**
111
	/**
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/commands/Message7CreateCommand.java (-1 / +6 lines)
Lines 26-31 Link Here
26
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
26
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
27
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
27
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.UMLBaseItemSemanticEditPolicy;
28
import org.eclipse.papyrus.uml.diagram.sequence.util.CommandHelper;
28
import org.eclipse.papyrus.uml.diagram.sequence.util.CommandHelper;
29
import org.eclipse.papyrus.uml.diagram.sequence.util.MessageConnectionHelper;
29
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceRequestConstant;
30
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceRequestConstant;
30
import org.eclipse.uml2.uml.Element;
31
import org.eclipse.uml2.uml.Element;
31
import org.eclipse.uml2.uml.Interaction;
32
import org.eclipse.uml2.uml.Interaction;
Lines 91-97 Link Here
91
				return false;
92
				return false;
92
			}
93
			}
93
		}
94
		}
94
		return UMLBaseItemSemanticEditPolicy.getLinkConstraints().canCreateMessage_4009(getContainer(), getSource(), getTarget());
95
		//Fixed bug about message connection.
96
		if (! UMLBaseItemSemanticEditPolicy.getLinkConstraints().canCreateMessage_4009(getContainer(), getSource(), getTarget())){
97
			return false;
98
		}
99
		return MessageConnectionHelper.canExist(MessageSort.ASYNCH_SIGNAL_LITERAL, null, getTarget());
95
	}
100
	}
96
101
97
	/**
102
	/**
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/MessageItemSemanticEditPolicy.java (-2 / +2 lines)
Lines 56-64 Link Here
56
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceDeleteHelper;
56
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceDeleteHelper;
57
57
58
/**
58
/**
59
 * @generated
59
 * @generated NOT
60
 */
60
 */
61
public class MessageItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
61
public class MessageItemSemanticEditPolicy extends AbstractMessageItemSemanticEditPolicy {
62
62
63
	/**
63
	/**
64
	 * @generated
64
	 * @generated
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/Message5ItemSemanticEditPolicy.java (-2 / +2 lines)
Lines 56-64 Link Here
56
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceDeleteHelper;
56
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceDeleteHelper;
57
57
58
/**
58
/**
59
 * @generated
59
 * @generated NOT
60
 */
60
 */
61
public class Message5ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
61
public class Message5ItemSemanticEditPolicy extends AbstractMessageItemSemanticEditPolicy {
62
62
63
	/**
63
	/**
64
	 * @generated
64
	 * @generated
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/Message7ItemSemanticEditPolicy.java (-2 / +2 lines)
Lines 56-64 Link Here
56
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceDeleteHelper;
56
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceDeleteHelper;
57
57
58
/**
58
/**
59
 * @generated
59
 * @generated NOT
60
 */
60
 */
61
public class Message7ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
61
public class Message7ItemSemanticEditPolicy extends AbstractMessageItemSemanticEditPolicy {
62
62
63
	/**
63
	/**
64
	 * @generated
64
	 * @generated
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/Message2ItemSemanticEditPolicy.java (-2 / +2 lines)
Lines 56-64 Link Here
56
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceDeleteHelper;
56
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceDeleteHelper;
57
57
58
/**
58
/**
59
 * @generated
59
 * @generated NOT
60
 */
60
 */
61
public class Message2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
61
public class Message2ItemSemanticEditPolicy extends AbstractMessageItemSemanticEditPolicy {
62
62
63
	/**
63
	/**
64
	 * @generated
64
	 * @generated
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/Message3ItemSemanticEditPolicy.java (-2 / +2 lines)
Lines 56-64 Link Here
56
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceDeleteHelper;
56
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceDeleteHelper;
57
57
58
/**
58
/**
59
 * @generated
59
 * @generated NOT
60
 */
60
 */
61
public class Message3ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
61
public class Message3ItemSemanticEditPolicy extends AbstractMessageItemSemanticEditPolicy {
62
62
63
	/**
63
	/**
64
	 * @generated
64
	 * @generated
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/Message4ItemSemanticEditPolicy.java (-2 / +2 lines)
Lines 57-65 Link Here
57
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceDeleteHelper;
57
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceDeleteHelper;
58
58
59
/**
59
/**
60
 * @generated
60
 * @generated NOT
61
 */
61
 */
62
public class Message4ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
62
public class Message4ItemSemanticEditPolicy extends AbstractMessageItemSemanticEditPolicy {
63
63
64
	/**
64
	/**
65
	 * @generated
65
	 * @generated
(-)src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/Message6ItemSemanticEditPolicy.java (-2 / +2 lines)
Lines 56-64 Link Here
56
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceDeleteHelper;
56
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceDeleteHelper;
57
57
58
/**
58
/**
59
 * @generated
59
 * @generated NOT
60
 */
60
 */
61
public class Message6ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
61
public class Message6ItemSemanticEditPolicy extends AbstractMessageItemSemanticEditPolicy {
62
62
63
	/**
63
	/**
64
	 * @generated
64
	 * @generated

Return to bug 377501