blob: 7e96c8dfc2337a8a51f78769d3be7a4818edd898 [file] [log] [blame]
/*********************************************************************
* Copyright (c) 2005, 2019 SAP SE
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* Contributors:
* SAP SE - initial API, implementation and documentation
*
* SPDX-License-Identifier: EPL-2.0
**********************************************************************/
package org.eclipse.graphiti.testtool.ecore;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
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.IDirectEditingFeature;
import org.eclipse.graphiti.features.ILayoutFeature;
import org.eclipse.graphiti.features.IMoveShapeFeature;
import org.eclipse.graphiti.features.IResizeShapeFeature;
import org.eclipse.graphiti.features.IUpdateFeature;
import org.eclipse.graphiti.features.context.IAddContext;
import org.eclipse.graphiti.features.context.ICustomContext;
import org.eclipse.graphiti.features.context.IDirectEditingContext;
import org.eclipse.graphiti.features.context.ILayoutContext;
import org.eclipse.graphiti.features.context.IMoveShapeContext;
import org.eclipse.graphiti.features.context.IResizeShapeContext;
import org.eclipse.graphiti.features.context.IUpdateContext;
import org.eclipse.graphiti.features.custom.ICustomFeature;
import org.eclipse.graphiti.mm.pictograms.ContainerShape;
import org.eclipse.graphiti.mm.pictograms.PictogramElement;
import org.eclipse.graphiti.mm.pictograms.Shape;
import org.eclipse.graphiti.testtool.ecore.features.association.TestAddAssociationFeature;
import org.eclipse.graphiti.testtool.ecore.features.association.TestCreateAssociationFeature;
import org.eclipse.graphiti.testtool.ecore.features.clazz.TestAddClassFeature;
import org.eclipse.graphiti.testtool.ecore.features.clazz.TestCreateClassFeature;
import org.eclipse.graphiti.testtool.ecore.features.clazz.TestDirectEditingClassFeature;
import org.eclipse.graphiti.testtool.ecore.features.clazz.TestLayoutClassFeature;
import org.eclipse.graphiti.testtool.ecore.features.clazz.TestMoveClassFeature;
import org.eclipse.graphiti.testtool.ecore.features.clazz.TestResizeClassFeature;
import org.eclipse.graphiti.testtool.ecore.features.clazz.TestUpdateClassFeature;
import org.eclipse.graphiti.testtool.ecore.features.pack.RenamePackageFeature;
import org.eclipse.graphiti.testtool.ecore.features.pack.TestAddPackageFeature;
import org.eclipse.graphiti.testtool.ecore.features.pack.TestCreatePackageFeature;
import org.eclipse.graphiti.testtool.ecore.features.pack.TestLayoutPackageFeature;
import org.eclipse.graphiti.testtool.ecore.features.pack.TestMovePackageFeature;
import org.eclipse.graphiti.testtool.ecore.features.pack.TestResizePackageFeature;
import org.eclipse.graphiti.testtool.ecore.features.pack.TestUpdatePackageFeature;
import org.eclipse.graphiti.ui.features.DefaultFeatureProvider;
/**
* The Class TestFeatureProvider.
*/
public class TestFeatureProvider extends DefaultFeatureProvider {
/**
* Instantiates a new test feature provider.
*
* @param dtp
* the dtp
*/
public TestFeatureProvider(IDiagramTypeProvider dtp) {
super(dtp);
}
@Override
public IAddFeature getAddFeature(IAddContext context) {
if (context.getNewObject() instanceof EPackage) {
return new TestAddPackageFeature(this);
} else if (context.getNewObject() instanceof EClass) {
return new TestAddClassFeature(this);
} else if (context.getNewObject() instanceof EReference) {
return new TestAddAssociationFeature(this);
}
return super.getAddFeature(context);
}
@Override
public ICreateFeature[] getCreateFeatures() {
return new ICreateFeature[] { new TestCreatePackageFeature(this), new TestCreateClassFeature(this) };
}
@Override
public IUpdateFeature getUpdateFeature(IUpdateContext context) {
PictogramElement pictogramElement = context.getPictogramElement();
if (pictogramElement instanceof ContainerShape) {
Object bo = getBusinessObjectForPictogramElement(pictogramElement);
if (bo instanceof EPackage) {
return new TestUpdatePackageFeature(this);
} else if (bo instanceof EClass) {
return new TestUpdateClassFeature(this);
}
}
return super.getUpdateFeature(context);
}
@Override
public IMoveShapeFeature getMoveShapeFeature(IMoveShapeContext context) {
Shape shape = context.getShape();
Object bo = getBusinessObjectForPictogramElement(shape);
if (bo instanceof EPackage) {
return new TestMovePackageFeature(this);
} else if (bo instanceof EClass) {
return new TestMoveClassFeature(this);
}
return super.getMoveShapeFeature(context);
}
@Override
public IResizeShapeFeature getResizeShapeFeature(IResizeShapeContext context) {
Shape shape = context.getShape();
Object bo = getBusinessObjectForPictogramElement(shape);
if (bo instanceof EPackage) {
return new TestResizePackageFeature(this);
} else if (bo instanceof EClass) {
return new TestResizeClassFeature(this);
}
return super.getResizeShapeFeature(context);
}
@Override
public ILayoutFeature getLayoutFeature(ILayoutContext context) {
PictogramElement pictogramElement = context.getPictogramElement();
Object bo = getBusinessObjectForPictogramElement(pictogramElement);
if (bo instanceof EPackage) {
return new TestLayoutPackageFeature(this);
} else if (bo instanceof EClass) {
return new TestLayoutClassFeature(this);
}
return super.getLayoutFeature(context);
}
@Override
public ICustomFeature[] getCustomFeatures(ICustomContext context) {
return new ICustomFeature[] { new RenamePackageFeature(this) };
}
@Override
public ICreateConnectionFeature[] getCreateConnectionFeatures() {
return new ICreateConnectionFeature[] { new TestCreateAssociationFeature(this) };
}
@Override
public IDirectEditingFeature getDirectEditingFeature(IDirectEditingContext context) {
PictogramElement pe = context.getPictogramElement();
Object bo = getBusinessObjectForPictogramElement(pe);
if (bo instanceof EClass) {
return new TestDirectEditingClassFeature(this);
}
return super.getDirectEditingFeature(context);
}
}