1

日食で垂直定規リスナーを実装しようとしています。インターフェイスを実装し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