【问题标题】:Eclipse editor: show markers on custom column of vertical rulerEclipse 编辑器:在垂直标尺的自定义列上显示标记
【发布时间】:2012-06-20 10:16:06
【问题描述】:

我问了question before about VerticalRulers,有了这个提示,我向 VerticalRuler 添加了第二个 Column 并尝试向其添加一个标记,但标记总是出现在标准列上,但不在我的列上。我添加了第二个行号列来说明我的问题。我该如何改变这种行为?感谢您的帮助。

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

【问题讨论】:

  • 如果我的回答对您没有帮助或者您仍有问题,请告诉我...

标签: eclipse editor eclipse-rcp eclipse-plugin


【解决方案1】:

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

然后您的标记/注释应显示在您自己的垂直标尺上。

【讨论】:

  • 很抱歉这么晚才回复,但我实在是太沮丧了,所以过去两周我做了不同的工作。今天我再次尝试,我很高兴它与 DefaultMarkerAnnotationAccess 一起工作。现在的问题是,它在新列和原始列中创建了两次 myMarker。
  • 问题是 myMarker 继承自超类“org.eclipse.ui.workbench.texteditor.warning”的注释类型,这使得标记另外出现在标准列中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多