blob: 7fcd3199b2df384d2190868a7c456af3d7aacf21 [file] [log] [blame]
/*******************************************************************************
* <copyright>
*
* Copyright (c) 2005, 2013 SAP AG.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* SAP AG - initial API, implementation and documentation
* mwenz - Bug 370888 - API Access to export and print
*
* </copyright>
*
*******************************************************************************/
package org.eclipse.graphiti.ui.features;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.graphiti.dt.IDiagramTypeProvider;
import org.eclipse.graphiti.features.IAddBendpointFeature;
import org.eclipse.graphiti.features.ICopyFeature;
import org.eclipse.graphiti.features.IDeleteFeature;
import org.eclipse.graphiti.features.IMoveAnchorFeature;
import org.eclipse.graphiti.features.IMoveBendpointFeature;
import org.eclipse.graphiti.features.IMoveConnectionDecoratorFeature;
import org.eclipse.graphiti.features.IMoveShapeFeature;
import org.eclipse.graphiti.features.IPasteFeature;
import org.eclipse.graphiti.features.IPrintFeature;
import org.eclipse.graphiti.features.IRemoveBendpointFeature;
import org.eclipse.graphiti.features.IRemoveFeature;
import org.eclipse.graphiti.features.IResizeShapeFeature;
import org.eclipse.graphiti.features.ISaveImageFeature;
import org.eclipse.graphiti.features.IUpdateFeature;
import org.eclipse.graphiti.features.context.IAddBendpointContext;
import org.eclipse.graphiti.features.context.ICopyContext;
import org.eclipse.graphiti.features.context.ICustomContext;
import org.eclipse.graphiti.features.context.IDeleteContext;
import org.eclipse.graphiti.features.context.IMoveAnchorContext;
import org.eclipse.graphiti.features.context.IMoveBendpointContext;
import org.eclipse.graphiti.features.context.IMoveConnectionDecoratorContext;
import org.eclipse.graphiti.features.context.IMoveShapeContext;
import org.eclipse.graphiti.features.context.IPasteContext;
import org.eclipse.graphiti.features.context.IRemoveBendpointContext;
import org.eclipse.graphiti.features.context.IRemoveContext;
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.features.impl.AbstractFeatureProvider;
import org.eclipse.graphiti.features.impl.DefaultAddBendpointFeature;
import org.eclipse.graphiti.features.impl.DefaultMoveAnchorFeature;
import org.eclipse.graphiti.features.impl.DefaultMoveBendpointFeature;
import org.eclipse.graphiti.features.impl.DefaultMoveConnectionDecoratorFeature;
import org.eclipse.graphiti.features.impl.DefaultMoveShapeFeature;
import org.eclipse.graphiti.features.impl.DefaultRemoveBendpointFeature;
import org.eclipse.graphiti.features.impl.DefaultRemoveFeature;
import org.eclipse.graphiti.features.impl.DefaultResizeShapeFeature;
import org.eclipse.graphiti.features.impl.DefaultUpdateDiagramFeature;
import org.eclipse.graphiti.features.impl.UpdateNoBoFeature;
import org.eclipse.graphiti.mm.pictograms.Diagram;
/**
* The Class DefaultFeatureProvider.
*/
public class DefaultFeatureProvider extends AbstractFeatureProvider {
/**
* Creates a new {@link DefaultFeatureProvider}.
*
* @param dtp
* the default feature provider
*/
public DefaultFeatureProvider(IDiagramTypeProvider dtp) {
super(dtp);
}
@Override
public IAddBendpointFeature getAddBendpointFeature(IAddBendpointContext context) {
IAddBendpointFeature ret = new DefaultAddBendpointFeature(this);
return ret;
}
public ICopyFeature getCopyFeature(ICopyContext context) {
return null;
}
@Override
public ICustomFeature[] getCustomFeatures(ICustomContext context) {
ICustomFeature[] ret = super.getCustomFeatures(context);
List<ICustomFeature> retList = new ArrayList<ICustomFeature>();
for (int i = 0; i < ret.length; i++) {
retList.add(ret[i]);
}
ret = retList.toArray(ret);
return ret;
}
@Override
public IDeleteFeature getDeleteFeature(IDeleteContext context) {
IDeleteFeature ret = null;
ret = new DefaultDeleteFeature(this);
return ret;
}
@Override
public IMoveAnchorFeature getMoveAnchorFeature(IMoveAnchorContext context) {
IMoveAnchorFeature ret = new DefaultMoveAnchorFeature(this);
return ret;
}
@Override
public IMoveBendpointFeature getMoveBendpointFeature(IMoveBendpointContext context) {
IMoveBendpointFeature ret = new DefaultMoveBendpointFeature(this);
return ret;
}
@Override
public IMoveConnectionDecoratorFeature getMoveConnectionDecoratorFeature(IMoveConnectionDecoratorContext context) {
IMoveConnectionDecoratorFeature ret = new DefaultMoveConnectionDecoratorFeature(this);
return ret;
}
@Override
public IMoveShapeFeature getMoveShapeFeature(IMoveShapeContext context) {
IMoveShapeFeature ret = new DefaultMoveShapeFeature(this);
return ret;
}
public IPasteFeature getPasteFeature(IPasteContext context) {
return null;
}
@Override
public IPrintFeature getPrintFeature() {
return new DefaultPrintFeature(this);
}
@Override
public ISaveImageFeature getSaveImageFeature() {
return new DefaultSaveImageFeature(this);
}
@Override
public IRemoveBendpointFeature getRemoveBendpointFeature(IRemoveBendpointContext context) {
IRemoveBendpointFeature ret = new DefaultRemoveBendpointFeature(this);
return ret;
}
@Override
public IResizeShapeFeature getResizeShapeFeature(IResizeShapeContext context) {
IResizeShapeFeature ret = new DefaultResizeShapeFeature(this);
return ret;
}
@Override
public IRemoveFeature getRemoveFeature(IRemoveContext context) {
return new DefaultRemoveFeature(this);
}
@Override
public IUpdateFeature getUpdateFeature(IUpdateContext context) {
IUpdateFeature ret = null;
if (context.getPictogramElement() instanceof Diagram) {
return new DefaultUpdateDiagramFeature(this);
}
Object[] bos = getAllBusinessObjectsForPictogramElement(context.getPictogramElement());
if (bos.length == 0) {
ret = new UpdateNoBoFeature(this);
} else {
ret = super.getUpdateFeature(context);
}
return ret;
}
}