我正在尝试在 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,即编辑器类层次结构中的下一个类,但问题仍然存在相同。我没主意了。关于出了什么问题的任何提示?