package org.activiti.designer.features; import org.activiti.bpmn.model.TextAnnotation; import org.eclipse.graphiti.features.IFeatureProvider; import org.eclipse.graphiti.features.context.IDirectEditingContext; import org.eclipse.graphiti.features.impl.AbstractDirectEditingFeature; import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm; import org.eclipse.graphiti.mm.algorithms.MultiText; import org.eclipse.graphiti.mm.pictograms.PictogramElement; import org.eclipse.graphiti.mm.pictograms.Shape; public class DirectEditTextAnnotationFeature extends AbstractDirectEditingFeature { public DirectEditTextAnnotationFeature(final IFeatureProvider fp) { super(fp); } @Override public int getEditingType() { return TYPE_MULTILINETEXT; } @Override public String getInitialValue(final IDirectEditingContext context) { final PictogramElement pe = context.getPictogramElement(); final TextAnnotation annotation = (TextAnnotation) getBusinessObjectForPictogramElement(pe); return annotation.getText(); } @Override public boolean canDirectEdit(IDirectEditingContext context) { final PictogramElement pe = context.getPictogramElement(); final Object bo = getBusinessObjectForPictogramElement(pe); final GraphicsAlgorithm ga = context.getGraphicsAlgorithm(); return bo instanceof TextAnnotation && ga instanceof MultiText; } @Override public void setValue(String value, IDirectEditingContext context) { final PictogramElement pe = context.getPictogramElement(); final TextAnnotation annotation = (TextAnnotation) getBusinessObjectForPictogramElement(pe); annotation.setText(value); updatePictogramElement(((Shape) pe).getContainer()); } }