package org.eclipselabs.spray.runtime.graphiti.containers;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.graphiti.features.IFeatureProvider;
import org.eclipse.graphiti.features.IRemoveFeature;
import org.eclipse.graphiti.features.context.IDeleteContext;
import org.eclipse.graphiti.features.context.IRemoveContext;
import org.eclipse.graphiti.features.context.impl.LayoutContext;
import org.eclipse.graphiti.features.context.impl.RemoveContext;
import org.eclipse.graphiti.mm.pictograms.PictogramElement;
import org.eclipse.graphiti.services.Graphiti;
import org.eclipse.graphiti.ui.features.DefaultDeleteFeature;
public class OwnerPropertyDeleteFeature extends DefaultDeleteFeature {
public OwnerPropertyDeleteFeature(IFeatureProvider fp) {
super(fp);
}
public void delete(IDeleteContext context) {
PictogramElement pe = context.getPictogramElement();
Object[] businessObjectsForPictogramElement = getAllBusinessObjectsForPictogramElement(pe);
if (businessObjectsForPictogramElement != null && businessObjectsForPictogramElement.length > 0) {
if (!getUserDecision()) {
return;
}
}
Object o = getBusinessObjectForPictogramElement(pe);
EObject prop = (EObject) o;
EObject owner = prop.eContainer();
// BusinessClass cls = (BusinessClass)prop.getOwningType();
List<PictogramElement> picts = Graphiti.getLinkService().getPictogramElements(getDiagram(), owner);
preDelete(context);
IRemoveContext rc = new RemoveContext(pe);
IFeatureProvider featureProvider = getFeatureProvider();
IRemoveFeature removeFeature = featureProvider.getRemoveFeature(rc);
if (removeFeature != null) {
removeFeature.remove(rc);
}
deleteBusinessObjects(businessObjectsForPictogramElement);
for (PictogramElement pictogramElement : picts) {
LayoutContext layoutCcontext = new LayoutContext(pictogramElement);
getFeatureProvider().layoutIfPossible(layoutCcontext);
}
postDelete(context);
}
}