2012-06-18 34 views
7

question before about VerticalRulersと私は尋ねました。このヒントで、VerticalRulerに2番目の列を追加してマーカーを追加しようとしましたが、マーカーは常に標準列に表示されます私のものではない。私は問題を説明するために2行目の列を追加しました。この動作を変更するにはどうすればよいですか?助けてくれてありがとう。Eclipseのエディター:垂直ルーラーのカスタム列にマーカーを表示

@Override 
protected IVerticalRuler createVerticalRuler(){ 
    IVerticalRuler ruler = super.createVerticalRuler(); 
    ruler2 = (CompositeRuler) ruler; 
    column1 = new AnnotationRulerColumn(100); 
    ruler2.addDecorator(0, column1); 
    ruler2.addDecorator(2, createLineNumberRulerColumn()); 
    column1.addAnnotationType("MARKER"); 
    return ruler; 
} 
public String check_line(){ 
    IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); 
    IFileEditorInput input = (IFileEditorInput)editor.getEditorInput() ; 
    IFile file = input.getFile(); 
    IResource res = (IResource) file; 
    try{ 
     IMarker m = res.createMarker(IMarker.MARKER); 
     m.setAttribute(IMarker.LINE_NUMBER,2); 
     m.setAttribute(IMarker.MESSAGE, "lala"); 
     m.setAttribute(IMarker.TEXT, "test"); 
     m.setAttribute(IMarker.PRIORITY, IMarker.PRIORITY_HIGH); 
     m.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_INFO); 
    } catch (CoreException e) { ... } 
    return "marker created"; 
} 

enter image description here

+0

私の答えがあなたを助けない、またはまだ問題がある場合は教えてください... –

答えて

3

あなただけのAnnotationRulerColumnに別のコンストラクタを使用する必要があります。

AnnotationRulerColumn(int width, IAnnotationAccess annotationAccess) 

あなたは引数IAnnotationAccessためDefaultMarkerAnnotationAccessを使用することができます。

protected IVerticalRuler createVerticalRuler(){ 
    IVerticalRuler ruler = super.createVerticalRuler(); 
    CompositeRuler ruler2 = (CompositeRuler) ruler; 
    column1 = new AnnotationRulerColumn(100, new DefaultMarkerAnnotationAccess()); 
    ruler2.addDecorator(0, column1); 
    ruler2.addDecorator(2, createLineNumberRulerColumn()); 
    column1.addAnnotationType("MARKER"); 
    return ruler; 
} 

私はあなたが持っていると仮定アノテーション型のウィジェットを定義しましたhマーカーの名前 "MARKER"。 そうでない場合は、column1.addAnnotationType("MARKER");の注釈タイプの名前(マーカータイプではない)を使用してください。独自の注釈タイプを定義し、拡張ポイントAnnotation Typesを使用してマーカータイプにマップすることができます。

あなたのマーカー/注釈は、自分の縦の定規に表示されます。

+0

私は最後に2週間別の仕事をしたので、遅く返事を申し訳ありませんが、私はちょうど欲求不満でした。今日私はもう一度試してみましたが、DefaultMarkerAnnotationAccessでうまくいきました。問題は、新しい列と元の列にmyMarkerを2回作成するということです。 – eactor

+0

問題は、スーパークラス "org.eclipse.ui.workbench.texteditor.warning"から継承した注釈型myMarkerであり、マーカーをstandart列に追加で追加しました – eactor

関連する問題