2017-07-04 51 views
0

我的RCP Eclipse應用程序存在以下問題:我試圖在Project Explorer樹中的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); 
} 

也可能需要使用TreeSelectionTreePath的選擇,而不是僅僅StructuredSelection

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

TreeSelection selection = new TreeSelection(path); 

其中'對象數組'是通過樹到資源的路徑。

但是在不同視圖的樹中選擇項並不是ISelectionProvider接口的用途。無法保證可以使用此界面完成此操作。

+0

實例檢查和setSelection似乎沒有區別。至於TreeSelection,我無法從IResource獲取TreeSelection ... – vladimiryov

+0

您不從IResource獲取TreeSelection,而是使用TreePath構建TreeSelection。具體到項目瀏覽者想要的路徑我不確定。爲答案增加了一點。 –

+0

我已成功修改代碼以接收樹選擇,但仍顯示完全相同的行爲,如果樹未打開,則不會選擇該元素。如果使用手工至少手動展開樹,代碼將跳轉到元素,即使樹已摺疊。 – vladimiryov