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 import org.eclipse.gef.GraphicalEditPart; 36 37 38 public abstract class AbstractLocator 39 implements Locator 40 { 41 protected GraphicalEditPart owner; 42 protected IFigure figure; 43 public AbstractLocator(GraphicalEditPart owner) 44 { 45 super(); 46 this.owner = owner; 47 this.figure = owner.getFigure(); 48 } 49 50 public void relocate(IFigure target) 51 { 52 target.setLocation(calcCenterPoint(target.getBounds(), getConstrainedPoint(target))); 54 } 55 56 protected abstract Point getLocation(); 57 58 protected Point calcCenterPoint(Rectangle rect, Point point) 59 { 60 Dimension boundsSize = rect.getSize(); 61 return new Point(point.x - boundsSize.width/2, point.y - boundsSize.height/2); 62 } 63 64 protected Point getConstrainedPoint(IFigure target) 65 { 66 Point p = getLocation(); 67 figure.translateToAbsolute(p); 68 target.translateToRelative(p); 69 return p; 70 } 71 } 72 | Popular Tags |