package org.archstudio.bna.things.labels; import java.awt.geom.Point2D; import org.archstudio.bna.IBNAModel; import org.archstudio.bna.facets.IHasIndicatorPoint; import org.archstudio.bna.facets.IHasText; import org.archstudio.bna.keys.IThingKey; import org.archstudio.bna.logics.coordinating.StickPointLogic; import org.archstudio.bna.utils.BNAUtils; import org.archstudio.sysutils.SystemUtils; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; @NonNullByDefault public class AnchoredLabelThing extends AnchoredLabelThingBase { public AnchoredLabelThing(@Nullable Object id) { super(id); } @Override protected void initProperties() { super.initProperties(); addShapeModifyingKey(IHasText.TEXT_KEY); Point2D ap = getAnchorPoint(); setBoundingBox(new Rectangle(SystemUtils.round(ap.getX()), SystemUtils.round(ap.getY()), 0, 0)); } @Override public Point getReferencePoint() { return BNAUtils.toPoint(getAnchorPoint()); } @Override public void setReferencePoint(Point value) { setAnchorPoint(BNAUtils.toPoint2D(value)); } @Override public Point2D getSecondaryPoint(IBNAModel model, StickPointLogic stickLogic, IThingKey<Point2D> pointKey) { if (IHasIndicatorPoint.INDICATOR_POINT_KEY.equals(pointKey)) { return getAnchorPoint(); } return null; } }