if (a1 == null || a2 == null)
return Integer.MIN_VALUE;
if (a1.get(0) != a2.get(0))
return Integer.MIN_VALUE; // not same DocumentEditPart
for (int i = 1;; i++) {
EditPart p1a = (EditPart) a1.get(i);
EditPart p2a = (EditPart) a2.get(i);
if (p1a == p2a) {
if (p1a != null)
{
continue; // same ancester
}
// both are null. just compare the offset.
return offset1 < offset2 ? -1
: (offset1 == offset2 ? 0 : 1);
}
// p1a != p2a. now we can just compare p1a and p2a to decide the
// order.
if (p1a != null)
offset1 = p1a.getParent().getChildren().indexOf(p1a);
if (p2a != null)
offset2 = p2a.getParent().getChildren().indexOf(p2a);
if ((p1a == null && p2a == null) || (p1a != null && p2a != null)) {
return offset1 < offset2 ? -1 : (offset1 == offset2 ? 0 : 1);
} else if (p1a == null) {
return offset1 <= offset2 ? -1 : 1;
} else {