4

特定の選択が開始行と終了行の間にあるかどうかを判断する必要があります。ILineRangeEclipseのビューポート内に特定のオフセットがあります。((リモートパーティからの)選択がローカルユーザーの現在のビューポート内で行われたかどうかを知る必要があります。残念ながら、ILineRange選択からを取得できません。getOffset()とgetLength()に依存する必要があります...オフセット(または1行あたりの
文字数
が異なる(改行またはコメントの大きなブロック))ので、これに対する明確な解決策はないと思います。

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 に答える