我正在尝试在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,这是编辑器类层次结构中的下一个类,但是问题仍然是一样的。我没有想法。什么是错的暗示?