7

以前、VerticalRulersについて質問しました。このヒントを使用して、VerticalRulerに2番目の列を追加し、それにマーカーを追加しようとしましたが、マーカーは常に標準の列に表示されますが、私のものには表示されません。問題を説明するために、2番目の行番号の列を追加しました。この動作を変更するにはどうすればよいですか?助けてくれてありがとう。

@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";
}

ここに画像の説明を入力してください

4

1 に答える 1

3

AnnotationRulerColumnには別のコンストラクターを使用する必要があります。

AnnotationRulerColumn(int width, IAnnotationAccess annotationAccess) 

DefaultMarkerAnnotationAccess引数に使用できますIAnnotationAccess

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;
}

マーカーに「MARKER」という名前の注釈タイプを定義したと思います。そうでない場合は、マーカータイプではなく、注釈タイプの名前を使用してcolumn1.addAnnotationType("MARKER");ください。独自の注釈タイプを定義し、それを拡張ポイントの注釈タイプを使用してマーカータイプにマップできます。

マーカー/注釈は、自分の垂直定規に表示されます。

于 2012-06-21T13:14:01.713 に答える