package org.activiti.designer.features; import org.activiti.designer.ActivitiImageProvider; import org.activiti.designer.util.features.AbstractCreateBPMNFeature; import org.eclipse.bpmn2.Bpmn2Factory; import org.eclipse.bpmn2.SubProcess; import org.eclipse.graphiti.features.IFeatureProvider; import org.eclipse.graphiti.features.context.ICreateContext; import org.eclipse.graphiti.mm.pictograms.Diagram; public class CreateEmbeddedSubProcessFeature extends AbstractCreateBPMNFeature { public static final String FEATURE_ID_KEY = "subprocess"; public CreateEmbeddedSubProcessFeature(IFeatureProvider fp) { super(fp, "SubProcess", "Add sub process"); } @Override public boolean canCreate(ICreateContext context) { return context.getTargetContainer() instanceof Diagram; } @Override public Object[] create(ICreateContext context) { SubProcess newSubProcess = Bpmn2Factory.eINSTANCE.createSubProcess(); newSubProcess.setId(getNextId()); newSubProcess.setName("Sub Process"); getDiagram().eResource().getContents().add(newSubProcess); // do the add addGraphicalRepresentation(context, newSubProcess); // return newly created business object(s) return new Object[] { newSubProcess }; } @Override public String getCreateImageId() { return ActivitiImageProvider.IMG_SUBPROCESS_COLLAPSED; } @Override protected String getFeatureIdKey() { return FEATURE_ID_KEY; } @SuppressWarnings("rawtypes") @Override protected Class getFeatureClass() { return Bpmn2Factory.eINSTANCE.createSubProcess().getClass(); } }