diff options
Diffstat (limited to 'plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-sysml/org/eclipse/papyrus/sysml/diagram/common/edit/policy/BlockCompositeSemanticEditPolicy.java')
-rw-r--r-- | plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-sysml/org/eclipse/papyrus/sysml/diagram/common/edit/policy/BlockCompositeSemanticEditPolicy.java | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-sysml/org/eclipse/papyrus/sysml/diagram/common/edit/policy/BlockCompositeSemanticEditPolicy.java b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-sysml/org/eclipse/papyrus/sysml/diagram/common/edit/policy/BlockCompositeSemanticEditPolicy.java index 3574d5bf156..811efd555bb 100644 --- a/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-sysml/org/eclipse/papyrus/sysml/diagram/common/edit/policy/BlockCompositeSemanticEditPolicy.java +++ b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-sysml/org/eclipse/papyrus/sysml/diagram/common/edit/policy/BlockCompositeSemanticEditPolicy.java @@ -13,10 +13,16 @@ *****************************************************************************/ package org.eclipse.papyrus.sysml.diagram.common.edit.policy; +import java.util.Arrays; +import java.util.List; + import org.eclipse.gef.commands.Command; +import org.eclipse.gmf.runtime.emf.type.core.IElementType; import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; import org.eclipse.papyrus.gmf.diagram.common.edit.policy.CompartmentSemanticEditPolicy; +import org.eclipse.papyrus.infra.extendedtypes.types.IExtendedHintedElementType; import org.eclipse.papyrus.infra.services.edit.commands.IConfigureCommandFactory; +import org.eclipse.papyrus.sysml.blocks.Block; import org.eclipse.papyrus.sysml.diagram.common.commands.CreateFlowPortWithFlowSpecificationConfigureCommandFactory; import org.eclipse.papyrus.sysml.service.types.element.SysMLElementTypes; @@ -31,7 +37,17 @@ public class BlockCompositeSemanticEditPolicy extends CompartmentSemanticEditPol @Override protected Command getCreateCommand(CreateElementRequest req) { - if(SysMLElementTypes.FLOW_PORT_NA == req.getElementType()) { + IElementType elementTypeToCreate = req.getElementType(); + IElementType baseType = elementTypeToCreate; + //if extended type, retrieve the sysml closest element element type + if(elementTypeToCreate instanceof IExtendedHintedElementType) { + List<IElementType> superTypes = Arrays.asList(elementTypeToCreate.getAllSuperTypes()); + if(superTypes.contains(SysMLElementTypes.FLOW_PORT_NA)) { + baseType = SysMLElementTypes.FLOW_PORT_NA; + } + } + + if(SysMLElementTypes.FLOW_PORT_NA == baseType) { req.setParameter(IConfigureCommandFactory.CONFIGURE_COMMAND_FACTORY_ID, new CreateFlowPortWithFlowSpecificationConfigureCommandFactory()); } |