4

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

4

2 回答 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 回答