Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'tests/junit/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.parametric.tests/src/org/eclipse/papyrus/sysml/diagram/parametric/tests/utils/TestPrepareUtils.java')
-rw-r--r--tests/junit/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.parametric.tests/src/org/eclipse/papyrus/sysml/diagram/parametric/tests/utils/TestPrepareUtils.java601
1 files changed, 306 insertions, 295 deletions
diff --git a/tests/junit/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.parametric.tests/src/org/eclipse/papyrus/sysml/diagram/parametric/tests/utils/TestPrepareUtils.java b/tests/junit/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.parametric.tests/src/org/eclipse/papyrus/sysml/diagram/parametric/tests/utils/TestPrepareUtils.java
index a265334f7e2..8e941c84652 100644
--- a/tests/junit/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.parametric.tests/src/org/eclipse/papyrus/sysml/diagram/parametric/tests/utils/TestPrepareUtils.java
+++ b/tests/junit/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.parametric.tests/src/org/eclipse/papyrus/sysml/diagram/parametric/tests/utils/TestPrepareUtils.java
@@ -1,295 +1,306 @@
-/*****************************************************************************
- * Copyright (c) 2012 CEA LIST.
- *
- * 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.sysml.diagram.parametric.tests.utils;
-
-import static org.eclipse.papyrus.sysml.diagram.parametric.tests.utils.EditorUtils.getEditPart;
-import static org.eclipse.papyrus.sysml.diagram.parametric.tests.utils.EditorUtils.getTransactionalEditingDomain;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.edit.command.SetCommand;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.commands.Command;
-import org.eclipse.gmf.runtime.common.core.command.CommandResult;
-import org.eclipse.gmf.runtime.common.core.command.ICommand;
-import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
-import org.eclipse.gmf.runtime.diagram.ui.commands.CreateCommand;
-import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;
-import org.eclipse.gmf.runtime.diagram.ui.requests.CreateConnectionViewRequest;
-import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest.ViewDescriptor;
-import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequestFactory;
-import org.eclipse.gmf.runtime.diagram.ui.requests.DropObjectsRequest;
-import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;
-import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;
-import org.eclipse.gmf.runtime.emf.core.util.EMFCoreUtil;
-import org.eclipse.gmf.runtime.emf.type.core.IElementType;
-import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;
-import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
-import org.eclipse.gmf.runtime.notation.Node;
-import org.eclipse.gmf.runtime.notation.NotationPackage;
-import org.eclipse.gmf.runtime.notation.View;
-import org.eclipse.papyrus.infra.emf.gmf.command.GMFtoEMFCommandWrapper;
-import org.eclipse.papyrus.infra.services.edit.commands.ConfigureFeatureCommandFactory;
-import org.eclipse.papyrus.infra.services.edit.commands.IConfigureCommandFactory;
-import org.eclipse.papyrus.infra.services.edit.service.ElementEditServiceUtils;
-import org.eclipse.papyrus.infra.services.edit.utils.GMFCommandUtils;
-import org.eclipse.papyrus.sysml.blocks.Block;
-import org.eclipse.papyrus.sysml.diagram.parametric.Activator;
-import org.eclipse.papyrus.sysml.service.types.element.SysMLElementTypes;
-import org.eclipse.papyrus.uml.diagram.common.commands.SemanticAdapter;
-import org.eclipse.papyrus.uml.service.types.element.UMLElementTypes;
-import org.eclipse.uml2.uml.ConnectableElement;
-import org.eclipse.uml2.uml.Connector;
-import org.eclipse.uml2.uml.ConnectorEnd;
-import org.eclipse.uml2.uml.Element;
-import org.eclipse.uml2.uml.EncapsulatedClassifier;
-import org.eclipse.uml2.uml.Property;
-import org.eclipse.uml2.uml.UMLPackage;
-import org.eclipse.uml2.uml.util.UMLUtil;
-import org.junit.Assert;
-
-
-public class TestPrepareUtils {
-
- public static void changeVisibility(View view) throws Exception {
- SetCommand changeVisibilityCommand = new SetCommand(getTransactionalEditingDomain(), view, NotationPackage.eINSTANCE.getView_Visible(), !view.isVisible());
- getTransactionalEditingDomain().getCommandStack().execute(changeVisibilityCommand);
- }
-
- public static EObject createElement(IElementType elementType, View containerView) throws Exception {
- return createElement(elementType, containerView.getElement());
- }
-
- @SuppressWarnings("unchecked")
- public static EObject createElement(IElementType elementType, EObject container) throws Exception {
- CreateElementRequest createElementRequest = new CreateElementRequest(getTransactionalEditingDomain(), container, elementType);
-
- EObject typeOwner = EMFCoreUtil.getContainer(container, UMLPackage.eINSTANCE.getPackage());
-
- if(elementType == SysMLElementTypes.CONSTRAINT_PROPERTY) {
- // Create type
- CreateElementRequest createTypeRequest = new CreateElementRequest(getTransactionalEditingDomain(), typeOwner, SysMLElementTypes.CONSTRAINT_BLOCK);
- ICommand createTypeCommand = ElementEditServiceUtils.getCommandProvider(typeOwner).getEditCommand(createTypeRequest);
- getTransactionalEditingDomain().getCommandStack().execute(new GMFtoEMFCommandWrapper(createTypeCommand));
-
- // If container is a Property, substitute container by the Property type
- if(container instanceof Property) {
- container = ((Property)container).getType();
- createElementRequest.setContainer(container);
- }
- createElementRequest.getParameters().put(IConfigureCommandFactory.CONFIGURE_COMMAND_FACTORY_ID, new ConfigureFeatureCommandFactory(UMLPackage.eINSTANCE.getTypedElement_Type(), GMFCommandUtils.getCommandEObjectResult(createTypeCommand)));
-
- } else if(elementType == SysMLElementTypes.PART_PROPERTY) {
- // Create type
- CreateElementRequest createTypeRequest = new CreateElementRequest(getTransactionalEditingDomain(), typeOwner, SysMLElementTypes.BLOCK);
- ICommand createTypeCommand = ElementEditServiceUtils.getCommandProvider(typeOwner).getEditCommand(createTypeRequest);
- getTransactionalEditingDomain().getCommandStack().execute(new GMFtoEMFCommandWrapper(createTypeCommand));
-
- // If container is a Property, substitute container by the Property type
- if(container instanceof Property) {
- container = ((Property)container).getType();
- createElementRequest.setContainer(container);
- }
- createElementRequest.getParameters().put(IConfigureCommandFactory.CONFIGURE_COMMAND_FACTORY_ID, new ConfigureFeatureCommandFactory(UMLPackage.eINSTANCE.getTypedElement_Type(), GMFCommandUtils.getCommandEObjectResult(createTypeCommand)));
-
- } else if(elementType == SysMLElementTypes.REFERENCE_PROPERTY) {
- // Create type
- CreateElementRequest createTypeRequest = new CreateElementRequest(getTransactionalEditingDomain(), typeOwner, SysMLElementTypes.BLOCK);
- ICommand createTypeCommand = ElementEditServiceUtils.getCommandProvider(typeOwner).getEditCommand(createTypeRequest);
- getTransactionalEditingDomain().getCommandStack().execute(new GMFtoEMFCommandWrapper(createTypeCommand));
-
- // If container is a Property, substitute container by the Property type
- if(container instanceof Property) {
- container = ((Property)container).getType();
- createElementRequest.setContainer(container);
- }
- createElementRequest.getParameters().put(IConfigureCommandFactory.CONFIGURE_COMMAND_FACTORY_ID, new ConfigureFeatureCommandFactory(UMLPackage.eINSTANCE.getTypedElement_Type(), GMFCommandUtils.getCommandEObjectResult(createTypeCommand)));
-
- } else if(elementType == SysMLElementTypes.VALUE_PROPERTY) {
- // Create type
- CreateElementRequest createTypeRequest = new CreateElementRequest(getTransactionalEditingDomain(), typeOwner, UMLElementTypes.DATA_TYPE);
- ICommand createTypeCommand = ElementEditServiceUtils.getCommandProvider(typeOwner).getEditCommand(createTypeRequest);
- getTransactionalEditingDomain().getCommandStack().execute(new GMFtoEMFCommandWrapper(createTypeCommand));
-
- // If container is a Property, substitute container by the Property type
- if(container instanceof Property) {
- container = ((Property)container).getType();
- createElementRequest.setContainer(container);
- }
- createElementRequest.getParameters().put(IConfigureCommandFactory.CONFIGURE_COMMAND_FACTORY_ID, new ConfigureFeatureCommandFactory(UMLPackage.eINSTANCE.getTypedElement_Type(), GMFCommandUtils.getCommandEObjectResult(createTypeCommand)));
-
- } else if(elementType == UMLElementTypes.PROPERTY) {
-
- // If container is a Property, substitute container by the Property type
- if(container instanceof Property) {
- container = ((Property)container).getType();
- createElementRequest.setContainer(container);
- }
- }
-
- ICommand createElementCommand = ElementEditServiceUtils.getCommandProvider(container).getEditCommand(createElementRequest);
- getTransactionalEditingDomain().getCommandStack().execute(new GMFtoEMFCommandWrapper(createElementCommand));
-
- return GMFCommandUtils.getCommandEObjectResult(createElementCommand);
- }
-
- public static void setBlockIsEncapsulated(final Element block, final boolean isEncapsulated) throws Exception {
- AbstractTransactionalCommand setCommand = new AbstractTransactionalCommand(getTransactionalEditingDomain(), "Set Block isEncapsulated", null) {
-
- @Override
- protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
- Block blockApp = UMLUtil.getStereotypeApplication(block, Block.class);
- blockApp.setIsEncapsulated(isEncapsulated);
- return CommandResult.newOKCommandResult(block);
- }
- };
- getTransactionalEditingDomain().getCommandStack().execute(new GMFtoEMFCommandWrapper(setCommand));
- }
-
- public static EObject createLink(IElementType elementType, EObject source, EObject target) throws Exception {
- CreateRelationshipRequest createRelationshipRequest = new CreateRelationshipRequest(getTransactionalEditingDomain(), source, target, elementType);
-
- ICommand createRelationshipCommand = ElementEditServiceUtils.getCommandProvider(elementType).getEditCommand(createRelationshipRequest);
- getTransactionalEditingDomain().getCommandStack().execute(new GMFtoEMFCommandWrapper(createRelationshipCommand));
-
- return GMFCommandUtils.getCommandEObjectResult(createRelationshipCommand);
- }
-
- public static EObject createConnectorLink(final EncapsulatedClassifier container, final ConnectableElement sourceRole, final Property sourcePartWithPort, final ConnectableElement targetRole, final Property targetPartWithPort) throws Exception {
-
- AbstractTransactionalCommand createConnectorCommand = new AbstractTransactionalCommand(getTransactionalEditingDomain(), "Create connector", null) {
-
- @Override
- protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
- Connector connector = container.createOwnedConnector("ConnectorTest");
-
- ConnectorEnd connectorEndSrc = connector.createEnd();
- connectorEndSrc.setRole(sourceRole);
- connectorEndSrc.setPartWithPort(sourcePartWithPort);
-
- ConnectorEnd connectorEndTgt = connector.createEnd();
- connectorEndTgt.setRole(targetRole);
- connectorEndTgt.setPartWithPort(targetPartWithPort);
-
- return CommandResult.newOKCommandResult(connector);
- }
-
- };
-
- getTransactionalEditingDomain().getCommandStack().execute(new GMFtoEMFCommandWrapper(createConnectorCommand));
-
- return GMFCommandUtils.getCommandEObjectResult(createConnectorCommand);
- }
-
- public static View createGraphicalNode(IElementType elementType, String graphicalType, View containerView) throws Exception {
- EObject newObject = createElement(elementType, containerView);
-
- // Add view
- ViewDescriptor viewDescriptor = new ViewDescriptor(new SemanticAdapter(newObject, null), Node.class, graphicalType, ViewUtil.APPEND, true, Activator.DIAGRAM_PREFERENCES_HINT);
- CreateCommand createViewCommand = new CreateCommand(getTransactionalEditingDomain(), viewDescriptor, containerView);
- Assert.assertTrue("Command should be executable", createViewCommand.canExecute());
- EditorUtils.getDiagramCommandStack().execute(new ICommandProxy(createViewCommand));
-
- EReference[] erefs = new EReference[]{ NotationPackage.eINSTANCE.getView_Element() };
- @SuppressWarnings("unchecked")
- Collection<View> views = EMFCoreUtil.getReferencers(newObject, erefs);
-
- return (View)views.toArray()[0];
- }
-
- public static View createGraphicalNode(IElementType elementType, EObject semanticContainer, String graphicalType, View containerView) throws Exception {
-
- EObject newObject = createElement(elementType, semanticContainer);
-
- // Add view
- ViewDescriptor viewDescriptor = new ViewDescriptor(new SemanticAdapter(newObject, null), Node.class, graphicalType, ViewUtil.APPEND, true, Activator.DIAGRAM_PREFERENCES_HINT);
- CreateCommand createViewCommand = new CreateCommand(getTransactionalEditingDomain(), viewDescriptor, containerView);
- EditorUtils.getDiagramCommandStack().execute(new ICommandProxy(createViewCommand));
-
- EReference[] erefs = new EReference[]{ NotationPackage.eINSTANCE.getView_Element() };
- @SuppressWarnings("unchecked")
- Collection<View> views = EMFCoreUtil.getReferencers(newObject, erefs);
-
- return (View)views.toArray()[0];
- }
-
- public static View createGraphicalLink(IElementType elementType, String graphicalType, View containerView, EditPart sourceEP, EditPart targetEP) throws Exception {
- CreateConnectionViewRequest request = createConnectionRequest(elementType, sourceEP, targetEP);
-
- Command command = targetEP.getCommand(request);
- Assert.assertNotNull("Command to create graphical link should not be null", command);
- Assert.assertTrue("Command should be executable", command.canExecute());
-
- EditorUtils.getDiagramCommandStack().execute(command);
-
- IAdaptable viewAdapter = (IAdaptable)request.getNewObject();
- View newView = (View)viewAdapter.getAdapter(View.class);
- Assert.assertNotNull("View should not be null", newView);
-
- return newView;
- }
-
- public static CreateConnectionViewRequest createConnectionRequest(IElementType type, EditPart source, EditPart target) {
- CreateConnectionViewRequest connectionRequest = CreateViewRequestFactory.getCreateConnectionRequest(type, Activator.DIAGRAM_PREFERENCES_HINT);
-
- connectionRequest.setSourceEditPart(null);
- connectionRequest.setTargetEditPart(source);
- connectionRequest.setType(RequestConstants.REQ_CONNECTION_START);
- source.getCommand(connectionRequest);
-
- // Now, setup the request in preparation to get the
- // connection end
- // command.
- connectionRequest.setSourceEditPart(source);
- connectionRequest.setTargetEditPart(target);
- connectionRequest.setType(RequestConstants.REQ_CONNECTION_END);
- return connectionRequest;
- }
-
-
- public static View dropFromModelExplorer(IElementType elementType, View containerView) throws Exception {
- EObject newObject = createElement(elementType, containerView);
- return dropFromModelExplorer(newObject, containerView);
- }
-
- public static View dropFromModelExplorer(EObject eObject, View containerView) throws Exception {
-
- // Find container EditPart (for command creation)
- EditPart containerEditPart = getEditPart(containerView);
-
- // Prepare drop request
- DropObjectsRequest dropRequest = new DropObjectsRequest();
- ArrayList<EObject> list = new ArrayList<EObject>();
- list.add(eObject);
- dropRequest.setObjects(list);
- dropRequest.setLocation(new Point(20, 20));
-
- // Get drop command
- Command command = containerEditPart.getCommand(dropRequest);
- EditorUtils.getDiagramCommandStack().execute(command);
-
- EReference[] erefs = new EReference[]{ NotationPackage.eINSTANCE.getView_Element() };
- @SuppressWarnings("unchecked")
- Collection<View> views = EMFCoreUtil.getReferencers(eObject, erefs);
-
- return (View)views.toArray()[0];
- }
-}
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ * 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.sysml.diagram.parametric.tests.utils;
+
+import static org.eclipse.papyrus.sysml.diagram.parametric.tests.utils.EditorUtils.getEditPart;
+import static org.eclipse.papyrus.sysml.diagram.parametric.tests.utils.EditorUtils.getTransactionalEditingDomain;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.edit.command.SetCommand;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
+import org.eclipse.gmf.runtime.diagram.ui.commands.CreateCommand;
+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;
+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateConnectionViewRequest;
+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest.ViewDescriptor;
+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequestFactory;
+import org.eclipse.gmf.runtime.diagram.ui.requests.DropObjectsRequest;
+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;
+import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;
+import org.eclipse.gmf.runtime.emf.core.util.EMFCoreUtil;
+import org.eclipse.gmf.runtime.emf.type.core.IClientContext;
+import org.eclipse.gmf.runtime.emf.type.core.IElementType;
+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
+import org.eclipse.gmf.runtime.notation.Node;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.emf.gmf.command.GMFtoEMFCommandWrapper;
+import org.eclipse.papyrus.infra.services.edit.commands.ConfigureFeatureCommandFactory;
+import org.eclipse.papyrus.infra.services.edit.commands.IConfigureCommandFactory;
+import org.eclipse.papyrus.infra.services.edit.context.TypeContext;
+import org.eclipse.papyrus.infra.services.edit.service.ElementEditServiceUtils;
+import org.eclipse.papyrus.infra.services.edit.utils.GMFCommandUtils;
+import org.eclipse.papyrus.sysml.blocks.Block;
+import org.eclipse.papyrus.sysml.diagram.parametric.Activator;
+import org.eclipse.papyrus.sysml.service.types.element.SysMLElementTypes;
+import org.eclipse.papyrus.uml.diagram.common.commands.SemanticAdapter;
+import org.eclipse.papyrus.uml.service.types.element.UMLElementTypes;
+import org.eclipse.uml2.uml.ConnectableElement;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.EncapsulatedClassifier;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.util.UMLUtil;
+import org.junit.Assert;
+
+
+public class TestPrepareUtils {
+
+ public static void changeVisibility(View view) throws Exception {
+ SetCommand changeVisibilityCommand = new SetCommand(getTransactionalEditingDomain(), view, NotationPackage.eINSTANCE.getView_Visible(), !view.isVisible());
+ getTransactionalEditingDomain().getCommandStack().execute(changeVisibilityCommand);
+ }
+
+ public static EObject createElement(IElementType elementType, View containerView) throws Exception {
+ return createElement(elementType, containerView.getElement());
+ }
+
+ @SuppressWarnings("unchecked")
+ public static EObject createElement(IElementType elementType, EObject container) throws Exception {
+ CreateElementRequest createElementRequest = new CreateElementRequest(getTransactionalEditingDomain(), container, elementType);
+
+ EObject typeOwner = EMFCoreUtil.getContainer(container, UMLPackage.eINSTANCE.getPackage());
+
+ if(elementType == SysMLElementTypes.CONSTRAINT_PROPERTY) {
+ // Create type
+ CreateElementRequest createTypeRequest = new CreateElementRequest(getTransactionalEditingDomain(), typeOwner, SysMLElementTypes.CONSTRAINT_BLOCK);
+ ICommand createTypeCommand = ElementEditServiceUtils.getCommandProvider(typeOwner).getEditCommand(createTypeRequest);
+ getTransactionalEditingDomain().getCommandStack().execute(new GMFtoEMFCommandWrapper(createTypeCommand));
+
+ // If container is a Property, substitute container by the Property type
+ if(container instanceof Property) {
+ container = ((Property)container).getType();
+ createElementRequest.setContainer(container);
+ }
+ createElementRequest.getParameters().put(IConfigureCommandFactory.CONFIGURE_COMMAND_FACTORY_ID, new ConfigureFeatureCommandFactory(UMLPackage.eINSTANCE.getTypedElement_Type(), GMFCommandUtils.getCommandEObjectResult(createTypeCommand)));
+
+ } else if(elementType == SysMLElementTypes.PART_PROPERTY) {
+ // Create type
+ CreateElementRequest createTypeRequest = new CreateElementRequest(getTransactionalEditingDomain(), typeOwner, SysMLElementTypes.BLOCK);
+ ICommand createTypeCommand = ElementEditServiceUtils.getCommandProvider(typeOwner).getEditCommand(createTypeRequest);
+ getTransactionalEditingDomain().getCommandStack().execute(new GMFtoEMFCommandWrapper(createTypeCommand));
+
+ // If container is a Property, substitute container by the Property type
+ if(container instanceof Property) {
+ container = ((Property)container).getType();
+ createElementRequest.setContainer(container);
+ }
+ createElementRequest.getParameters().put(IConfigureCommandFactory.CONFIGURE_COMMAND_FACTORY_ID, new ConfigureFeatureCommandFactory(UMLPackage.eINSTANCE.getTypedElement_Type(), GMFCommandUtils.getCommandEObjectResult(createTypeCommand)));
+
+ } else if(elementType == SysMLElementTypes.REFERENCE_PROPERTY) {
+ // Create type
+ CreateElementRequest createTypeRequest = new CreateElementRequest(getTransactionalEditingDomain(), typeOwner, SysMLElementTypes.BLOCK);
+ ICommand createTypeCommand = ElementEditServiceUtils.getCommandProvider(typeOwner).getEditCommand(createTypeRequest);
+ getTransactionalEditingDomain().getCommandStack().execute(new GMFtoEMFCommandWrapper(createTypeCommand));
+
+ // If container is a Property, substitute container by the Property type
+ if(container instanceof Property) {
+ container = ((Property)container).getType();
+ createElementRequest.setContainer(container);
+ }
+ createElementRequest.getParameters().put(IConfigureCommandFactory.CONFIGURE_COMMAND_FACTORY_ID, new ConfigureFeatureCommandFactory(UMLPackage.eINSTANCE.getTypedElement_Type(), GMFCommandUtils.getCommandEObjectResult(createTypeCommand)));
+
+ } else if(elementType == SysMLElementTypes.VALUE_PROPERTY) {
+ // Create type
+ CreateElementRequest createTypeRequest = new CreateElementRequest(getTransactionalEditingDomain(), typeOwner, UMLElementTypes.DATA_TYPE);
+ ICommand createTypeCommand = ElementEditServiceUtils.getCommandProvider(typeOwner).getEditCommand(createTypeRequest);
+ getTransactionalEditingDomain().getCommandStack().execute(new GMFtoEMFCommandWrapper(createTypeCommand));
+
+ // If container is a Property, substitute container by the Property type
+ if(container instanceof Property) {
+ container = ((Property)container).getType();
+ createElementRequest.setContainer(container);
+ }
+ createElementRequest.getParameters().put(IConfigureCommandFactory.CONFIGURE_COMMAND_FACTORY_ID, new ConfigureFeatureCommandFactory(UMLPackage.eINSTANCE.getTypedElement_Type(), GMFCommandUtils.getCommandEObjectResult(createTypeCommand)));
+
+ } else if(elementType == UMLElementTypes.PROPERTY) {
+
+ // If container is a Property, substitute container by the Property type
+ if(container instanceof Property) {
+ container = ((Property)container).getType();
+ createElementRequest.setContainer(container);
+ }
+ }
+
+ ICommand createElementCommand = ElementEditServiceUtils.getCommandProvider(container).getEditCommand(createElementRequest);
+ getTransactionalEditingDomain().getCommandStack().execute(new GMFtoEMFCommandWrapper(createElementCommand));
+
+ return GMFCommandUtils.getCommandEObjectResult(createElementCommand);
+ }
+
+ public static void setBlockIsEncapsulated(final Element block, final boolean isEncapsulated) throws Exception {
+ AbstractTransactionalCommand setCommand = new AbstractTransactionalCommand(getTransactionalEditingDomain(), "Set Block isEncapsulated", null) {
+
+ @Override
+ protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+ Block blockApp = UMLUtil.getStereotypeApplication(block, Block.class);
+ blockApp.setIsEncapsulated(isEncapsulated);
+ return CommandResult.newOKCommandResult(block);
+ }
+ };
+ getTransactionalEditingDomain().getCommandStack().execute(new GMFtoEMFCommandWrapper(setCommand));
+ }
+
+ public static EObject createLink(IElementType elementType, EObject source, EObject target) throws Exception {
+ CreateRelationshipRequest createRelationshipRequest = new CreateRelationshipRequest(getTransactionalEditingDomain(), source, target, elementType);
+
+ IClientContext context;
+ try {
+ context = TypeContext.getContext(getTransactionalEditingDomain());
+ } catch (ServiceException e) {
+ Activator.log.error(e);
+ return null;
+ }
+
+ ICommand createRelationshipCommand = ElementEditServiceUtils.getCommandProvider(elementType, context).getEditCommand(createRelationshipRequest);
+ getTransactionalEditingDomain().getCommandStack().execute(new GMFtoEMFCommandWrapper(createRelationshipCommand));
+
+ return GMFCommandUtils.getCommandEObjectResult(createRelationshipCommand);
+ }
+
+ public static EObject createConnectorLink(final EncapsulatedClassifier container, final ConnectableElement sourceRole, final Property sourcePartWithPort, final ConnectableElement targetRole, final Property targetPartWithPort) throws Exception {
+
+ AbstractTransactionalCommand createConnectorCommand = new AbstractTransactionalCommand(getTransactionalEditingDomain(), "Create connector", null) {
+
+ @Override
+ protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+ Connector connector = container.createOwnedConnector("ConnectorTest");
+
+ ConnectorEnd connectorEndSrc = connector.createEnd();
+ connectorEndSrc.setRole(sourceRole);
+ connectorEndSrc.setPartWithPort(sourcePartWithPort);
+
+ ConnectorEnd connectorEndTgt = connector.createEnd();
+ connectorEndTgt.setRole(targetRole);
+ connectorEndTgt.setPartWithPort(targetPartWithPort);
+
+ return CommandResult.newOKCommandResult(connector);
+ }
+
+ };
+
+ getTransactionalEditingDomain().getCommandStack().execute(new GMFtoEMFCommandWrapper(createConnectorCommand));
+
+ return GMFCommandUtils.getCommandEObjectResult(createConnectorCommand);
+ }
+
+ public static View createGraphicalNode(IElementType elementType, String graphicalType, View containerView) throws Exception {
+ EObject newObject = createElement(elementType, containerView);
+
+ // Add view
+ ViewDescriptor viewDescriptor = new ViewDescriptor(new SemanticAdapter(newObject, null), Node.class, graphicalType, ViewUtil.APPEND, true, Activator.DIAGRAM_PREFERENCES_HINT);
+ CreateCommand createViewCommand = new CreateCommand(getTransactionalEditingDomain(), viewDescriptor, containerView);
+ Assert.assertTrue("Command should be executable", createViewCommand.canExecute());
+ EditorUtils.getDiagramCommandStack().execute(new ICommandProxy(createViewCommand));
+
+ EReference[] erefs = new EReference[]{ NotationPackage.eINSTANCE.getView_Element() };
+ @SuppressWarnings("unchecked")
+ Collection<View> views = EMFCoreUtil.getReferencers(newObject, erefs);
+
+ return (View)views.toArray()[0];
+ }
+
+ public static View createGraphicalNode(IElementType elementType, EObject semanticContainer, String graphicalType, View containerView) throws Exception {
+
+ EObject newObject = createElement(elementType, semanticContainer);
+
+ // Add view
+ ViewDescriptor viewDescriptor = new ViewDescriptor(new SemanticAdapter(newObject, null), Node.class, graphicalType, ViewUtil.APPEND, true, Activator.DIAGRAM_PREFERENCES_HINT);
+ CreateCommand createViewCommand = new CreateCommand(getTransactionalEditingDomain(), viewDescriptor, containerView);
+ EditorUtils.getDiagramCommandStack().execute(new ICommandProxy(createViewCommand));
+
+ EReference[] erefs = new EReference[]{ NotationPackage.eINSTANCE.getView_Element() };
+ @SuppressWarnings("unchecked")
+ Collection<View> views = EMFCoreUtil.getReferencers(newObject, erefs);
+
+ return (View)views.toArray()[0];
+ }
+
+ public static View createGraphicalLink(IElementType elementType, String graphicalType, View containerView, EditPart sourceEP, EditPart targetEP) throws Exception {
+ CreateConnectionViewRequest request = createConnectionRequest(elementType, sourceEP, targetEP);
+
+ Command command = targetEP.getCommand(request);
+ Assert.assertNotNull("Command to create graphical link should not be null", command);
+ Assert.assertTrue("Command should be executable", command.canExecute());
+
+ EditorUtils.getDiagramCommandStack().execute(command);
+
+ IAdaptable viewAdapter = (IAdaptable)request.getNewObject();
+ View newView = (View)viewAdapter.getAdapter(View.class);
+ Assert.assertNotNull("View should not be null", newView);
+
+ return newView;
+ }
+
+ public static CreateConnectionViewRequest createConnectionRequest(IElementType type, EditPart source, EditPart target) {
+ CreateConnectionViewRequest connectionRequest = CreateViewRequestFactory.getCreateConnectionRequest(type, Activator.DIAGRAM_PREFERENCES_HINT);
+
+ connectionRequest.setSourceEditPart(null);
+ connectionRequest.setTargetEditPart(source);
+ connectionRequest.setType(RequestConstants.REQ_CONNECTION_START);
+ source.getCommand(connectionRequest);
+
+ // Now, setup the request in preparation to get the
+ // connection end
+ // command.
+ connectionRequest.setSourceEditPart(source);
+ connectionRequest.setTargetEditPart(target);
+ connectionRequest.setType(RequestConstants.REQ_CONNECTION_END);
+ return connectionRequest;
+ }
+
+
+ public static View dropFromModelExplorer(IElementType elementType, View containerView) throws Exception {
+ EObject newObject = createElement(elementType, containerView);
+ return dropFromModelExplorer(newObject, containerView);
+ }
+
+ public static View dropFromModelExplorer(EObject eObject, View containerView) throws Exception {
+
+ // Find container EditPart (for command creation)
+ EditPart containerEditPart = getEditPart(containerView);
+
+ // Prepare drop request
+ DropObjectsRequest dropRequest = new DropObjectsRequest();
+ ArrayList<EObject> list = new ArrayList<EObject>();
+ list.add(eObject);
+ dropRequest.setObjects(list);
+ dropRequest.setLocation(new Point(20, 20));
+
+ // Get drop command
+ Command command = containerEditPart.getCommand(dropRequest);
+ EditorUtils.getDiagramCommandStack().execute(command);
+
+ EReference[] erefs = new EReference[]{ NotationPackage.eINSTANCE.getView_Element() };
+ @SuppressWarnings("unchecked")
+ Collection<View> views = EMFCoreUtil.getReferencers(eObject, erefs);
+
+ return (View)views.toArray()[0];
+ }
+}

Back to the top