package org.eclipse.iee.core.document.text;
import java.util.ArrayList;
import java.util.List;
public class OffsetTextLocation implements ITextLocation {
private Text fText;
private int fOffset;
public OffsetTextLocation(Text text, int offset) {
super();
fText = text;
fOffset = offset;
}
@Override
public Text getModel() {
return fText;
}
@Override
public int getOffset() {
return fOffset;
}
@Override
public INode findCommonAncestor(ITextLocation to) {
if (fText == to.getModel()) {
return fText;
}
List<INode> leftAncestors = new ArrayList<>();
List<INode> rightAncestors = new ArrayList<>();
INode l = fText;
INode r = to.getModel();
while (l != null) {
leftAncestors.add(l);
l = l.getParent();
}
while (r != null) {
rightAncestors.add(r);
r = r.getParent();
}
int il = leftAncestors.size() - 1;
int ir = rightAncestors.size() - 1;
do {
if (leftAncestors.get(il) != rightAncestors.get(ir)) {
break;
}
il--;
ir--;
} while (il >= 0 && ir >= 0);
return leftAncestors.get(il + 1);
}
}