blob: d624eab8adfe249aa0c0d6d5ee93aa826c8ddb05 [file] [log] [blame]
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.figures.LabelLocator;
import org.eclipse.gmf.runtime.draw2d.ui.geometry.PointListUtilities;
/**
* Extends default {@link LabelLocator} with different
* {@link LinkLFLabelOffsetConvention}
* <p/>
*
* @since 3.3
*/
public class LinkLFLabelLocator extends LabelLocator {
public LinkLFLabelLocator(IFigure parent, Rectangle bounds, int alignment) {
super(parent, bounds, alignment);
}
public LinkLFLabelLocator(IFigure parent, Point offSet, int alignment) {
super(parent, offSet, alignment);
}
/**
* Returns the reference point for the locator.
*
* @return the reference point
*/
protected Point getReferencePoint() {
if (parent instanceof Connection) {
PointList ptList = ((Connection) parent).getPoints();
return PointListUtilities.calculatePointRelativeToLine(ptList, 0,
getLocationEx(), true);
} else {
return parent.getBounds().getLocation();
}
}
protected int getLocationEx() {
return LinkLFLabelOffsetConvention
.getPercentageOffsetAmongTheLineForAlignment(getAlignment());
}
}