| package org.eclipse.bpmn2.modeler.ui.features.label; |
| |
| import org.eclipse.bpmn2.BaseElement; |
| import org.eclipse.bpmn2.DataInput; |
| import org.eclipse.bpmn2.DataObject; |
| import org.eclipse.bpmn2.DataObjectReference; |
| import org.eclipse.bpmn2.DataOutput; |
| import org.eclipse.bpmn2.DataStore; |
| import org.eclipse.bpmn2.DataStoreReference; |
| import org.eclipse.bpmn2.Event; |
| import org.eclipse.bpmn2.Gateway; |
| import org.eclipse.bpmn2.Message; |
| import org.eclipse.bpmn2.modeler.core.features.ContextConstants; |
| import org.eclipse.bpmn2.modeler.core.features.FeatureContainer; |
| import org.eclipse.bpmn2.modeler.core.features.UpdateBaseElementNameFeature; |
| import org.eclipse.bpmn2.modeler.core.utils.BusinessObjectUtil; |
| import org.eclipse.graphiti.features.IAddFeature; |
| import org.eclipse.graphiti.features.ICreateFeature; |
| import org.eclipse.graphiti.features.IDeleteFeature; |
| import org.eclipse.graphiti.features.IDirectEditingFeature; |
| import org.eclipse.graphiti.features.IFeatureProvider; |
| import org.eclipse.graphiti.features.ILayoutFeature; |
| import org.eclipse.graphiti.features.IMoveShapeFeature; |
| import org.eclipse.graphiti.features.IRemoveFeature; |
| 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.IContext; |
| import org.eclipse.graphiti.features.context.IMoveShapeContext; |
| import org.eclipse.graphiti.features.context.IPictogramElementContext; |
| import org.eclipse.graphiti.features.custom.ICustomFeature; |
| import org.eclipse.graphiti.features.impl.DefaultMoveShapeFeature; |
| import org.eclipse.graphiti.mm.algorithms.AbstractText; |
| import org.eclipse.graphiti.mm.pictograms.ContainerShape; |
| import org.eclipse.graphiti.mm.pictograms.Shape; |
| |
| public class LabelFeatureContainer implements FeatureContainer { |
| |
| @Override |
| public Object getApplyObject(IContext context) { |
| if (context.getProperty(ContextConstants.LABEL_CONTEXT) != null |
| && (Boolean) context.getProperty(ContextConstants.LABEL_CONTEXT) == true) { |
| if (context instanceof IAddContext) { |
| IAddContext addContext = (IAddContext) context; |
| return addContext.getNewObject(); |
| } |
| } else if (context instanceof IPictogramElementContext) { |
| IPictogramElementContext peContext = (IPictogramElementContext) context; |
| BaseElement o = BusinessObjectUtil.getFirstElementOfType(peContext.getPictogramElement(), BaseElement.class); |
| if (o != null && (o instanceof Gateway || o instanceof Event)) { |
| if (peContext.getPictogramElement() instanceof ContainerShape) { |
| ContainerShape container = (ContainerShape) peContext.getPictogramElement(); |
| if (container.getChildren().size() == 1) { |
| Shape shape = container.getChildren().get(0); |
| if (shape.getGraphicsAlgorithm() instanceof AbstractText) { |
| return o; |
| } |
| } |
| } |
| } |
| } |
| return null; |
| } |
| |
| @Override |
| public boolean canApplyTo(Object o) { |
| // these all have Label features |
| return o instanceof Gateway || |
| o instanceof Event || |
| o instanceof Message || |
| o instanceof DataInput || |
| o instanceof DataOutput || |
| o instanceof DataObject || |
| o instanceof DataObjectReference || |
| o instanceof DataStore || |
| o instanceof DataStoreReference; |
| } |
| |
| @Override |
| public ICreateFeature getCreateFeature(IFeatureProvider fp) { |
| return null; |
| } |
| |
| @Override |
| public IAddFeature getAddFeature(IFeatureProvider fp) { |
| return new AddLabelFeature(fp); |
| } |
| |
| @Override |
| public IUpdateFeature getUpdateFeature(IFeatureProvider fp) { |
| return new UpdateBaseElementNameFeature(fp); |
| } |
| |
| @Override |
| public IDirectEditingFeature getDirectEditingFeature(IFeatureProvider fp) { |
| return null; |
| } |
| |
| @Override |
| public ILayoutFeature getLayoutFeature(IFeatureProvider fp) { |
| return new LayoutLabelFeature(fp); |
| } |
| |
| @Override |
| public IRemoveFeature getRemoveFeature(IFeatureProvider fp) { |
| return null; |
| } |
| |
| @Override |
| public IMoveShapeFeature getMoveFeature(IFeatureProvider fp) { |
| return new DefaultMoveShapeFeature (fp) { |
| @Override |
| public boolean canMoveShape(IMoveShapeContext context) { |
| return true; |
| } |
| |
| @Override |
| protected void postMoveShape(IMoveShapeContext context) { |
| super.postMoveShape(context); |
| } |
| |
| }; |
| } |
| |
| @Override |
| public IResizeShapeFeature getResizeFeature(IFeatureProvider fp) { |
| return null; |
| } |
| |
| @Override |
| public IDeleteFeature getDeleteFeature(IFeatureProvider fp) { |
| return null; |
| } |
| |
| @Override |
| public ICustomFeature[] getCustomFeatures(IFeatureProvider fp) { |
| return null; |
| } |
| } |