package net.certware.sacm.graphiti.feature;
import java.util.List;
import net.certware.sacm.SACM.Evidence.EvidenceContainer;
import net.certware.sacm.SACM.Evidence.EvidenceFactory;
import net.certware.sacm.SACM.Evidence.Object;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.graphiti.features.IFeatureProvider;
import org.eclipse.graphiti.features.context.ICreateContext;
import org.eclipse.graphiti.features.impl.AbstractCreateFeature;
import org.eclipse.graphiti.mm.pictograms.ContainerShape;
public class ObjectCreateFeature extends AbstractCreateFeature {
/**
* SACM Object create feature constructor.
* @param fp feature provider
*/
public ObjectCreateFeature(IFeatureProvider fp) {
super(fp, "Object", "Create an object evidence item");
}
public boolean canCreate(ICreateContext context) {
if ( context.getTargetContainer() instanceof ContainerShape ) {
java.lang.Object parent = getBusinessObjectForPictogramElement(context.getTargetContainer());
if ( parent instanceof EvidenceContainer ) {
return true;
}
}
return false;
}
public Object[] create(ICreateContext context) {
List<EObject> containerObjects = context.getTargetContainer().getLink().getBusinessObjects();
if ( containerObjects.isEmpty() || !(containerObjects.get(0) instanceof EvidenceContainer)) {
throw new IllegalStateException("The context does not contain an evidence container.");
}
// create a formal object and add it to the evidence container's items
EvidenceContainer ec = (EvidenceContainer)containerObjects.get(0);
net.certware.sacm.SACM.Evidence.Object object = EvidenceFactory.eINSTANCE.createObject();
ec.getItem().add(object);
addGraphicalRepresentation(context,object);
return new Object[] { object };
}
}