else
buildHorizontalLeftPath(true);
}
public void buildVerticalPath() {
Vector2D start_ = link.getStartWithOffset();
Vector2D end_ = link.getEndWithOffset();
if(link.end.x > link.start.x+link.outOffsetLength && link.endDirection == Anchor2D.DIRECTION_LEFT) {
path.add(link.start);
path.add(link.start.x, link.end.y);
path.add(link.end);
link.label.setPosition(link.start.x+(link.end.x-link.start.x)*0.5, link.end.y-LABEL_OFFSET);
} else if(link.end.x < link.start.x-link.outOffsetLength && link.endDirection == Anchor2D.DIRECTION_RIGHT) {
path.add(link.start);
path.add(link.start.x, link.end.y);
path.add(link.end);
link.label.setPosition(link.start.x+(link.end.x-link.start.x)*0.5, link.end.y-LABEL_OFFSET);
} else if(link.end.y+GElementRect.DEFAULT_HEIGHT*0.5>start_.y-10) {
Vector2D p1 = new Vector2D(link.start.x, link.end.y-GElementRect.DEFAULT_HEIGHT*0.5-10);
Vector2D p2 = new Vector2D(end_.x, p1.y);
path.add(link.start);
path.add(p1);
path.add(p2);
path.add(end_);
path.add(link.end);
link.label.setPosition(p1.add(p2.sub(p1).stretch(0.5)).shift(0, -LABEL_OFFSET));
} else {
Vector2D ab = end_.sub(link.start);
Vector2D p1 = new Vector2D(link.start.x, link.start.y+ab.y*0.5);
Vector2D p2 = new Vector2D(p1.x+ab.x, p1.y);
Vector2D p3 = new Vector2D(p2.x, end_.y);
path.add(link.start);
path.add(p1);
path.add(p2);
path.add(p3);