package org.archstudio.bna.logics.coordinating;
import java.awt.Insets;
import org.archstudio.bna.IBNAWorld;
import org.archstudio.bna.facets.IHasBoundingBox;
import org.archstudio.bna.logics.AbstractThingLogic;
import org.archstudio.bna.utils.BNAUtils;
import org.eclipse.swt.graphics.Rectangle;
import com.google.common.base.Function;
public class MirrorBoundingBoxLogic extends AbstractThingLogic {
protected final MirrorValueLogic mirrorLogic;
public MirrorBoundingBoxLogic(IBNAWorld world) {
super(world);
mirrorLogic = logics.addThingLogic(MirrorValueLogic.class);
}
public void mirrorBoundingBox(IHasBoundingBox fromThing, IHasBoundingBox toThing, final Insets insets) {
BNAUtils.checkLock();
mirrorLogic.mirrorValue(fromThing, IHasBoundingBox.BOUNDING_BOX_KEY, toThing, IHasBoundingBox.BOUNDING_BOX_KEY,
new Function<Rectangle, Rectangle>() {
@Override
public Rectangle apply(Rectangle input) {
input.x += insets.left;
input.y += insets.top;
input.width -= insets.left + insets.right;
input.height -= insets.top + insets.bottom;
return input;
}
});
}
public void unmirrorBoundingBox(IHasBoundingBox toThing) {
BNAUtils.checkLock();
mirrorLogic.unmirror(toThing, IHasBoundingBox.BOUNDING_BOX_KEY);
}
}