1
我的Eclipse插件提供了一個包含文件列表的編輯器(作爲依賴搜索的結果)。當用戶在列表中選擇一個文件時,應該在包/資源管理器中高亮顯示此文件/資源。如何以編程方式更新所選資源的鏈接與編輯器功能?
這可以通過使用資源管理器視圖的鏈接與編輯器功能輕鬆完成,如果有如下呼叫:updateSelectedResource(IResource)
,我可以從我的編輯器中調用以顯式設置活動文件。什麼是實際電話?
我的Eclipse插件提供了一個包含文件列表的編輯器(作爲依賴搜索的結果)。當用戶在列表中選擇一個文件時,應該在包/資源管理器中高亮顯示此文件/資源。如何以編程方式更新所選資源的鏈接與編輯器功能?
這可以通過使用資源管理器視圖的鏈接與編輯器功能輕鬆完成,如果有如下呼叫:updateSelectedResource(IResource)
,我可以從我的編輯器中調用以顯式設置活動文件。什麼是實際電話?
您的編輯必須成爲ISelectionProvider。在Eclipse FAQ中,您會看到一個完整的示例,其中註冊選擇提供者的重要行是getSite().setSelectionProvider(viewer);
。之後,列表中選定的文件會自動告知所有選擇偵聽器,包括程序包瀏覽器。
如果您想了解有關選擇服務(負責使這些視圖對其他視圖中的選擇產生反應)的全貌,請參閱Eclipse article的詳細描述。
如果發現自己希望與更多現有視圖進行交互,那麼您可能還想看看IAdaptable,如here所述,但這對於包瀏覽器鏈接不是必需的。
謝謝,你的答案似乎指向了正確的方向。我的類現在實現了'ISelectionProvider',據我所知它似乎原則上工作。但是,當我嘗試通過在使用我的impl of ISelectionProvider.addSelectionChangedListener之前添加的每個偵聽器的'selectionChangedEvent'(包含結構化選擇)來發布/觸發更改時,沒有任何反應。不知怎的,資源管理器似乎無法識別我的事件,或者它忽略了它... –
_You_不應該觸發這些事件,我想。您的列表需要包含真實的IResource對象(並使用標籤提供程序顯示它們),然後您的用戶與列表交互應自動觸發必要的事件。我的猜測是你的列表只包含純字符串(例如文件名),可能是? – Bananeweizen
差不多。 ;)我的列表包含我自己的/自定義對象,它們用作包裝器,存儲'IResource'和附加數據。這是因爲列表/樹視圖中的資源是依賴項跟蹤/搜索的結果。我的元數據保存有關搜索者找到資源的上下文的信息。因此即使相同的資源可能會出現在列表中多次,但與不同的元數據。 –