0

ビュー (ツリービューアーを含む) のコンテキスト メニューとカスタム エディターのコンテキスト メニューに追加したコマンドがあります。

私のハンドラーで、コマンドが呼び出されたコンテキスト メニューを区別する方法はありますか? これは、ビューの場合、次のようなものを使用して必要なデータを取得するためです。

ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event)
                .getActivePage().getSelection();
        if (selection != null & selection instanceof IStructuredSelection)
        {
            IStructuredSelection strucSelection = (IStructuredSelection) selection;
.....

もちろん、エディターの場合、選択は null です。そこで、エディター部分を処理するために次を追加しました。

IEditorPart editor = HandlerUtil.getActiveEditor(event);
IEditorInput input = editor.getEditorInput();
        IPath path = ((FileEditorInput)input).getPath();

しかし、私のビューからこのコマンドを実行しても、常にアクティブなエディターが返されます。これは、ビューまたはエディターがフォーカスされているかどうかに基づいてアクティブになる個別のハンドラーに書き込む必要があるということですか?

ありがとうございました!

4

2 に答える 2

1

これは、ビューまたはエディターがフォーカスされているかどうかに基づいてアクティブになる個別のハンドラーに書き込む必要があるということですか?

はい、そうです。ただし、個別のハンドラーは、共通クラスを呼び出してコマンドのほとんどの作業を実行する小さなクラスにすることができます。コマンドが機能するために必要なデータはわかりませんが、個別のハンドラーがそのデータを準備し、1 つ以上のコンストラクターを介して共通クラスに渡すことができます。

于 2013-05-10T12:44:08.927 に答える