package org.activiti.designer.features; import org.activiti.bpmn.model.ErrorEventDefinition; import org.activiti.bpmn.model.EventSubProcess; import org.activiti.bpmn.model.StartEvent; import org.activiti.designer.PluginImage; import org.eclipse.graphiti.features.IFeatureProvider; import org.eclipse.graphiti.features.context.ICreateContext; public class CreateErrorStartEventFeature extends AbstractCreateBPMNFeature { public static final String FEATURE_ID_KEY = "errorstartevent"; public CreateErrorStartEventFeature(IFeatureProvider fp) { // set name and description of the creation feature super(fp, "ErrorStartEvent", "Add error start event"); } public boolean canCreate(ICreateContext context) { Object parentObject = getBusinessObjectForPictogramElement(context.getTargetContainer()); return (parentObject instanceof EventSubProcess); } public Object[] create(ICreateContext context) { StartEvent startEvent = new StartEvent(); ErrorEventDefinition errorEvent = new ErrorEventDefinition(); startEvent.getEventDefinitions().add(errorEvent); addObjectToContainer(context, startEvent, "Error start"); // return newly created business object(s) return new Object[] { startEvent }; } @Override public String getCreateImageId() { return PluginImage.IMG_BOUNDARY_ERROR.getImageKey(); } @Override protected String getFeatureIdKey() { return FEATURE_ID_KEY; } }