Eclipse editor: show markers on custom column of vertical ruler

泄露秘密 提交于 2019-12-23 08:49:19

问题


I asked a question before about VerticalRulers, with this hint I added a second Column to the VerticalRuler and tried to add a Marker to it, but the Marker always appears on the standard Column, but not on mine. I added a second line number column to illustrate my problem. How do I change this behavior? Thanks for any help.

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


回答1:


You just have to use a different constructor for AnnotationRulerColumn:

AnnotationRulerColumn(int width, IAnnotationAccess annotationAccess) 

You can use DefaultMarkerAnnotationAccess for the argument 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;
}

I assume you have defined an annotation type with the name "MARKER" for your marker. If not, make sure to use the name of an annotation type, NOT marker type, for column1.addAnnotationType("MARKER");. You can define your own annotation type and map it to a marker type with the extension point Annotation Types.

Your marker/annotation should then show up on your own vertical ruler.



来源:https://stackoverflow.com/questions/11082933/eclipse-editor-show-markers-on-custom-column-of-vertical-ruler

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!