use of net.sf.sdedit.drawable.SequenceElement in project abstools by abstools.
the class PaintDevice method computeAxes.
public void computeAxes(int leftAxis) {
int n = diagram.getNumberOfLifelines();
int axis = leftAxis;
int mainWidth = diagram.getConfiguration().getMainLifelineWidth();
int subWidth = diagram.getConfiguration().getSubLifelineWidth();
for (int i = 0; i < n; i++) {
if (i > 0) {
axis += diagram.getConfiguration().getGlue();
}
for (ExtensibleDrawable view : diagram.getLifelineAt(i).getAllViews()) {
if (view instanceof Line) {
view.setLeft(axis + mainWidth / 2);
} else {
switch(view.getLifeline().getDirection()) {
case CENTER:
view.setLeft(axis);
break;
case LEFT:
view.setLeft(axis - view.getLifeline().getSideLevel() * subWidth);
break;
case RIGHT:
view.setLeft(axis + mainWidth + (view.getLifeline().getSideLevel() - 1) * subWidth);
}
}
}
Lifeline lifeline = diagram.getLifelineAt(i);
Drawable head = lifeline.getHead();
int offset = mainWidth / 2;
// int offset = lifeline.getView().getWidth() / 2;
head.setLeft(axis - head.getWidth() / 2 + offset);
if (lifeline.getCross() != null) {
lifeline.getCross().setLeft(axis - diagram.getConfiguration().getDestructorWidth() / 2 + mainWidth / 2);
}
if (i < diagram.getNumberOfLifelines() - 1) {
axis += head.getWidth() / 2 + diagram.getLifelineAt(i + 1).getHead().getWidth() / 2;
} else {
axis += head.getWidth() / 2 + mainWidth / 2;
}
// to the left of the (i+1)-th lifeline
for (SequenceElement arrow : leftOf.get(i)) {
int left = arrow.getLeftLimit().getRight();
int level;
if (arrow.getRightLimit() == rightBound) {
level = 0;
} else {
level = arrow.getRightLimit().getLifeline().getSideLevel();
}
axis = Math.max(axis, left + arrow.getSpace() + arrow.getWidth() + level * subWidth);
}
}
rightBound.setLeft(axis);
}
Aggregations