1 27 28 package org.nightlabs.editor2d.handle; 29 30 import org.eclipse.draw2d.IFigure; 31 import org.eclipse.draw2d.Locator; 32 import org.eclipse.draw2d.geometry.Dimension; 33 import org.eclipse.draw2d.geometry.Point; 34 import org.eclipse.draw2d.geometry.Rectangle; 35 36 import org.nightlabs.editor2d.edit.AbstractDrawComponentEditPart; 37 38 39 public class RotateCenterLocator 40 implements Locator 41 { 42 protected AbstractDrawComponentEditPart owner; 43 public RotateCenterLocator(AbstractDrawComponentEditPart owner) 44 { 45 this.owner = owner; 46 } 47 48 protected Point getLocation() 49 { 50 return new Point(owner.getDrawComponent().getRotationX(), 51 owner.getDrawComponent().getRotationY()); 52 } 53 54 public void relocate(IFigure target) 55 { 56 target.setLocation(calcCenterPoint(target.getBounds(), getReferencePoint(target))); 57 } 58 59 protected Point calcCenterPoint(Rectangle rect, Point point) 60 { 61 Dimension boundsSize = rect.getSize(); 62 return new Point(point.x - boundsSize.width/2, point.y - boundsSize.height/2); 63 } 64 65 protected Point getReferencePoint(IFigure target) 66 { 67 Point p = getLocation(); 68 owner.getFigure().translateToAbsolute(p); 69 target.translateToRelative(p); 70 return p; 71 } 72 } 73 | Popular Tags |