package org.eclipse.papyrus.uml.diagram.sequence.apex.edit.policies; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.geometry.Point; import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.gef.editparts.AbstractGraphicalEditPart; import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ConnectionHandleEditPolicy; import org.eclipse.gmf.runtime.diagram.ui.handles.ConnectionHandleLocator; import org.eclipse.papyrus.uml.diagram.sequence.figures.LifelineDotLineCustomFigure; /** * Lifeline의 ConnectionHandle 위치를 DashLineRectangle에 위치 * @author Jiho * */ public class ApexLifelineConnectionHandleEditPolicy extends ConnectionHandleEditPolicy { @Override protected ConnectionHandleLocator getConnectionHandleLocator( Point referencePoint) { if (getHost() instanceof AbstractGraphicalEditPart) { IFigure figure = ((AbstractGraphicalEditPart)getHost()).getContentPane(); Rectangle rect = figure.getBounds().getCopy(); /*8 // figure.getParent().translateToAbsolute(rect); System.out.println(rect + " " + referencePoint); System.out.println(rect.contains(referencePoint)); */ if (rect.contains(referencePoint)) { if (figure instanceof LifelineDotLineCustomFigure) { figure = ((LifelineDotLineCustomFigure)figure).getDashLineRectangle(); } return new ConnectionHandleLocator(figure, referencePoint); } } return super.getConnectionHandleLocator(referencePoint); } }