blob: 2ae122aae0bfbf9e8c4dade33abc5f56b7428bb6 [file] [log] [blame]
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;
}
}