我需要确定给定的选择是否在起始线和结束线之间。我ILineRange
在 Eclipse 的视口中有一个给定的偏移量。(我需要知道,如果选择(来自远程方)是在本地用户的当前视口中进行的。不幸的是,我无法ILineRange
从选择中获得。我必须依赖 getOffset() 和 getLength()...
有人有想法吗?
我认为这没有一个干净的解决方案,因为偏移量(或每行的字符不同(新行行或一大块注释)。
问问题
443 次
2 回答
1
位置和偏移之间的转换可以通过 IDocument 的 API(getLine*() 周围的方法)来完成。(我不确定我是否完全理解您的问题,但我希望这是有用的信息。)
于 2010-03-20T22:49:56.737 回答
1
也许您可以检查该org.eclipse.linuxtools.dataviewers.annotatedsourceeditor.STOverviewRuler
课程是否处理您遇到的同类问题。
类似于以下内容:
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);
于 2010-03-19T16:31:32.310 回答