我有一個插件,該視圖根據在所選項目中找到的不同文件(該工作空間有多個項目加載)創建一個tableviewer。我的問題是,當我嘗試重新加載視圖時,信息與Eclipse啓動後第一次運行時保持不變。重新加載Eclipse視圖
我應該怎麼做才能重新加載內容提供程序,每次我重新加載視圖?
我有一個插件,該視圖根據在所選項目中找到的不同文件(該工作空間有多個項目加載)創建一個tableviewer。我的問題是,當我嘗試重新加載視圖時,信息與Eclipse啓動後第一次運行時保持不變。重新加載Eclipse視圖
我應該怎麼做才能重新加載內容提供程序,每次我重新加載視圖?
要被告知哪個部件處於活動狀態,您需要使用IPartListener2
。讓您的ViewPart實現IPartListener2
。
設置聽者在createPartControl
:
@Override
public void createPartControl(final Composite parent)
{
....
getSite().getWorkbenchWindow().getPartService().addPartListener(this);
}
在dispose
刪除監聽器:
@Override
public void dispose()
{
super.dispose();
...
getSite().getWorkbenchWindow().getPartService().removePartListener(this);
}
你將不得不實行IPartListener
的各種方法,大多數這些並不需要做任何事情,partVisible
方法在您的視圖(或任何其他部分)顯示時調用:
@Override
public void partVisible(final IWorkbenchPartReference ref)
{
if (ref.getId().equals("your view id"))
{
// Your view has become visible ... add code here to update the table
}
}
仍然不起作用,似乎一旦視圖從窗口選項加載,它只使用當時選擇的項目..... – 2014-09-29 08:41:12
你將不得不找出新的選擇是在部分可見 – 2014-09-29 08:41:44
你是什麼意思? :) – 2014-09-29 09:01:18
這是我partVisible的樣子:
public void partVisible(IWorkbenchPartReference partRef) {
// TODO Auto-generated method stub
if (partRef.getId().equals("view id taken from extensions"))
{
getWorkspacePath();
viewer.remove(TableContent.INSTANCE.getRow());
viewer.setInput(TableContent.INSTANCE.updateContentProvider());
viewer.refresh();
}
}
的路徑更新(我已經在視圖中顯示的路徑),但該表的內容是不是.... updateContentProvider包含調用需要解析所選項目中的某些文件的功能....
您是否檢查過CableContent.INSTANCE.updateContentProvider()函數是否正確執行更新? – DrKaoliN 2014-09-30 08:33:28
是的,它的確,我使用這個功能來刷新按鈕也.... – 2014-09-30 12:31:11
向我們展示如何重新加載視圖 – 2014-09-29 06:50:48
Window-> Show View-> View Name,我的意思是這個重新加載不與viewer.setInput (contentProvider) – 2014-09-29 06:52:16