Eclipse编辑器:在垂直标尺的自定义列上显示标记

我之前问了一个关于VerticalRulers的问题,这个提示我向VerticalRuler添加了第二个列,并试图给它添加一个标记,但Marker总是出现在标准列上,但不是我的标记。 我添加了第二个行号列来说明我的问题。 我如何改变这种行为? 谢谢你的帮助。

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


您只需为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");使用注释类型的名称,而不是标记类型column1.addAnnotationType("MARKER"); 。 您可以定义自己的注记类型,并使用扩展点注记类型将其映射到标记类型。

你的标记/注释应该显示在你自己的垂直标尺上。

链接地址: http://www.djcxy.com/p/10861.html

上一篇: Eclipse editor: show markers on custom column of vertical ruler

下一篇: Binomial test in Java