2016-08-19 22 views
0

EclipseのQuickFixのようなテキスト置換コンポーネントでプラグインを作っています。私が使っているオフセット(marker.getAttributeから引っ張られたもの)は、変更が加えられても保存されていないと間違っています。私はこれがマーカーが機能する方法によると理解しています。IMarkerに関連付けられた注釈を見つける

マーカーがリソースに追加されると、彼らは文書の注釈モデルに注釈を付けます。この注釈は保存されていない変更を追跡しているので、マーカの代わりにその位置からオフセットを引くのが適切です。

私のための方法は、それに関連付けられている注釈を見つけるために、マーカー与えられた、ありますか?

答えて

0

注釈は位置を直接追跡しません。位置は注釈モデルクラス(IAnnotationModel)によって維持されます。

あなたは、あなたがしたいマーカー注釈のためのモデルの注釈を検索し、モデルからその位置を取得する必要がありますISourceViewer

IAnnotatorModel model = viewer.getAnnotationModel(); 

エディタからアノテーションモデルを取得することができます。

Iterator<?> iter = model.getAnnotationIterator(); 
while (iter.hasNext()) { 
    Object object = iter.next(); 
    if (object instanceof MarkerAnnotation) { 
    MarkerAnnotation annotation = (MarkerAnnotation)object; 

    IMarker marker = annotation.getMarker(); 

    // TODO check this is the marker you are interested in 

    Position position = model.getPosition(annotation); 
    } 
} 
+0

よしIMarkerとMarkerAnnotationの間にリンクがありますか?つまり、私がIMarkerを持っていれば、私が興味を持っているMarkerAnnotationを何らかの形で知ることができますか? IMarkerのオフセットは、リソースが保存されるまで更新されないため、比較できません。 –

+0

MarkerAnnotationには 'getMarker()'メソッドがあります - 答えに追加されました。 –

+0

私が必要としていた正確に、私はそれを見落としたかわからない。ありがとう! –

関連する問題