1

我正在尝试在 Eclipse 中实现垂直标尺侦听器。我实现了IPartListener2接口,当打开一个 java 编辑器时,我注册了监听器。问题是当垂直标尺被点击时,监听器永远不会被调用。如果我调用 CompositeRuler.fireAnnotationSelected(),监听器会按预期调用。

我认为这可能是一个错误,但我想在填充 bugzilla 之前确定。有人可以指出我做错了什么吗?

这是 IPartListener2 类:

public class EditorListener implements IPartListener2 {

    @Override
    public void partOpened(IWorkbenchPartReference partRef) {
        IWorkbenchPart part = partRef.getPart(true);
        if (part != null && part instanceof IEditorPart)
            configureJavaEditor((IEditorPart) part);
    }

    // other IPartListener2 methods...

    private void configureJavaEditor(IEditorPart editorPart) {
        Object obj = ((JavaEditor) editorPart).getAdapter(IVerticalRulerInfo.class);
        if (obj != null && obj instanceof IVerticalRulerInfoExtension) {
            ((IVerticalRulerInfoExtension) obj).addVerticalRulerListener(new VerticalRulerListener());
            if (obj instanceof CompositeRuler) 
                ((CompositeRuler) obj).fireAnnotationSelected(null); // -> listener called
        }
    }
}

垂直标尺侦听器只打印正在调用的方法。

起初我认为这可能会发生,因为我使用 JavaEditor 来获取垂直标尺(不鼓励 JavaEditor 访问),所以我从 JavaEditor 更改为 AbstractDecoratedTextEditor,即编辑器类层次结构中的下一个类,但问题仍然存在相同。我没主意了。关于出了什么问题的任何提示?

4

0 回答 0