日食で垂直定規リスナーを実装しようとしています。インターフェイスを実装し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 に変更しましたが、問題は解決しませんでした。同じ。私はアイデアがありません。何が間違っているかについてのヒントはありますか?