package org.archstudio.archipelago2.ext.statecharts.things; import java.awt.Shape; import java.awt.geom.Ellipse2D; 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 FinalStateThing extends FinalStateThingBase { public FinalStateThing(@Nullable Object id) { super(id); } @Override public Point getReferencePoint() { Rectangle r = getBoundingBox(); return new Point(r.x + r.width / 2, r.y + r.height / 2); } @Override public void setReferencePoint(Point value) { Point oldReferencePoint = getReferencePoint(); Rectangle r = getBoundingBox(); r.x += value.x - oldReferencePoint.x; r.y += value.y - oldReferencePoint.y; setBoundingBox(r); } @Override public boolean shouldIncrementRotatingOffset() { return isSelected(); } @Override public Shape getStickyShape() { Rectangle r = getBoundingBox(); return new Ellipse2D.Double(r.x, r.y, r.width, r.height); } }