/******************************************************************************* * <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; } }