diff options
author | ashatilov | 2015-11-11 21:35:22 +0000 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org | 2015-11-26 09:57:10 +0000 |
commit | 77aafffb1f48e871432ef038a42e4fc73f14d8a0 (patch) | |
tree | 5b0fa0e8c3b8f634738286fd3057d0e1cfb476f6 | |
parent | a2d85bf08432e63c1ecfc8a1f784c58020a8fd41 (diff) | |
download | org.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>
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(); } } |