use of org.yakindu.base.xtext.utils.gmf.directedit.ExternalXtextLabelEditPart in project statecharts by Yakindu.
the class InitialPointsOfRequestDataManager method storeInitialPointsInRequest.
/**
* Store the initial points of the edge in the request (before feedback
* drawing). This data can be used later for computing the location of the
* labels of this edge in the command construction.<BR>
* This method also set the feedback data of the {@link EdgeLabelLocator} of the
* labels of the current connection to correctly draw the label feedback during
* the label move.
*
* @param request
* the request in which to store the original points of the edge.
* @param connectionEditPart
* the editPart of the edge
*/
@SuppressWarnings("unchecked")
public void storeInitialPointsInRequest(LocationRequest request, ConnectionEditPart connectionEditPart) {
if (initialPoints == null) {
initialPoints = new PointList();
Connection connection = (Connection) connectionEditPart.getFigure();
for (int i = 0; i < connection.getPoints().size(); i++) {
initialPoints.addPoint(connection.getPoints().getPoint(i).getCopy());
}
request.getExtendedData().put(INITIAL_POINTS_KEY, initialPoints);
List<?> children = connectionEditPart.getChildren();
for (Object child : children) {
if (child instanceof ExternalXtextLabelEditPart) {
IFigure figure = ((ExternalXtextLabelEditPart) child).getFigure();
Object currentConstraint = connection.getLayoutManager().getConstraint(figure);
if (currentConstraint instanceof EdgeLabelLocator) {
EdgeLabelLocator edgeLabelLocator = (EdgeLabelLocator) currentConstraint;
edgeLabelLocator.setFeedbackData(initialPoints, new Vector(edgeLabelLocator.getOffset().x, edgeLabelLocator.getOffset().y), SetLabelsOffsetOperation.isEdgeWithObliqueRoutingStyle(connectionEditPart));
}
}
}
}
}
Aggregations