2

我正在开发一个 Eclipse 插件,它在 Eclipse 自己的 AbstractTextEditor 中显示自定义多行标记。

这是我到目前为止所拥有的:

  • 具有超类型“org.eclipse.core.resources.textmarker”的自定义标记
  • annotationType (org.eclipse.ui.editors.annotationTypes)
  • 一个markerAnnotationSpecification (org.eclipse.ui.editors.markerAnnotationSpecification)

这一切都很好,我的标记出现在编辑器中。但我需要自定义它们在 VerticalRuler 上的绘制方式,因此它们不仅显示为图标,而且显示为跨越受影响源行的垂直线。

我知道,这可以通过实现 IAnnotationPresentation 并覆盖paint() 来使用注释来完成。

但是我怎样才能为标记做到这一点?

编辑:这是我想要实现的截图:

左边的红条

4

1 回答 1

1

我通过提供一个 RulerColumn (扩展点org.eclipse.ui.workbench.texteditor.rulerColumns)并配置markerAnnotationSpecification包含verticalRulerPreferenceKeyand来解决这个问题verticalRulerPreferenceValue(因此它不会显示在默认的 AnnotationRulerColumn 上)。

如果有人还发现有关如何最好地实现IContributedRulerColumn有点稀疏的文档:似乎要走的路是子类AbstractContributedRulerColumn化并将方法委托给AbstractRulerColumn.

例如:

public class MyRulerColumn extends AbstractContributedRulerColumn {
    private IVerticalRulerColumn delegate = new AbstractRulerColumn() { … }
    public void setModel(IAnnotationModel model) {
        delegate.setModel(model);
    }
    …
}

然后,自定义外观就像覆盖委托中的一种绘制方法一样简单。

于 2013-03-06T16:59:45.007 回答