0
我開發圖形插件,在打開當前文件中使用對象的變化。如果我更改打開的文件,我希望圖形會更新。 現在,我在擴展ViewPart的類中使用setFocus()方法,並在每次調用此函數時更新圖形。 這不是我想要的,我只想在資源更改時更新圖表。 我發現這個鏈接:插件開發:監聽資源在插件
This is like my question, but there is no answer
我需要把下面的代碼在我的插件?:的activator.java文件
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IResourceChangeListener listener = new IResourceChangeListener() {
public void resourceChanged(IResourceChangeEvent event) {
System.out.println("Something changed!");
}
};
workspace.addResourceChangeListener(listener);
//... some time later one ...
workspace.removeResourceChangeListener(listener);
如果我需要添加這個代碼,放在哪裏?在哪種方法把它放在activator.java文件中? 如果不是,我需要做什麼?
不要忘記在視圖關閉時也刪除監聽器。 – nitind
監聽器在這個問題中調用兩次[類似問題](http://stackoverflow.com/questions/23875766/iresourcechangelistener-being-called-twice-with-one-change)。我正在刪除方法dispose()中的監聽器(我在IWorkbenchPart的API中看到,我需要從工作臺中註銷所有監聽器)。我沒有弄清楚它爲什麼要調用兩次(我打印了這個事件,它在兩次調用中都是org.eclipse.core.internal.resources.Workspace )。在第一個調用中,它甚至可以給監聽者打電話3次! – RoG
另外,偵聽器只捕捉當前文件中的變化。但是如果我選擇另一個文件,監聽程序不會捕獲到我在另一個文件中,並且視圖中的圖形是我查看的前一個文件的圖形,除非我更改新文件並保存它,然後才能識別新文件。你知道我需要哪個聽衆嗎?非常感謝你! – RoG