@Override protected void postMoveShape(final IMoveShapeContext context) { super.postMoveShape(context); PictogramElement containerShape = context.getPictogramElement(); Activity activity = BusinessObjectUtil.getFirstElementOfType(containerShape, Activity.class); GraphicsUtil.sendToFront(context.getShape()); new AbstractBoundaryEventOperation() { @Override protected void doWorkInternal(ContainerShape container) { GraphicsAlgorithm ga = container.getGraphicsAlgorithm(); MoveShapeContext newContext = new MoveShapeContext(container); newContext.setDeltaX(context.getDeltaX()); newContext.setDeltaY(context.getDeltaY()); newContext.setSourceContainer(context.getSourceContainer()); newContext.setTargetContainer(context.getTargetContainer()); newContext.setTargetConnection(context.getTargetConnection()); newContext.setLocation(ga.getX(), ga.getY()); newContext.putProperty(ACTIVITY_MOVE_PROPERTY, true); IMoveShapeFeature moveFeature = getFeatureProvider().getMoveShapeFeature(newContext); if (moveFeature.canMoveShape(newContext)) { moveFeature.moveShape(newContext); } } }.doWork(activity, getDiagram()); if (containerShape.eContainer() instanceof ContainerShape) { PictogramElement pe = (PictogramElement) containerShape.eContainer(); if (BusinessObjectUtil.containsElementOfType(pe, SubProcess.class)) { layoutPictogramElement(pe); } } }
@Override public void moveShape(IMoveShapeContext context) { super.moveShape(context); Object bo = getBusinessObjectForPictogramElement(context.getPictogramElement()); if (bo instanceof Action) { Action action = (Action) bo; relocatePins(action, context); } }