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