我需要确定给定的选择是否在起始行和结束行之间。
我在eclipse的视口中有一个ILineRange
和一个给定的偏移量。 (我需要知道,如果选择(来自远程方)是在本地用户的当前视口中进行的。不幸的是,我无法从选择中获得ILineRange
。我必须依赖于getOffset()和getLength ()...
有人有想法吗?
我认为没有一个干净的解决方案,因为偏移(或每行的字符变化(新的线条或一大块评论)。
答案 0 :(得分:1)
也许您可以查看org.eclipse.linuxtools.dataviewers.annotatedsourceeditor.STOverviewRuler
class是否处理了您遇到的同类问题
行的::
if (ANNOTATION_HEIGHT_SCALABLE) {
int numbersOfLines= document.getNumberOfLines(annotationOffset, annotationLength);
// don't count empty trailing lines
IRegion lastLine= document.getLineInformationOfOffset(annotationOffset + annotationLength);
if (lastLine.getOffset() == annotationOffset + annotationLength) {
numbersOfLines -= 2;
hh= (numbersOfLines * size.y) / maxLines + ANNOTATION_HEIGHT;
if (hh < ANNOTATION_HEIGHT)
hh= ANNOTATION_HEIGHT;
} else
hh= ANNOTATION_HEIGHT;
}
fAnnotationHeight= hh;
int startLine= textWidget.getLineAtOffset(annotationOffset - visible.getOffset());
yy= Math.min((startLine * size.y) / maxLines, size.y - hh);
答案 1 :(得分:1)
位置和偏移之间的转换可以使用IDocument的API(getLine *()周围的方法)完成。 (我不确定我是否完全理解你的问题,但我希望这是有用的信息。)