确定偏差是否在行号之间?

时间:2010-03-19 12:09:02

标签: java eclipse range offset viewport

我需要确定给定的选择是否在起始行和结束行之间。 我在eclipse的视口中有一个ILineRange和一个给定的偏移量。 (我需要知道,如果选择(来自远程方)是在本地用户的当前视口中进行的。不幸的是,我无法从选择中获得ILineRange。我必须依赖于getOffset()和getLength ()...
有人有想法吗?
我认为没有一个干净的解决方案,因为偏移(或每行的字符变化(新的线条或一大块评论)。

2 个答案:

答案 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 *()周围的方法)完成。 (我不确定我是否完全理解你的问题,但我希望这是有用的信息。)