2017-07-04 10 views
0

RCP Eclipseアプリケーションに次の問題があります。プロジェクトエクスプローラツリー内のIResourceで選択を設定しようとしています。私が使用しています コードは次のとおりです。Eclipseでプログラム的にリソースを選択してもツリーが展開されない

 
final IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); 
final IViewPart viewPart = page.findView(IPageLayout.ID_PROJECT_EXPLORER); 
final ISelectionProvider selProvider = viewPart.getSite().getSelectionProvider(); 
selProvider.setSelection(new StructuredSelection(mrcReportRuleOccurrence.getIResource())); 

コードは葉が既に一度ツリーに展開された場合にのみ動作するようです。ツリーが完全に折りたたまれている場合、コードはeclipseが包含フォルダを展開してプロジェクトエクスプローラで目的のファイルを選択するようにしません。誰もがこれをもたらす方法を知っていますか?

答えて

0

あなたは選択のプロバイダがViewerかどうかをチェックし、setSelection(selection. reveal)方法を使用して試みることができる:

if (selProvider instanceof Viewer) { 
    ((Viewer)selProvider).setSelection(selection, true); 
} 

また、ちょうどStructuredSelectionではなく、選択のためのTreePathTreeSelectionを使用する必要があるかもしれません。

TreePath path = new TreePath(.... array of objects ...); 

TreeSelection selection = new TreeSelection(path); 

ここで、「オブジェクトの配列」は、ツリーを介してリソースに至るパスです。

しかし、別のビューのツリーで項目を選択することは、ISelectionProviderのインターフェースのためのものではありません。このインタフェースを使用してこれを実行できる保証はありません。

+0

インスタンスチェックとsetSelectionは違いはありません。 TreeSelectionについては、IResourceからTreeSelectionを取得できません。 – vladimiryov

+0

TreeSelectionをIResourceから取得せず、TreePathを使用してTreeSelectionを構築します。プロジェクトエクスプローラが正確に何を求めているのか分かりません。答えにもう少し追加しました。 –

+0

ツリー選択を受け取るようにコードを正常に変更しましたが、ツリーが開いていない場合は要素を選択しません。ユーザーが手動でツリーを少なくとも1回展開すると、ツリーが折りたたまれていても要素にジャンプします。 – vladimiryov

関連する問題