package org.eclipse.xtext.example.fowlerdsl.diagram.features.add;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.graphiti.features.IFeatureProvider;
import org.eclipse.graphiti.features.impl.AbstractAddShapeFeature;
import org.eclipse.graphiti.mm.pictograms.ContainerShape;
import org.eclipse.graphiti.mm.pictograms.Diagram;
import org.eclipse.graphiti.mm.pictograms.Shape;
import org.eclipse.graphiti.services.Graphiti;
import org.eclipse.graphiti.services.IPeCreateService;
public abstract class AbstractFowlerDslAddFeature extends
AbstractAddShapeFeature {
public AbstractFowlerDslAddFeature(IFeatureProvider fp) {
super(fp);
}
protected ContainerShape createContainerShape(final Diagram targetDiagram) {
final IPeCreateService peCreateService = Graphiti.getPeCreateService();
return peCreateService.createContainerShape(targetDiagram, true);
}
protected void link(EObject eObject, Shape... shapes) {
if (eObject.eResource() == null) {
getDiagram().eResource().getContents().add(eObject);
}
for (Shape shape : shapes) {
link(shape, eObject);
}
}
}