package org.archstudio.bna.logics.coordinating; import java.awt.geom.Point2D; import org.archstudio.bna.IBNAWorld; import org.archstudio.bna.facets.IHasAnchorPoint; import org.archstudio.bna.logics.AbstractThingLogic; import org.archstudio.bna.utils.BNAUtils; import org.eclipse.swt.graphics.Point; import com.google.common.base.Function; public class MirrorAnchorPointLogic extends AbstractThingLogic { protected final MirrorValueLogic mirrorLogic; public MirrorAnchorPointLogic(IBNAWorld world) { super(world); mirrorLogic = logics.addThingLogic(MirrorValueLogic.class); } public void mirrorAnchorPoint(IHasAnchorPoint fromThing, IHasAnchorPoint toThing, final Point deltaPoint) { BNAUtils.checkLock(); mirrorLogic.mirrorValue(fromThing, IHasAnchorPoint.ANCHOR_POINT_KEY, toThing, IHasAnchorPoint.ANCHOR_POINT_KEY, new Function<Point2D, Point2D>() { @Override public Point2D apply(Point2D input) { return new Point2D.Double(input.getX() + deltaPoint.x, input.getX() + deltaPoint.y); } }); } public void unmirrorAnchorPoint(IHasAnchorPoint toThing) { BNAUtils.checkLock(); mirrorLogic.unmirror(toThing, IHasAnchorPoint.ANCHOR_POINT_KEY); } }