Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMickael ADAM2017-10-18 08:31:53 +0000
committerPatrick Tessier2017-10-30 14:12:29 +0000
commitc022e227d510d7fd09971ef391d76e04842b88aa (patch)
treed4a2b56b0874e6d190e2be1d9114cf580d1ae41c
parenta3975d6effe09127a5cb5007895a4bb506020ace (diff)
downloadorg.eclipse.papyrus-c022e227d510d7fd09971ef391d76e04842b88aa.tar.gz
org.eclipse.papyrus-c022e227d510d7fd09971ef391d76e04842b88aa.tar.xz
org.eclipse.papyrus-c022e227d510d7fd09971ef391d76e04842b88aa.zip
Bug 526191 - [Sequence Diagram] Element on lifeline must follow the move
up of another below it. https://bugs.eclipse.org/bugs/show_bug.cgi?id=526191 Change-Id: I324c328520c8eac8fc7dc85dc705c6b48ed67811 Signed-off-by: Mickael ADAM <mickael.adam@all4tec.net>
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/SequenceReferenceEditPolicy.java10
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/UpdateWeakReferenceEditPolicy.java51
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/UpdateWeakReferenceForExecSpecEditPolicy.java16
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/UpdateWeakReferenceForMessageSpecEditPolicy.java14
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/messages/Messages.java7
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/messages/messages.properties3
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/preferences/CustomDiagramGeneralPreferencePage.java30
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/referencialgrilling/LifeLineGraphicalNodeEditPolicy.java29
8 files changed, 117 insertions, 43 deletions
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/SequenceReferenceEditPolicy.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/SequenceReferenceEditPolicy.java
index f589cb21e8d..fdda0b20c6e 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/SequenceReferenceEditPolicy.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/SequenceReferenceEditPolicy.java
@@ -8,7 +8,7 @@
*
* Contributors:
* Patrick Tessier (CEA LIST) - Initial API and implementation
- * Mickaël ADAM (ALL4TEC) mickael.adam@all4tec.net - Bug 521312, 526079
+ * Mickaël ADAM (ALL4TEC) mickael.adam@all4tec.net - Bug 521312, 526079, 526191
*****************************************************************************/
package org.eclipse.papyrus.uml.diagram.sequence.edit.policies;
@@ -277,9 +277,9 @@ public class SequenceReferenceEditPolicy extends GraphicalEditPolicy implements
if (messageEnd.getMessage() != null) {
IGraphicalEditPart resultedEditPart = getEditPartFromSemantic(messageEnd.getMessage());
if (resultedEditPart != null) {
- if (referenceList.equals(strongReferences)) {
+ if (referenceList == strongReferences) {
referenceList.put(resultedEditPart, role);
- } else if (referenceList.equals(weakReferences) && !(strongReferences.containsKey(resultedEditPart))) {
+ } else if (referenceList == weakReferences && !(strongReferences.containsKey(resultedEditPart))) {
referenceList.put(resultedEditPart, role);
}
}
@@ -322,7 +322,7 @@ public class SequenceReferenceEditPolicy extends GraphicalEditPolicy implements
ExecutionSpecification executionSpec = getExecutionSpecificationAssociatedToEvent(sourceEvent);
if (executionSpec != null) {
IGraphicalEditPart resultedEditPart = getEditPartFromSemantic(executionSpec);
- if (referenceList.equals(strongReferences)) {
+ if (referenceList == strongReferences) {
if (resultedEditPart != null) {
if (executionSpec.getStart().equals(sourceEvent)) {
referenceList.put(resultedEditPart, ROLE_START);
@@ -330,7 +330,7 @@ public class SequenceReferenceEditPolicy extends GraphicalEditPolicy implements
referenceList.put(resultedEditPart, ROLE_FINISH);
}
}
- } else if (referenceList.equals(weakReferences) && !(strongReferences.containsKey(resultedEditPart))) {
+ } else if (referenceList == weakReferences && !(strongReferences.containsKey(resultedEditPart))) {
if (resultedEditPart != null) {
if (executionSpec.getStart().equals(sourceEvent)) {
referenceList.put(resultedEditPart, ROLE_START);
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/UpdateWeakReferenceEditPolicy.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/UpdateWeakReferenceEditPolicy.java
index d2dd5ad901e..905b346bb54 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/UpdateWeakReferenceEditPolicy.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/UpdateWeakReferenceEditPolicy.java
@@ -8,7 +8,7 @@
*
* Contributors:
* CEA LIST - Initial API and implementation
- *
+ * Mickaël ADAM (ALL4TEC) mickael.adam@all4tec.net - Bug 526191
*****************************************************************************/
package org.eclipse.papyrus.uml.diagram.sequence.edit.policies;
@@ -25,12 +25,14 @@ import org.eclipse.gef.EditPart;
import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.gef.RequestConstants;
import org.eclipse.gef.commands.CompoundCommand;
+import org.eclipse.gef.commands.UnexecutableCommand;
import org.eclipse.gef.editpolicies.GraphicalEditPolicy;
import org.eclipse.gef.requests.ChangeBoundsRequest;
import org.eclipse.gef.requests.ReconnectRequest;
import org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.CLifeLineEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.keyboardlistener.IKeyPressState;
import org.eclipse.papyrus.uml.diagram.sequence.keyboardlistener.KeyboardListener;
import org.eclipse.papyrus.uml.diagram.sequence.part.UMLDiagramEditorPlugin;
@@ -57,9 +59,13 @@ public abstract class UpdateWeakReferenceEditPolicy extends GraphicalEditPolicy
private final MoveMessagePropertyChangeListener moveMessageListener = new MoveMessagePropertyChangeListener();
/**
- * The must move preference boolean. Set to true if messages above the current message must move down at the same time.
+ * The must move preference boolean. Set to true if messages below the current message must move up at the same time.
*/
- private boolean mustMovePreference;
+ protected boolean mustMoveBelowAtMovingUp;
+ /**
+ * The must move preference boolean. Set to true if messages below the current message must move down at the same time.
+ */
+ protected boolean mustMoveBelowAtMovingDown;
/**
* Constructor.
@@ -75,7 +81,8 @@ public abstract class UpdateWeakReferenceEditPolicy extends GraphicalEditPolicy
// activate listeners
PlatformUI.getWorkbench().getDisplay().addFilter(SWT.KeyDown, SHIFTDown);
PlatformUI.getWorkbench().getDisplay().addFilter(SWT.KeyUp, SHIFTUp);
- mustMove = mustMovePreference = UMLDiagramEditorPlugin.getInstance().getPreferenceStore().getBoolean(CustomDiagramGeneralPreferencePage.PREF_MOVE_ABOVE_MESSAGE);
+ mustMoveBelowAtMovingUp = UMLDiagramEditorPlugin.getInstance().getPreferenceStore().getBoolean(CustomDiagramGeneralPreferencePage.PREF_MOVE_BELOW_ELEMENTS_AT_MESSAGE_UP);
+ mustMoveBelowAtMovingDown = UMLDiagramEditorPlugin.getInstance().getPreferenceStore().getBoolean(CustomDiagramGeneralPreferencePage.PREF_MOVE_BELOW_ELEMENTS_AT_MESSAGE_DOWN);
UMLDiagramEditorPlugin.getInstance().getPreferenceStore().addPropertyChangeListener(moveMessageListener);
}
@@ -125,7 +132,7 @@ public abstract class UpdateWeakReferenceEditPolicy extends GraphicalEditPolicy
*/
@Override
public void setKeyPressState(Boolean isPressed) {
- mustMove = mustMovePreference && !isPressed;
+ mustMove = !isPressed;
}
/**
@@ -143,11 +150,21 @@ public abstract class UpdateWeakReferenceEditPolicy extends GraphicalEditPolicy
SenderRequestUtils.addRequestSenders(changeBoundsRequest, senderList);
SenderRequestUtils.addRequestSender(changeBoundsRequest, hostEditPart);
GraphicalEditPart gEditPart = (GraphicalEditPart) editPartToMove;
- changeBoundsRequest.setLocation(new Point(gEditPart.getFigure().getBounds().getTopLeft().x, gEditPart.getFigure().getBounds().getTopLeft().x + moveDelta.y()));
- changeBoundsRequest.setEditParts(editPartToMove);
- changeBoundsRequest.setMoveDelta(moveDelta);
- changeBoundsRequest.setSizeDelta(new Dimension(0, 0));
- compoundCommand.add(editPartToMove.getCommand(changeBoundsRequest));
+ Point newLocation = new Point(gEditPart.getFigure().getBounds().getTopLeft().x, gEditPart.getFigure().getBounds().getTopLeft().y + moveDelta.y());
+
+ if (editPartToMove.getParent() instanceof CLifeLineEditPart) {
+ // Translate to relative
+ int stickerHeight = ((CLifeLineEditPart) editPartToMove.getParent()).getStickerHeight();
+ if (newLocation.y >= stickerHeight) {
+ changeBoundsRequest.setLocation(newLocation);
+ changeBoundsRequest.setEditParts(editPartToMove);
+ changeBoundsRequest.setMoveDelta(moveDelta);
+ changeBoundsRequest.setSizeDelta(new Dimension(0, 0));
+ compoundCommand.add(editPartToMove.getCommand(changeBoundsRequest));
+ } else {
+ compoundCommand.add(UnexecutableCommand.INSTANCE);
+ }
+ }
}
/**
@@ -194,10 +211,18 @@ public abstract class UpdateWeakReferenceEditPolicy extends GraphicalEditPolicy
*/
@Override
public void propertyChange(PropertyChangeEvent event) {
- if (CustomDiagramGeneralPreferencePage.PREF_MOVE_ABOVE_MESSAGE.equals(event.getProperty())) {
- if (mustMovePreference != (boolean) event.getNewValue()) {
- mustMove = mustMovePreference = (boolean) event.getNewValue();
+ String property = event.getProperty();
+ switch (property) {
+ case CustomDiagramGeneralPreferencePage.PREF_MOVE_BELOW_ELEMENTS_AT_MESSAGE_UP:
+ if (mustMoveBelowAtMovingUp != (boolean) event.getNewValue()) {
+ mustMoveBelowAtMovingUp = (boolean) event.getNewValue();
+ }
+ break;
+ case CustomDiagramGeneralPreferencePage.PREF_MOVE_BELOW_ELEMENTS_AT_MESSAGE_DOWN:
+ if (mustMoveBelowAtMovingDown != (boolean) event.getNewValue()) {
+ mustMoveBelowAtMovingDown = (boolean) event.getNewValue();
}
+ break;
}
}
}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/UpdateWeakReferenceForExecSpecEditPolicy.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/UpdateWeakReferenceForExecSpecEditPolicy.java
index 54a2dc94906..1244dee65bc 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/UpdateWeakReferenceForExecSpecEditPolicy.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/UpdateWeakReferenceForExecSpecEditPolicy.java
@@ -8,12 +8,13 @@
*
* Contributors:
* CEA LIST - Initial API and implementation
- *
+ * Mickaël ADAM (ALL4TEC) mickael.adam@all4tec.net - Bug 526191
*****************************************************************************/
package org.eclipse.papyrus.uml.diagram.sequence.edit.policies;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import org.eclipse.draw2d.geometry.Point;
@@ -68,7 +69,7 @@ public class UpdateWeakReferenceForExecSpecEditPolicy extends UpdateWeakReferenc
} else if (RequestConstants.REQ_RESIZE.equals(request.getType())) {
moveDelta = new Point(0, ((ChangeBoundsRequest) request).getSizeDelta().height + ((ChangeBoundsRequest) request).getMoveDelta().y);
}
- if (moveDelta.y > 0 && mustMove) {
+ if (moveDelta.y != 0 && mustMove) {
if (getHost() instanceof AbstractExecutionSpecificationEditPart) {
getHostFigure().translateToAbsolute(locationAndSize);
locationAndSize = ((ChangeBoundsRequest) request).getTransformedRectangle(locationAndSize);
@@ -77,10 +78,17 @@ public class UpdateWeakReferenceForExecSpecEditPolicy extends UpdateWeakReferenc
SequenceReferenceEditPolicy references = (SequenceReferenceEditPolicy) getHost().getEditPolicy(SequenceReferenceEditPolicy.SEQUENCE_REFERENCE);
if (!SenderRequestUtils.isASender(request, getHost())) {
CompoundCommand compoundCommand = new CompoundCommand();
- for (Iterator<EditPart> iterator = references.getWeakReferences().keySet().iterator(); iterator.hasNext();) {
+
+ // Gets weak references
+ HashMap<EditPart, String> weakReferences = new HashMap<EditPart, String>();
+ if ((moveDelta.y > 0 && mustMoveBelowAtMovingDown) || (moveDelta.y < 0 && mustMoveBelowAtMovingUp)) {
+ weakReferences.putAll(references.getWeakReferences());
+ }
+
+ for (Iterator<EditPart> iterator = weakReferences.keySet().iterator(); iterator.hasNext();) {
EditPart editPart = (EditPart) iterator.next();
if (!SenderRequestUtils.isASender(request, editPart)) {
- UMLDiagramEditorPlugin.log.trace(LogOptions.SEQUENCE_DEBUG, "+--> try to Move " + editPart);//$NON-NLS-1$
+ UMLDiagramEditorPlugin.log.trace(LogOptions.SEQUENCE_DEBUG, "+--> try to Move of " + moveDelta.y + " " + editPart);//$NON-NLS-1$
ArrayList<EditPart> senderList = SenderRequestUtils.getSenders(request);
if (editPart instanceof ConnectionEditPart) {
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/UpdateWeakReferenceForMessageSpecEditPolicy.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/UpdateWeakReferenceForMessageSpecEditPolicy.java
index ac8d0995059..1243a3d2526 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/UpdateWeakReferenceForMessageSpecEditPolicy.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/edit/policies/UpdateWeakReferenceForMessageSpecEditPolicy.java
@@ -8,12 +8,13 @@
*
* Contributors:
* CEA LIST - Initial API and implementation
- *
+ * Mickaël ADAM (ALL4TEC) mickael.adam@all4tec.net - Bug 526191
*****************************************************************************/
package org.eclipse.papyrus.uml.diagram.sequence.edit.policies;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import org.eclipse.draw2d.geometry.Point;
@@ -76,12 +77,19 @@ public class UpdateWeakReferenceForMessageSpecEditPolicy extends UpdateWeakRefer
Point anchorPositionOnScreen = polyline.getSourceAnchor().getReferencePoint();
moveDelta.y = reconnectRequest.getLocation().y - anchorPositionOnScreen.y;
}
- if (moveDelta.y > 0 && mustMove) {
+ if (moveDelta.y != 0 && mustMove) {
if (hostConnectionEditPart.getEditPolicy(SequenceReferenceEditPolicy.SEQUENCE_REFERENCE) != null) {
SequenceReferenceEditPolicy references = (SequenceReferenceEditPolicy) hostConnectionEditPart.getEditPolicy(SequenceReferenceEditPolicy.SEQUENCE_REFERENCE);
if (!SenderRequestUtils.isASender(request, getHost())) {
CompoundCommand compoundCommand = new CompoundCommand();
- for (Iterator<EditPart> iterator = references.getWeakReferences().keySet().iterator(); iterator.hasNext();) {
+
+ // Gets weak references
+ HashMap<EditPart, String> weakReferences = new HashMap<EditPart, String>();
+ if ((moveDelta.y > 0 && mustMoveBelowAtMovingDown) || (moveDelta.y < 0 && mustMoveBelowAtMovingUp)) {
+ weakReferences.putAll(references.getWeakReferences());
+ }
+
+ for (Iterator<EditPart> iterator = weakReferences.keySet().iterator(); iterator.hasNext();) {
EditPart editPart = (EditPart) iterator.next();
if (!SenderRequestUtils.isASender(request, editPart)) {
UMLDiagramEditorPlugin.log.trace(LogOptions.SEQUENCE_DEBUG, "+--> try to Move " + editPart);//$NON-NLS-1$
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/messages/Messages.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/messages/Messages.java
index 7d926fbbb17..3971198bf01 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/messages/Messages.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/messages/Messages.java
@@ -82,7 +82,12 @@ public class Messages extends NLS {
/**
* @since 5.0
*/
- public static String CustomDiagramGeneralPreferencePage_MoveMessageAboveDescription;
+ public static String CustomDiagramGeneralPreferencePage_MoveBelowElementsAtMessageUpDescription;
+
+ /**
+ * @since 5.0
+ */
+ public static String CustomDiagramGeneralPreferencePage_MoveBelowElementsAtMessageDownDescription;
/**
* @since 5.0
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/messages/messages.properties b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/messages/messages.properties
index ea44a6758f1..655cf501e4d 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/messages/messages.properties
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/messages/messages.properties
@@ -10,5 +10,6 @@ Commands_DropDestructionOccurenceSpecification_Label=Drop Destruction Occurrence
Commands_CreateExecutionSpecification_Label=Execution Specification Automatic Creation with Message
Commands_DropDestructionOccurenceSpecification_Label=Drop Destruction Occurrence Specification
Commands_CreateExecutionSpecification_Label=Execution Specification Automatic Creation with Message
-CustomDiagramGeneralPreferencePage_MoveMessageAboveDescription=When moving down a message, everything after that message is also moved down
+CustomDiagramGeneralPreferencePage_MoveBelowElementsAtMessageUpDescription=When moving up a message, everything after that message is also moved up
+CustomDiagramGeneralPreferencePage_MoveBelowElementsAtMessageDownDescription=When moving down a message, everything after that message is also moved down
CustomDiagramGeneralPreferencePage_othersGroupLabel=others
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/preferences/CustomDiagramGeneralPreferencePage.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/preferences/CustomDiagramGeneralPreferencePage.java
index 1e4e86b115c..cc81808cfef 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/preferences/CustomDiagramGeneralPreferencePage.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/preferences/CustomDiagramGeneralPreferencePage.java
@@ -8,7 +8,7 @@
*
* Contributors:
* CEA LIST - Initial API and implementation
- * Mickaël ADAM (ALL4TEC) mickael.adam@all4tec.net - Bug 521829
+ * Mickaël ADAM (ALL4TEC) mickael.adam@all4tec.net - Bug 521829, 526191
*/
package org.eclipse.papyrus.uml.diagram.sequence.preferences;
@@ -49,11 +49,18 @@ public class CustomDiagramGeneralPreferencePage extends DiagramPreferencePage {
public static String PREF_EXECUTION_SPECIFICATION_SYNC_MSG = "PREF_EXECUTION_SPECIFICATION_SYNC_MSG"; //$NON-NLS-1$
/**
- * preference key to move messages in the same time.
+ * preference key to move up messages in the same time that message up.
*
* @since 5.0
*/
- public static final String PREF_MOVE_ABOVE_MESSAGE = "PREF_MOVE_ABOVE_MESSAGE"; //$NON-NLS-1$
+ public static final String PREF_MOVE_BELOW_ELEMENTS_AT_MESSAGE_UP = "PREF_MOVE_BELOW_ELEMENTS_AT_MESSAGE_UP"; //$NON-NLS-1$
+
+ /**
+ * preference key to move down messages in the same time that message down.
+ *
+ * @since 5.0
+ */
+ public static final String PREF_MOVE_BELOW_ELEMENTS_AT_MESSAGE_DOWN = "PREF_MOVE_BELOW_ELEMENTS_AT_MESSAGE_DOWN"; //$NON-NLS-1$
/**
* possible preference values
@@ -98,10 +105,8 @@ public class CustomDiagramGeneralPreferencePage extends DiagramPreferencePage {
otherGroupGridData.horizontalSpan = 2;
otherGroup.setLayoutData(otherGroupGridData);
otherGroup.setText(Messages.CustomDiagramGeneralPreferencePage_othersGroupLabel);
-
- BooleanFieldEditor booleanFieldEditor = new BooleanFieldEditor(PREF_MOVE_ABOVE_MESSAGE, Messages.CustomDiagramGeneralPreferencePage_MoveMessageAboveDescription, otherGroup);
- addField(booleanFieldEditor);
-
+ addField(new BooleanFieldEditor(PREF_MOVE_BELOW_ELEMENTS_AT_MESSAGE_DOWN, Messages.CustomDiagramGeneralPreferencePage_MoveBelowElementsAtMessageDownDescription, otherGroup));
+ addField(new BooleanFieldEditor(PREF_MOVE_BELOW_ELEMENTS_AT_MESSAGE_UP, Messages.CustomDiagramGeneralPreferencePage_MoveBelowElementsAtMessageUpDescription, otherGroup));
}
/**
@@ -139,12 +144,11 @@ public class CustomDiagramGeneralPreferencePage extends DiagramPreferencePage {
* preferenceStore
*/
public static void initSpecificDefaults(IPreferenceStore preferenceStore) {
- preferenceStore.setDefault(PREF_EXECUTION_SPECIFICATION_SYNC_MSG,
- CHOICE_BEHAVIOR_AND_REPLY);
- preferenceStore.setDefault(PREF_EXECUTION_SPECIFICATION_ASYNC_MSG,
- CHOICE_NONE);
- preferenceStore.setDefault(PREF_MOVE_ABOVE_MESSAGE,
- true);
+ preferenceStore.setDefault(PREF_EXECUTION_SPECIFICATION_SYNC_MSG, CHOICE_BEHAVIOR_AND_REPLY);
+ preferenceStore.setDefault(PREF_EXECUTION_SPECIFICATION_ASYNC_MSG, CHOICE_NONE);
+
+ preferenceStore.setDefault(PREF_MOVE_BELOW_ELEMENTS_AT_MESSAGE_DOWN, true);
+ preferenceStore.setDefault(PREF_MOVE_BELOW_ELEMENTS_AT_MESSAGE_UP, false);
}
}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/referencialgrilling/LifeLineGraphicalNodeEditPolicy.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/referencialgrilling/LifeLineGraphicalNodeEditPolicy.java
index 864b8672944..ccb68568385 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/referencialgrilling/LifeLineGraphicalNodeEditPolicy.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence/custom-src/org/eclipse/papyrus/uml/diagram/sequence/referencialgrilling/LifeLineGraphicalNodeEditPolicy.java
@@ -8,7 +8,7 @@
*
* Contributors:
* CEA LIST - Initial API and implementation
- * Mickaël ADAM (ALL4TEC) mickael.adam@all4tec.net - Bug 519621, 519756
+ * Mickaël ADAM (ALL4TEC) mickael.adam@all4tec.net - Bug 519621, 519756, 526191
*****************************************************************************/
package org.eclipse.papyrus.uml.diagram.sequence.referencialgrilling;
@@ -39,7 +39,6 @@ import org.eclipse.gef.requests.ReconnectRequest;
import org.eclipse.gmf.runtime.common.core.command.ICommand;
import org.eclipse.gmf.runtime.diagram.ui.commands.SetBoundsCommand;
import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart;
-import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.GraphicalNodeEditPolicy;
import org.eclipse.gmf.runtime.diagram.ui.requests.CreateConnectionViewAndElementRequest;
@@ -651,6 +650,19 @@ public class LifeLineGraphicalNodeEditPolicy extends DefaultGraphicalNodeEditPol
return UnexecutableCommand.INSTANCE;
}
}
+
+ // check that the location is not at the header
+ NodeEditPart nodeEP = (NodeEditPart) request.getTarget();
+ if (nodeEP instanceof CLifeLineEditPart) {
+ Point location = request.getLocation().getCopy();
+ // Translate to relative
+ getHostFigure().getParent().translateToRelative(location);
+ int stickerHeight = ((CLifeLineEditPart) nodeEP).getStickerHeight();
+ if (location.y <= stickerHeight) {
+ return UnexecutableCommand.INSTANCE;
+ }
+ }
+
return getBasicGraphicalNodeEditPolicy().getCommand(request);
}
@@ -673,9 +685,20 @@ public class LifeLineGraphicalNodeEditPolicy extends DefaultGraphicalNodeEditPol
return UnexecutableCommand.INSTANCE;
}
}
+ NodeEditPart nodeEP = (NodeEditPart) request.getTarget();
+
+ // check that the location is not at the header
+ if (nodeEP instanceof CLifeLineEditPart) {
+ Point location = request.getLocation().getCopy();
+ // Translate to relative
+ getHostFigure().getParent().translateToRelative(location);
+ int stickerHeight = ((CLifeLineEditPart) nodeEP).getStickerHeight();
+ if (location.y <= stickerHeight) {
+ return UnexecutableCommand.INSTANCE;
+ }
+ }
Command reconnectTargetCommand = getBasicGraphicalNodeEditPolicy().getCommand(request);
- NodeEditPart nodeEP = (NodeEditPart) request.getTarget();
// in case of reconnect target for message create it is need to move up the old target and move down the new target
if (nodeEP instanceof CLifeLineEditPart) {

Back to the top