Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorashatilov2015-11-11 21:35:22 +0000
committerGerrit Code Review @ Eclipse.org2015-11-26 09:57:10 +0000
commit77aafffb1f48e871432ef038a42e4fc73f14d8a0 (patch)
tree5b0fa0e8c3b8f634738286fd3057d0e1cfb476f6
parenta2d85bf08432e63c1ecfc8a1f784c58020a8fd41 (diff)
downloadorg.eclipse.papyrus-77aafffb1f48e871432ef038a42e4fc73f14d8a0.tar.gz
org.eclipse.papyrus-77aafffb1f48e871432ef038a42e4fc73f14d8a0.tar.xz
org.eclipse.papyrus-77aafffb1f48e871432ef038a42e4fc73f14d8a0.zip
Bug 481963 - [StateMachine diagram] Should be possible to drop hided
constraint from model explorer Change-Id: Iefc75448384843f58806ccd788d275bb891c4da0 Signed-off-by: ashatilov <shatilov@montages.com>
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomStateMachineDiagramDragDropEditPolicy.java28
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/ShowHideRelatedLinkEditPolicy.java41
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/model/stateMachineDiagram.gmfgen4
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/src/org/eclipse/papyrus/uml/diagram/statemachine/edit/parts/PackageEditPart.java7
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/tests/StateMachineUtil.java43
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/tests/canonical/AllCanonicalTests.java3
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/tests/canonical/TestStateMachineContextLink.java87
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.tests/src/org/eclipse/papyrus/uml/diagram/tests/canonical/TestContextLink.java53
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.tests/src/org/eclipse/papyrus/uml/diagram/tests/canonical/TestLink.java67
9 files changed, 275 insertions, 58 deletions
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomStateMachineDiagramDragDropEditPolicy.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomStateMachineDiagramDragDropEditPolicy.java
index 9b433ee792c..7b2ec3241f9 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomStateMachineDiagramDragDropEditPolicy.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomStateMachineDiagramDragDropEditPolicy.java
@@ -64,10 +64,12 @@ import org.eclipse.gmf.runtime.emf.type.core.IElementType;
import org.eclipse.gmf.runtime.emf.type.core.IHintedType;
import org.eclipse.gmf.runtime.notation.Node;
import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.commands.wrappers.GMFtoGEFCommandWrapper;
import org.eclipse.papyrus.infra.gmfdiag.common.adapter.SemanticAdapter;
import org.eclipse.papyrus.infra.gmfdiag.common.commands.CommonDeferredCreateConnectionViewCommand;
import org.eclipse.papyrus.infra.gmfdiag.common.utils.DiagramEditPartsUtil;
import org.eclipse.papyrus.uml.diagram.common.editpolicies.CommonDiagramDragDropEditPolicy;
+import org.eclipse.papyrus.uml.diagram.common.strategy.paste.ShowConstraintContextLink;
import org.eclipse.papyrus.uml.diagram.statemachine.custom.commands.CreateViewCommand;
import org.eclipse.papyrus.uml.diagram.statemachine.custom.commands.CustomCompositeStateSetBoundsCommand;
import org.eclipse.papyrus.uml.diagram.statemachine.custom.commands.CustomCompositeStateWithDefaultRegionCreateNodeCommand;
@@ -82,6 +84,7 @@ import org.eclipse.papyrus.uml.diagram.statemachine.custom.helpers.StateMachineL
import org.eclipse.papyrus.uml.diagram.statemachine.custom.helpers.Zone;
import org.eclipse.papyrus.uml.diagram.statemachine.custom.locators.CustomEntryExitPointPositionLocator;
import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.ConnectionPointReferenceEditPart;
+import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.ConstraintEditPart;
import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.FinalStateEditPart;
import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.PseudostateChoiceEditPart;
import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.PseudostateDeepHistoryEditPart;
@@ -103,6 +106,7 @@ import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.TransitionEditPar
import org.eclipse.papyrus.uml.diagram.statemachine.part.UMLVisualIDRegistry;
import org.eclipse.papyrus.uml.diagram.statemachine.providers.UMLElementTypes;
import org.eclipse.uml2.uml.ConnectionPointReference;
+import org.eclipse.uml2.uml.Constraint;
import org.eclipse.uml2.uml.Element;
import org.eclipse.uml2.uml.FinalState;
import org.eclipse.uml2.uml.Pseudostate;
@@ -775,6 +779,7 @@ public class CustomStateMachineDiagramDragDropEditPolicy extends CommonDiagramDr
droppableElementsVisualId.add(PseudostateJunctionEditPart.VISUAL_ID);
// add final state
droppableElementsVisualId.add(FinalStateEditPart.VISUAL_ID);
+ droppableElementsVisualId.add(ConstraintEditPart.VISUAL_ID);
// droppableElementsVisualId.add(EntryStateBehaviorEditPart.VISUAL_ID);
return droppableElementsVisualId;
@@ -838,6 +843,8 @@ public class CustomStateMachineDiagramDragDropEditPolicy extends CommonDiagramDr
case PseudostateJoinEditPart.VISUAL_ID:
case PseudostateJunctionEditPart.VISUAL_ID:
return dropPseudostate(dropRequest, semanticElement, nodeVISUALID);
+ case ConstraintEditPart.VISUAL_ID:
+ return dropConstraint(dropRequest, (Constraint) semanticElement, nodeVISUALID);
default:
return super.getSpecificDropCommand(dropRequest, semanticElement, nodeVISUALID, linkVISUALID);
@@ -845,6 +852,27 @@ public class CustomStateMachineDiagramDragDropEditPolicy extends CommonDiagramDr
}
}
+ /**
+ * Returns the command to drop the Constraint + the link to attach it to its contrainted elements
+ *
+ * @param dropRequest
+ * the drop request
+ * @param constraint
+ * the dropped constraint
+ * @param nodeVISUALID
+ * the node visual id
+ *
+ * @return the command
+ */
+ protected Command dropConstraint(DropObjectsRequest dropRequest, Constraint constraint, int nodeVISUALID) {
+ ICommand dropConstraintCommand = getDefaultDropNodeCommand(nodeVISUALID, dropRequest.getLocation(), constraint, dropRequest);
+ if (constraint.getContext() != null) {
+ ShowConstraintContextLink showConstraintContextLink = new ShowConstraintContextLink(getEditingDomain(), (GraphicalEditPart) getHost(), constraint);
+ dropConstraintCommand = dropConstraintCommand.compose(showConstraintContextLink);
+ }
+ return GMFtoGEFCommandWrapper.wrap(dropConstraintCommand);
+ }
+
@Override
public IElementType getUMLElementType(int elementID) {
return UMLElementTypes.getElementType(elementID);
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/ShowHideRelatedLinkEditPolicy.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/ShowHideRelatedLinkEditPolicy.java
new file mode 100644
index 00000000000..05e9793c56a
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/ShowHideRelatedLinkEditPolicy.java
@@ -0,0 +1,41 @@
+package org.eclipse.papyrus.uml.diagram.statemachine.custom.policies;
+
+import org.eclipse.gmf.tooling.runtime.structure.DiagramStructure;
+import org.eclipse.gmf.tooling.runtime.update.DiagramUpdater;
+import org.eclipse.papyrus.uml.diagram.common.editpolicies.AbstractUMLShowHideRelatedLinkEditPolicy;
+import org.eclipse.papyrus.uml.diagram.statemachine.part.UMLDiagramUpdater;
+import org.eclipse.papyrus.uml.diagram.statemachine.part.UMLVisualIDRegistry;
+
+/**
+ * Show Hide link editpolicy for StateMachine Diagram
+ *
+ */
+public class ShowHideRelatedLinkEditPolicy extends AbstractUMLShowHideRelatedLinkEditPolicy {
+
+ /**
+ *
+ * Constructor.
+ */
+ public ShowHideRelatedLinkEditPolicy() {
+ super();
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public DiagramUpdater getDiagramUpdater() {
+ return UMLDiagramUpdater.INSTANCE;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.infra.gmfdiag.common.editpolicies.IDiagramInformationProviderEditPolicy#getDiagramStructure()
+ *
+ * @return
+ */
+ public DiagramStructure getDiagramStructure() {
+ return UMLVisualIDRegistry.TYPED_INSTANCE;
+ }
+} \ No newline at end of file
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/model/stateMachineDiagram.gmfgen b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/model/stateMachineDiagram.gmfgen
index 9dfe9976704..14522d0e3f7 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/model/stateMachineDiagram.gmfgen
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/model/stateMachineDiagram.gmfgen
@@ -76,6 +76,10 @@
xsi:type="gmfgen:CustomBehaviour"
key="org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.DRAG_DROP_ROLE"
editPolicyQualifiedClassName="org.eclipse.papyrus.uml.diagram.statemachine.custom.policies.CustomStateMachineDiagramDragDropEditPolicy"/>
+ <behaviour
+ xsi:type="gmfgen:CustomBehaviour"
+ key="org.eclipse.papyrus.infra.gmfdiag.common.editpolicies.AbstractShowHideRelatedLinkEditPolicy.SHOW_HIDE_RELATED_LINK_ROLE"
+ editPolicyQualifiedClassName="org.eclipse.papyrus.uml.diagram.statemachine.custom.policies.ShowHideRelatedLinkEditPolicy"/>
<domainDiagramElement
href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package"/>
<childNodes
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/src/org/eclipse/papyrus/uml/diagram/statemachine/edit/parts/PackageEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/src/org/eclipse/papyrus/uml/diagram/statemachine/edit/parts/PackageEditPart.java
index d361468a1c1..8cf6f57e3a7 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/src/org/eclipse/papyrus/uml/diagram/statemachine/edit/parts/PackageEditPart.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/src/org/eclipse/papyrus/uml/diagram/statemachine/edit/parts/PackageEditPart.java
@@ -15,6 +15,7 @@ import org.eclipse.gef.EditPolicy;
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.papyrus.infra.gmfdiag.common.editpart.PapyrusDiagramEditPart;
+import org.eclipse.papyrus.infra.gmfdiag.common.editpolicies.AbstractShowHideRelatedLinkEditPolicy;
import org.eclipse.papyrus.infra.gmfdiag.common.editpolicies.DefaultCompartmentSemanticEditPolicy;
import org.eclipse.papyrus.infra.gmfdiag.common.editpolicies.DefaultCreationEditPolicy;
import org.eclipse.papyrus.uml.diagram.common.editpolicies.PasteEditPolicy;
@@ -22,6 +23,7 @@ import org.eclipse.papyrus.uml.diagram.statemachine.custom.policies.CustomPackag
import org.eclipse.papyrus.uml.diagram.statemachine.custom.policies.CustomPackageXYLayoutEditPolicy;
import org.eclipse.papyrus.uml.diagram.statemachine.custom.policies.CustomStateMachineDiagramDragDropEditPolicy;
import org.eclipse.papyrus.uml.diagram.statemachine.custom.policies.RemoveOrphanViewPolicy;
+import org.eclipse.papyrus.uml.diagram.statemachine.custom.policies.ShowHideRelatedLinkEditPolicy;
/**
* @generated
@@ -56,13 +58,14 @@ public class PackageEditPart extends PapyrusDiagramEditPart {
installEditPolicy(PasteEditPolicy.PASTE_ROLE, new PasteEditPolicy());
installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new DefaultCompartmentSemanticEditPolicy());
- //in Papyrus diagrams are not strongly synchronised
- //installEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CANONICAL_ROLE, new org.eclipse.papyrus.uml.diagram.statemachine.edit.policies.PackageCanonicalEditPolicy());
+ // in Papyrus diagrams are not strongly synchronised
+ // installEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CANONICAL_ROLE, new org.eclipse.papyrus.uml.diagram.statemachine.edit.policies.PackageCanonicalEditPolicy());
installEditPolicy("RemoveOrphanView", new RemoveOrphanViewPolicy()); //$NON-NLS-1$
installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CustomPackageCreationEditPolicy());
installEditPolicy(EditPolicy.LAYOUT_ROLE, new CustomPackageXYLayoutEditPolicy());
installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new CustomStateMachineDiagramDragDropEditPolicy());
+ installEditPolicy(AbstractShowHideRelatedLinkEditPolicy.SHOW_HIDE_RELATED_LINK_ROLE, new ShowHideRelatedLinkEditPolicy());
// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.POPUPBAR_ROLE);
}
}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/tests/StateMachineUtil.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/tests/StateMachineUtil.java
new file mode 100644
index 00000000000..c8c47ae86a0
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/tests/StateMachineUtil.java
@@ -0,0 +1,43 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.diagram.statemachine.tests;
+
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
+import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.RegionCompartmentEditPart;
+import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.RegionEditPart;
+import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.StateMachineCompartmentEditPart;
+import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.StateMachineEditPart;
+import org.junit.Assert;
+
+/**
+ * State machine diagram util class
+ */
+public class StateMachineUtil {
+
+ /**
+ * find region compartment edit part
+ */
+ public static IGraphicalEditPart getRegionCompartmentEditPart(IGraphicalEditPart root) {
+ IGraphicalEditPart sm = findChildBySemanticHint(root, StateMachineEditPart.VISUAL_ID);
+ IGraphicalEditPart smCompartment = findChildBySemanticHint(sm, StateMachineCompartmentEditPart.VISUAL_ID);
+ IGraphicalEditPart region = findChildBySemanticHint(smCompartment, RegionEditPart.VISUAL_ID);
+ return findChildBySemanticHint(region, RegionCompartmentEditPart.VISUAL_ID);
+ }
+
+ public static IGraphicalEditPart findChildBySemanticHint(IGraphicalEditPart parent, int vid) {
+ IGraphicalEditPart childEP = parent.getChildBySemanticHint(Integer.toString(vid));
+ Assert.assertNotNull("Parent " + parent + ", type " + parent.getNotationView() + " looking for: " + vid, childEP);
+ return childEP;
+ }
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/tests/canonical/AllCanonicalTests.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/tests/canonical/AllCanonicalTests.java
index cc9f9e76c7b..fa58f334791 100644
--- a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/tests/canonical/AllCanonicalTests.java
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/tests/canonical/AllCanonicalTests.java
@@ -28,7 +28,8 @@ TestStateMachineDiagramChildNode.class,
TestLinks.class,
TestTransitionLinks.class,
TestSemantic.class,
-TestStateMachineNode.class
+TestStateMachineNode.class,
+TestStateMachineContextLink.class
})
public class AllCanonicalTests {
}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/tests/canonical/TestStateMachineContextLink.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/tests/canonical/TestStateMachineContextLink.java
new file mode 100644
index 00000000000..db719c48fa8
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine.tests/src/org/eclipse/papyrus/uml/diagram/statemachine/tests/canonical/TestStateMachineContextLink.java
@@ -0,0 +1,87 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.diagram.statemachine.tests.canonical;
+
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
+import org.eclipse.gmf.runtime.emf.type.core.IElementType;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.gmf.tooling.runtime.update.DiagramUpdater;
+import org.eclipse.papyrus.commands.ICreationCommand;
+import org.eclipse.papyrus.uml.diagram.statemachine.CreateStateMachineDiagramCommand;
+import org.eclipse.papyrus.uml.diagram.statemachine.part.UMLDiagramUpdater;
+import org.eclipse.papyrus.uml.diagram.statemachine.providers.UMLElementTypes;
+import org.eclipse.papyrus.uml.diagram.statemachine.tests.IStateMachineDiagramTestsConstants;
+import org.eclipse.papyrus.uml.diagram.statemachine.tests.StateMachineUtil;
+import org.eclipse.papyrus.uml.diagram.tests.canonical.TestContextLink;
+import org.junit.Test;
+
+/**
+ * State machine context link tests
+ *
+ */
+public class TestStateMachineContextLink extends TestContextLink {
+
+ private IGraphicalEditPart myRegionCompartmentEditPart;
+
+ @Override
+ public DiagramUpdater getDiagramUpdater() {
+ return UMLDiagramUpdater.INSTANCE;
+ }
+
+ @Override
+ protected ICreationCommand getDiagramCommandCreation() {
+ return new CreateStateMachineDiagramCommand();
+ }
+
+ @Override
+ protected String getProjectName() {
+ return IStateMachineDiagramTestsConstants.PROJECT_NAME;
+ }
+
+ @Override
+ protected String getFileName() {
+ return IStateMachineDiagramTestsConstants.FILE_NAME;
+ }
+
+ @Test
+ public void testToManageContextLink() {
+ manageContextLink(UMLElementTypes.Constraint_668, UMLElementTypes.State_6000, UMLElementTypes.ConstraintContext_8500, UMLElementTypes.StateMachine_2000);
+ }
+
+ @Override
+ public void installEnvironment(IElementType sourceType, IElementType targetType) {
+ rootSemanticOwnedElementsBeforeCreatingLink = 2;
+ rootSemanticOwnedElementsAfterDestroy = rootSemanticOwnedElementsBeforeCreatingLink;
+ super.installEnvironment(sourceType, targetType);
+ rootSemanticOwnedElements = rootSemanticOwnedElementsBeforeCreatingLink;
+ }
+
+ @Override
+ protected IGraphicalEditPart getRootEditPart() {
+ if (myRegionCompartmentEditPart == null) {
+ myRegionCompartmentEditPart = StateMachineUtil.getRegionCompartmentEditPart(getDiagramEditPart());
+ }
+ return myRegionCompartmentEditPart;
+ }
+
+ /**
+ * Gets the root view.
+ *
+ * @return the root view
+ */
+ @Override
+ protected View getRootView() {
+ return getRootEditPart().getNotationView();
+ }
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.tests/src/org/eclipse/papyrus/uml/diagram/tests/canonical/TestContextLink.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.tests/src/org/eclipse/papyrus/uml/diagram/tests/canonical/TestContextLink.java
index 4751ae48aec..f863e936672 100644
--- a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.tests/src/org/eclipse/papyrus/uml/diagram/tests/canonical/TestContextLink.java
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.tests/src/org/eclipse/papyrus/uml/diagram/tests/canonical/TestContextLink.java
@@ -17,12 +17,13 @@ import org.eclipse.gef.commands.UnexecutableCommand;
import org.eclipse.gef.requests.GroupRequest;
import org.eclipse.gmf.runtime.diagram.ui.requests.DropObjectsRequest;
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
-import org.eclipse.gmf.runtime.notation.Diagram;
import org.eclipse.uml2.uml.Constraint;
import org.eclipse.uml2.uml.Element;
public abstract class TestContextLink extends TestLink {
+ protected int rootSemanticOwnedElementsAfterDestroy = 4;
+
protected void manageContextLink(IElementType sourceType, IElementType targetType, IElementType linkType, IElementType containerType) {
testToManageLink(sourceType, targetType, linkType, containerType, false, null);
checkUnexecutableCreateLinkCommand(linkType, source, target);
@@ -65,7 +66,7 @@ public abstract class TestContextLink extends TestLink {
@Override
public void testDestroy(IElementType type) {
// DESTROY SEMANTIC+ VIEW
- assertEquals(DESTROY_DELETION + INITIALIZATION_TEST, createdEdgesCount, ((Diagram) getRootView()).getEdges().size());
+ assertEquals(DESTROY_DELETION + INITIALIZATION_TEST, createdEdgesCount, calculateDiagramEdgesCount());
assertEquals(DESTROY_DELETION + INITIALIZATION_TEST, createdEdgesCount, source.getSourceConnections().size());
assertEquals(DESTROY_DELETION + INITIALIZATION_TEST, rootSemanticOwnedElements, getRootSemanticModel().getOwnedElements().size());
assertEquals(DESTROY_DELETION + INITIALIZATION_TEST, createdEdgesCount, getDiagramEditPart().getConnections().size());
@@ -78,23 +79,23 @@ public abstract class TestContextLink extends TestLink {
assertTrue(DESTROY_DELETION + TEST_IF_THE_COMMAND_CAN_BE_EXECUTED, command.canExecute());
diagramEditor.getDiagramEditDomain().getDiagramCommandStack().execute(command);
- assertEquals(DESTROY_DELETION + TEST_THE_EXECUTION, 0, ((Diagram) getRootView()).getEdges().size());
+ assertEquals(DESTROY_DELETION + TEST_THE_EXECUTION, 0, calculateDiagramEdgesCount());
assertEquals(DESTROY_DELETION + TEST_THE_EXECUTION, 0, source.getSourceConnections().size());
- assertEquals(DESTROY_DELETION + TEST_THE_EXECUTION, 4, getRootSemanticModel().getOwnedElements().size());
+ assertEquals(DESTROY_DELETION + TEST_THE_EXECUTION, rootSemanticOwnedElementsAfterDestroy, getRootSemanticModel().getOwnedElements().size());
assertTrue(DESTROY_DELETION + TEST_THE_UNDO, diagramEditor.getDiagramEditDomain().getDiagramCommandStack().canUndo());
diagramEditor.getDiagramEditDomain().getDiagramCommandStack().undo();
- assertEquals(DESTROY_DELETION + TEST_THE_UNDO, createdEdgesCount, ((Diagram) getRootView()).getEdges().size());
+ assertEquals(DESTROY_DELETION + TEST_THE_UNDO, createdEdgesCount, calculateDiagramEdgesCount());
assertEquals(DESTROY_DELETION + TEST_THE_UNDO, createdEdgesCount, source.getSourceConnections().size());
assertEquals(DESTROY_DELETION + TEST_THE_UNDO, rootSemanticOwnedElements, getRootSemanticModel().getOwnedElements().size());
diagramEditor.getDiagramEditDomain().getDiagramCommandStack().redo();
- assertEquals(DESTROY_DELETION + INITIALIZATION_TEST, 0, ((Diagram) getRootView()).getEdges().size());
+ assertEquals(DESTROY_DELETION + INITIALIZATION_TEST, 0, calculateDiagramEdgesCount());
assertEquals(DESTROY_DELETION + TEST_THE_REDO, 0, source.getSourceConnections().size());
- assertEquals(DESTROY_DELETION + TEST_THE_REDO, 4, getRootSemanticModel().getOwnedElements().size());
+ assertEquals(DESTROY_DELETION + TEST_THE_REDO, rootSemanticOwnedElementsAfterDestroy, getRootSemanticModel().getOwnedElements().size());
}
private void testConstraintViewDeletion() {
- assertEquals(VIEW_DELETION + INITIALIZATION_TEST, 4, ((Diagram) getRootView()).getChildren().size());
- assertEquals(VIEW_DELETION + INITIALIZATION_TEST, 1, ((Diagram) getRootView()).getEdges().size());
+ assertEquals(VIEW_DELETION + INITIALIZATION_TEST, 4, getRootEditPart().getChildren().size());
+ assertEquals(VIEW_DELETION + INITIALIZATION_TEST, createdEdgesCount, calculateDiagramEdgesCount());
assertEquals(VIEW_DELETION + INITIALIZATION_TEST, rootSemanticOwnedElements, getRootSemanticModel().getOwnedElements().size());
Request deleteViewRequest = new GroupRequest(RequestConstants.REQ_DELETE);
Command command = source.getCommand(deleteViewRequest);
@@ -102,48 +103,44 @@ public abstract class TestContextLink extends TestLink {
assertTrue(VIEW_DELETION + TEST_IF_THE_COMMAND_IS_CREATED, command != UnexecutableCommand.INSTANCE);
assertTrue(VIEW_DELETION + TEST_IF_THE_COMMAND_CAN_BE_EXECUTED, command.canExecute());
diagramEditor.getDiagramEditDomain().getDiagramCommandStack().execute(command);
- assertEquals(VIEW_DELETION + TEST_THE_EXECUTION, 3, ((Diagram) getRootView()).getChildren().size());
- assertEquals(VIEW_DELETION + TEST_THE_EXECUTION, 0, ((Diagram) getRootView()).getEdges().size());
+ assertEquals(VIEW_DELETION + TEST_THE_EXECUTION, 3, getRootEditPart().getChildren().size());
+ assertEquals(VIEW_DELETION + TEST_THE_EXECUTION, 0, calculateDiagramEdgesCount());
assertEquals(VIEW_DELETION + TEST_THE_EXECUTION, rootSemanticOwnedElements, getRootSemanticModel().getOwnedElements().size());
diagramEditor.getDiagramEditDomain().getDiagramCommandStack().undo();
- assertEquals(VIEW_DELETION + TEST_THE_UNDO, 4, ((Diagram) getRootView()).getChildren().size());
- assertEquals(VIEW_DELETION + TEST_THE_UNDO, 1, ((Diagram) getRootView()).getEdges().size());
+ assertEquals(VIEW_DELETION + TEST_THE_UNDO, 4, getRootEditPart().getChildren().size());
+ assertEquals(VIEW_DELETION + TEST_THE_UNDO, createdEdgesCount, calculateDiagramEdgesCount());
assertEquals(VIEW_DELETION + TEST_THE_UNDO, rootSemanticOwnedElements, getRootSemanticModel().getOwnedElements().size());
diagramEditor.getDiagramEditDomain().getDiagramCommandStack().redo();
- assertEquals(VIEW_DELETION + TEST_THE_REDO, 3, ((Diagram) getRootView()).getChildren().size());
- assertEquals(VIEW_DELETION + TEST_THE_REDO, 0, ((Diagram) getRootView()).getEdges().size());
+ assertEquals(VIEW_DELETION + TEST_THE_REDO, 3, getRootEditPart().getChildren().size());
+ assertEquals(VIEW_DELETION + TEST_THE_REDO, 0, calculateDiagramEdgesCount());
assertEquals(VIEW_DELETION + TEST_THE_REDO, rootSemanticOwnedElements, getRootSemanticModel().getOwnedElements().size());
}
private void testDropConstraint() {
- assertEquals(DROP + INITIALIZATION_TEST, 3, getDiagramEditPart().getChildren().size());
- assertEquals(DROP + INITIALIZATION_TEST, 3, ((Diagram) getRootView()).getChildren().size());
+ assertEquals(DROP + INITIALIZATION_TEST, 3, getRootEditPart().getChildren().size());
assertEquals(DROP + INITIALIZATION_TEST, rootSemanticOwnedElements, getRootSemanticModel().getOwnedElements().size());
- assertEquals(CREATION + INITIALIZATION_TEST, 0, ((Diagram) getRootView()).getEdges().size());
+ assertEquals(CREATION + INITIALIZATION_TEST, 0, calculateDiagramEdgesCount());
DropObjectsRequest dropObjectsRequest = new DropObjectsRequest();
ArrayList<Element> list = new ArrayList<Element>();
list.add(((Element) target.resolveSemanticElement()).getOwnedElements().get(0));
dropObjectsRequest.setObjects(list);
dropObjectsRequest.setLocation(new Point(20, 20));
- Command command = getDiagramEditPart().getCommand(dropObjectsRequest);
+ Command command = getRootEditPart().getCommand(dropObjectsRequest);
assertNotNull(DROP + COMMAND_NULL, command);
assertTrue(DROP + TEST_IF_THE_COMMAND_IS_CREATED, command != UnexecutableCommand.INSTANCE);
assertTrue(DROP + TEST_IF_THE_COMMAND_CAN_BE_EXECUTED, command.canExecute());
diagramEditor.getDiagramEditDomain().getDiagramCommandStack().execute(command);
- assertEquals(DROP + TEST_THE_EXECUTION, 4, getDiagramEditPart().getChildren().size());
+ assertEquals(DROP + TEST_THE_EXECUTION, 4, getRootEditPart().getChildren().size());
assertEquals(DROP + TEST_THE_EXECUTION, rootSemanticOwnedElements, getRootSemanticModel().getOwnedElements().size());
- assertEquals(DROP + TEST_THE_EXECUTION, 4, ((Diagram) getRootView()).getChildren().size());
- assertEquals(DROP + TEST_THE_EXECUTION, 1, ((Diagram) getRootView()).getEdges().size());
+ assertEquals(DROP + TEST_THE_EXECUTION, createdEdgesCount, calculateDiagramEdgesCount());
diagramEditor.getDiagramEditDomain().getDiagramCommandStack().undo();
- assertEquals(DROP + TEST_THE_UNDO, 3, getDiagramEditPart().getChildren().size());
+ assertEquals(DROP + TEST_THE_UNDO, 3, getRootEditPart().getChildren().size());
assertEquals(DROP + TEST_THE_UNDO, rootSemanticOwnedElements, getRootSemanticModel().getOwnedElements().size());
- assertEquals(DROP + TEST_THE_UNDO, 3, ((Diagram) getRootView()).getChildren().size());
- assertEquals(DROP + TEST_THE_UNDO, 0, ((Diagram) getRootView()).getEdges().size());
+ assertEquals(DROP + TEST_THE_UNDO, 0, calculateDiagramEdgesCount());
diagramEditor.getDiagramEditDomain().getDiagramCommandStack().redo();
- assertEquals(DROP + TEST_THE_REDO, 4, getDiagramEditPart().getChildren().size());
+ assertEquals(DROP + TEST_THE_REDO, 4, getRootEditPart().getChildren().size());
assertEquals(DROP + TEST_THE_REDO, rootSemanticOwnedElements, getRootSemanticModel().getOwnedElements().size());
- assertEquals(DROP + TEST_THE_REDO, 4, ((Diagram) getRootView()).getChildren().size());
- assertEquals(DROP + TEST_THE_REDO, 1, ((Diagram) getRootView()).getEdges().size());
+ assertEquals(DROP + TEST_THE_REDO, createdEdgesCount, calculateDiagramEdgesCount());
}
@Override
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.tests/src/org/eclipse/papyrus/uml/diagram/tests/canonical/TestLink.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.tests/src/org/eclipse/papyrus/uml/diagram/tests/canonical/TestLink.java
index ae0b425c6a1..f1d75d6579c 100644
--- a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.tests/src/org/eclipse/papyrus/uml/diagram/tests/canonical/TestLink.java
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.tests/src/org/eclipse/papyrus/uml/diagram/tests/canonical/TestLink.java
@@ -112,6 +112,8 @@ public abstract class TestLink extends AbstractPapyrusTestCase {
protected int initialEnvironmentChildsCount = 4;
+ protected int rootSemanticOwnedElementsBeforeCreatingLink = 4;
+
/**
* Test view deletion.
*
@@ -294,26 +296,33 @@ public abstract class TestLink extends AbstractPapyrusTestCase {
}
protected void testCreateLink(IElementType linkType, String initialName) {
- assertTrue(CREATION + INITIALIZATION_TEST, getDiagramEditPart().getChildren().size() == 4);
- assertTrue(CREATION + INITIALIZATION_TEST, getRootSemanticModel().getOwnedElements().size() == 4);
+ assertEquals(CREATION + INITIALIZATION_TEST, 4, getRootEditPart().getChildren().size());
+ assertEquals(CREATION + INITIALIZATION_TEST, rootSemanticOwnedElementsBeforeCreatingLink, getRootSemanticModel().getOwnedElements().size());
Command command = target.getCommand(createConnectionViewRequest(linkType, source, target));
assertNotNull(CREATION + COMMAND_NULL, command);
- assertTrue(CONTAINER_CREATION + TEST_IF_THE_COMMAND_CAN_BE_EXECUTED, command.canExecute() == true);
+ assertTrue(CONTAINER_CREATION + TEST_IF_THE_COMMAND_CAN_BE_EXECUTED, command.canExecute());
diagramEditor.getDiagramEditDomain().getDiagramCommandStack().execute(command);
- assertEquals(CREATION + INITIALIZATION_TEST, createdEdgesCount, ((Diagram) getRootView()).getEdges().size());
+ assertEquals(CREATION + INITIALIZATION_TEST, createdEdgesCount, calculateDiagramEdgesCount());
assertEquals(CREATION + INITIALIZATION_TEST, rootSemanticOwnedElements, getRootSemanticModel().getOwnedElements().size());
- assertEquals(CREATION + INITIALIZATION_TEST, initialEnvironmentChildsCount + createdChildsCount, getDiagramEditPart().getChildren().size());
+ assertEquals(CREATION + INITIALIZATION_TEST, initialEnvironmentChildsCount + createdChildsCount, getRootEditPart().getChildren().size());
diagramEditor.getDiagramEditDomain().getDiagramCommandStack().undo();
- assertTrue(CREATION + TEST_THE_UNDO, getRootView().getChildren().size() == 4);
- assertTrue(CREATION + TEST_THE_UNDO, getRootSemanticModel().getOwnedElements().size() == 4);
+ assertEquals(CREATION + TEST_THE_UNDO, 4, getRootView().getChildren().size());
+ assertEquals(CREATION + TEST_THE_UNDO, rootSemanticOwnedElementsBeforeCreatingLink, getRootSemanticModel().getOwnedElements().size());
diagramEditor.getDiagramEditDomain().getDiagramCommandStack().redo();
- assertEquals(CREATION + TEST_THE_REDO, createdEdgesCount, ((Diagram) getRootView()).getEdges().size());
+ assertEquals(CREATION + TEST_THE_REDO, createdEdgesCount, calculateDiagramEdgesCount());
assertEquals(CREATION + TEST_THE_REDO, rootSemanticOwnedElements, getRootSemanticModel().getOwnedElements().size());
ConnectionEditPart linkEditPart = (ConnectionEditPart) getDiagramEditPart().getConnections().get(0);
testLinkEditPart(linkEditPart, initialName);
}
/**
+ * calculate diagram edges count
+ */
+ protected int calculateDiagramEdgesCount() {
+ return ((Diagram) getDiagramEditPart().getDiagramView()).getEdges().size();
+ }
+
+ /**
* htis method is used to test the created link editpart
*
* @param linkEditPart
@@ -360,48 +369,52 @@ public abstract class TestLink extends AbstractPapyrusTestCase {
}
public void installEnvironment(IElementType sourceType, IElementType targetType) {
- assertEquals(CREATION + INITIALIZATION_TEST, 0, getDiagramEditPart().getChildren().size());
+ assertEquals(CREATION + INITIALIZATION_TEST, 0, getRootEditPart().getChildren().size());
assertEquals(CREATION + INITIALIZATION_TEST, 0, getRootSemanticModel().getOwnedElements().size());
// create the source
- CreateViewRequest requestcreation = CreateViewRequestFactory.getCreateShapeRequest(sourceType, getDiagramEditPart().getDiagramPreferencesHint());
+ CreateViewRequest requestcreation = CreateViewRequestFactory.getCreateShapeRequest(sourceType, getRootEditPart().getDiagramPreferencesHint());
requestcreation.setLocation(new Point(100, 100));
- Command command = getDiagramEditPart().getCommand(requestcreation);
+ Command command = getRootEditPart().getCommand(requestcreation);
assertNotNull(CREATION + COMMAND_NULL, command);
assertTrue(CREATION + TEST_IF_THE_COMMAND_IS_CREATED, command != UnexecutableCommand.INSTANCE);
- assertTrue("CREATION: " + TEST_IF_THE_COMMAND_CAN_BE_EXECUTED, command.canExecute() == true); //$NON-NLS-1$
+ assertTrue("CREATION: " + TEST_IF_THE_COMMAND_CAN_BE_EXECUTED, command.canExecute()); //$NON-NLS-1$
diagramEditor.getDiagramEditDomain().getDiagramCommandStack().execute(command);
// create the source player to test reconnect
- requestcreation = CreateViewRequestFactory.getCreateShapeRequest(sourceType, getDiagramEditPart().getDiagramPreferencesHint());
+ requestcreation = CreateViewRequestFactory.getCreateShapeRequest(sourceType, getRootEditPart().getDiagramPreferencesHint());
requestcreation.setLocation(new Point(100, 300));
- command = getDiagramEditPart().getCommand(requestcreation);
+ command = getRootEditPart().getCommand(requestcreation);
assertNotNull(CREATION + COMMAND_NULL, command);
assertTrue(CREATION + TEST_IF_THE_COMMAND_IS_CREATED, command != UnexecutableCommand.INSTANCE);
- assertTrue("CREATION: " + TEST_IF_THE_COMMAND_CAN_BE_EXECUTED, command.canExecute() == true); //$NON-NLS-1$
+ assertTrue("CREATION: " + TEST_IF_THE_COMMAND_CAN_BE_EXECUTED, command.canExecute()); //$NON-NLS-1$
diagramEditor.getDiagramEditDomain().getDiagramCommandStack().execute(command);
// create the target
- requestcreation = CreateViewRequestFactory.getCreateShapeRequest(targetType, getDiagramEditPart().getDiagramPreferencesHint());
+ requestcreation = CreateViewRequestFactory.getCreateShapeRequest(targetType, getRootEditPart().getDiagramPreferencesHint());
requestcreation.setLocation(new Point(300, 100));
- command = getDiagramEditPart().getCommand(requestcreation);
+ command = getRootEditPart().getCommand(requestcreation);
assertNotNull(CREATION + COMMAND_NULL, command);
assertTrue(CREATION + TEST_IF_THE_COMMAND_IS_CREATED, command != UnexecutableCommand.INSTANCE);
- assertTrue("CREATION: " + TEST_IF_THE_COMMAND_CAN_BE_EXECUTED, command.canExecute() == true); //$NON-NLS-1$
+ assertTrue("CREATION: " + TEST_IF_THE_COMMAND_CAN_BE_EXECUTED, command.canExecute()); //$NON-NLS-1$
diagramEditor.getDiagramEditDomain().getDiagramCommandStack().execute(command);
// create the target player to test reconnect
- requestcreation = CreateViewRequestFactory.getCreateShapeRequest(targetType, getDiagramEditPart().getDiagramPreferencesHint());
+ requestcreation = CreateViewRequestFactory.getCreateShapeRequest(targetType, getRootEditPart().getDiagramPreferencesHint());
requestcreation.setLocation(new Point(300, 300));
- command = getDiagramEditPart().getCommand(requestcreation);
+ command = getRootEditPart().getCommand(requestcreation);
assertNotNull(CREATION + COMMAND_NULL, command);
assertTrue(CREATION + TEST_IF_THE_COMMAND_IS_CREATED, command != UnexecutableCommand.INSTANCE);
- assertTrue("CREATION: " + TEST_IF_THE_COMMAND_CAN_BE_EXECUTED, command.canExecute() == true); //$NON-NLS-1$
+ assertTrue("CREATION: " + TEST_IF_THE_COMMAND_CAN_BE_EXECUTED, command.canExecute()); //$NON-NLS-1$
diagramEditor.getDiagramEditDomain().getDiagramCommandStack().execute(command);
- source = (GraphicalEditPart) getDiagramEditPart().getChildren().get(0);
- sourcePlayer = (GraphicalEditPart) getDiagramEditPart().getChildren().get(1);
- target = (GraphicalEditPart) getDiagramEditPart().getChildren().get(2);
- targetPlayer = (GraphicalEditPart) getDiagramEditPart().getChildren().get(3);
+ source = (GraphicalEditPart) getRootEditPart().getChildren().get(0);
+ sourcePlayer = (GraphicalEditPart) getRootEditPart().getChildren().get(1);
+ target = (GraphicalEditPart) getRootEditPart().getChildren().get(2);
+ targetPlayer = (GraphicalEditPart) getRootEditPart().getChildren().get(3);
performAdditionalEnvironmentConfiguration(sourceType, targetType);
}
+ protected IGraphicalEditPart getRootEditPart() {
+ return getDiagramEditPart();
+ }
+
public CreateConnectionViewRequest createConnectionViewRequest(IElementType type, EditPart source, EditPart target) {
CreateConnectionViewRequest connectionRequest = CreateViewRequestFactory.getCreateConnectionRequest(type, ((IGraphicalEditPart) getDiagramEditPart()).getDiagramPreferencesHint());
connectionRequest.setSourceEditPart(null);
@@ -617,12 +630,12 @@ public abstract class TestLink extends AbstractPapyrusTestCase {
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface SourceConfigurator {
- Class<? extends FixtureEditPartConfigurator>value();
+ Class<? extends FixtureEditPartConfigurator> value();
}
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface TargetConfigurator {
- Class<? extends FixtureEditPartConfigurator>value();
+ Class<? extends FixtureEditPartConfigurator> value();
}
}

Back to the top