[英]Why aren't my Resources being refreshed in my Eclipse plugin?
我有一个正在使用的自定义Eclipse插件。 它具有一个CustomerExplorer View(Part),可以有效地替换“ Project Explorer”,并且它具有多个MultiPageEditorPart,每个都有XML编辑器和Form编辑器,它们都修改了相同的配置文件。 XML编辑器是TextEditor。 表单和XML链接在一起,并且每当存在pageChange()时,它们就会彼此更新。
我的问题在于在Eclipse插件中打开的文件的外部修改。 如果我在外部编辑器中编辑文件,然后从CustomerExplorer View加载文件,则切换到XML选项卡后,我将收到以下消息:
"Resource is out of sync with the file system: '/example/example.xml'.
Press 'F5' or select File > Refresh to refresh the file.
我对使用Eclipse和通常只需按F5键,右键单击有问题的文件并选择刷新或从菜单栏中选择“文件”>“刷新”通常会解决此错误很熟悉。 但是,在这种情况下,F5不执行任何操作,“文件”>“刷新”显示为灰色,然后右键单击该文件(在我的自定义视图中),上下文菜单中不包含“刷新”。 我尝试打开“项目资源管理器”视图,在上下文菜单中可以使用“刷新”,但这无济于事。
通过阅读,我被引导理解这些资源应该通过日食进行刷新,但事实并非如此。 关于为什么的任何指示?
解决问题的另一种方法可能是跟踪对文件的更改,以在存在以下情况时更新视图:
ResourcesPlugin.getWorkspace().addResourceChangeListener(new MyResourceTracker(), IResourceChangeEvent.POST_CHANGE);
用这样的东西:
public class MyResourceTrackerimplements IResourceChangeListener {
@Override
public void resourceChanged(final IResourceChangeEvent ev) {
if (ev.getDelta() != null) {
try {
ev.getDelta().accept(new IResourceDeltaVisitor() {
@Override
public boolean visit(final IResourceDelta delta)
throws CoreException {
// TODO do something
return true;
}
});
} catch (CoreException e) {
// TODO
}
}
}
}
很难确切说明这里发生了什么,但是您可能需要显式添加操作集以刷新资源到自定义视图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.