package $packageName$.diagram;
import org.eclipse.graphiti.dt.IDiagramTypeProvider;
import org.eclipse.graphiti.features.IAddFeature;
import org.eclipse.graphiti.features.ICreateConnectionFeature;
import org.eclipse.graphiti.features.ICreateFeature;
import org.eclipse.graphiti.features.ILayoutFeature;
import org.eclipse.graphiti.features.context.IAddConnectionContext;
import org.eclipse.graphiti.features.context.IAddContext;
import org.eclipse.graphiti.features.context.ILayoutContext;
import org.eclipse.graphiti.mm.pictograms.ContainerShape;
import org.eclipse.graphiti.ui.features.DefaultFeatureProvider;
import $packageName$.features.Add$connectionDomainObjectClassNameShort$ConnectionFeature;
import $packageName$.features.Add$shapeDomainObjectClassNameShort$Feature;
import $packageName$.features.Create$connectionDomainObjectClassNameShort$ConnectionFeature;
import $packageName$.features.Create$shapeDomainObjectClassNameShort$Feature;
import $packageName$.features.Layout$shapeDomainObjectClassNameShort$Feature;
%if useShapeDomainObject
import $shapeDomainObjectClassName$;
%endif
%if useConnectionDomainObject
import $connectionDomainObjectClassName$;
%endif
public class $featureProviderClassName$ extends DefaultFeatureProvider {
public $featureProviderClassName$(IDiagramTypeProvider dtp) {
super(dtp);
}
@Override
public ICreateFeature[] getCreateFeatures() {
return new ICreateFeature[] {new Create$shapeDomainObjectClassNameShort$Feature(this)};
}
@Override
public ICreateConnectionFeature[] getCreateConnectionFeatures() {
return new ICreateConnectionFeature[] {new Create$connectionDomainObjectClassNameShort$ConnectionFeature(this)};
}
@Override
public IAddFeature getAddFeature(IAddContext context) {
// TODO: check for right domain object instances below
if (context instanceof IAddConnectionContext /* && context.getNewObject() instanceof <DomainObject> */) {
return new Add$connectionDomainObjectClassNameShort$ConnectionFeature(this);
} else if (context instanceof IAddContext /* && context.getNewObject() instanceof <DomainObject> */) {
return new Add$shapeDomainObjectClassNameShort$Feature(this);
}
return super.getAddFeature(context);
}
@Override
public ILayoutFeature getLayoutFeature(ILayoutContext context) {
// TODO: check for right domain object instances below
if (context.getPictogramElement() instanceof ContainerShape /* && getBusinessObjectForPictogramElement(context.getPictogramElement()) instanceof <DomainObject> */) {
return new Layout$shapeDomainObjectClassNameShort$Feature(this);
}
return super.getLayoutFeature(context);
}
}