| package org.eclipse.gmf.tooling.runtime.linklf.labels; |
| |
| import org.eclipse.draw2d.Connection; |
| import org.eclipse.draw2d.IFigure; |
| import org.eclipse.draw2d.geometry.Point; |
| import org.eclipse.draw2d.geometry.PointList; |
| import org.eclipse.draw2d.geometry.Rectangle; |
| import org.eclipse.gmf.runtime.diagram.ui.internal.figures.ResizableLabelLocator; |
| import org.eclipse.gmf.runtime.draw2d.ui.geometry.PointListUtilities; |
| |
| /** |
| * Extends default GMF Runtime {@link ResizableLabelLocator} with custom |
| * {@link LinkLFLabelOffsetConvention} |
| * <p/> |
| * |
| * @since 3.3 |
| */ |
| public class LinkLFResizableLabelLocator extends ResizableLabelLocator { |
| |
| public LinkLFResizableLabelLocator(IFigure parent, Rectangle bounds, |
| int alignment) { |
| super(parent, bounds, alignment); |
| } |
| |
| @Override |
| protected Point getReferencePoint() { |
| if (parent instanceof Connection) { |
| PointList ptList = ((Connection) parent).getPoints(); |
| int percents = LinkLFLabelOffsetConvention |
| .getPercentageOffsetAmongTheLineForAlignment(getAlignment()); |
| return PointListUtilities.calculatePointRelativeToLine(ptList, 0, |
| percents, true); |
| } else { |
| return parent.getBounds().getLocation(); |
| } |
| } |
| |
| } |