Java Eclipse RCP ProjectExplorer.refreshLocal()不适用于添加的资源

Java Eclipse RCP ProjectExplorer.refreshLocal()不适用于添加的资源,java,resources,eclipse-rcp,refresh,Java,Resources,Eclipse Rcp,Refresh,我的RCP应用程序通过CommonNavigator向ProjectExplorer视图提供内容。它提供了一个节点,其子节点是存在于项目内文件系统中不同位置的资源,类似于JDT或其他工具包提供了一个容器来访问库资源等 当eclipse外部的程序在项目内部的文件系统上创建文件时,我使用IResourceChangeListener检测并调用 refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor()) 在资源上,该文件将自动显

我的RCP应用程序通过
CommonNavigator
ProjectExplorer
视图提供内容。它提供了一个节点,其子节点是存在于项目内文件系统中不同位置的资源,类似于JDT或其他工具包提供了一个容器来访问库资源等

当eclipse外部的程序在项目内部的文件系统上创建文件时,我使用
IResourceChangeListener
检测并调用

refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor())
在资源上,该文件将自动显示在
ProjectExplorer
的文件树中,位于与其在文件系统中的实际位置相对应的节点中。但是它不会出现在我为
CommonNavigator
贡献的自定义节点下,除非我从UI手动刷新树

通过获取对
ProjectExplorer
视图的引用,并在其
CommonViewer
实例上调用
refresh()
,我多少解决了这个问题。这样做的问题是,整个树都会刷新,从而折叠所有节点。但当它们展开时,新文件会根据需要显示在我的自定义节点中。我尝试在
CommonViewer
上调用
refresh(theResource)
,但没有效果

当从eclipse外部创建文件时,是否有任何方法可以使文件自动添加到我的自定义节点,就像添加到文件树中的常规位置一样

更新:我实现了一个
ICommonviewerMapper
,我在查看器上设置它,以便它报告模型对象到
项的映射。使用这个类,我调用
viewer.refresh(item)
,其中
item
是查看者向映射器指示的
项映射到我正在更新的模型对象。在我的例子中,模型对象是一个
IContainer
实例,
ContentProvider
将IFile实例添加为子实例(它是在eclipse之外创建的文件之一,我希望查看器显示)

因此,我使用
元素调用
viewer.refresh()
,该元素是
ContentProvider
将创建的文件作为子文件添加到的容器,但查看器仍然不采取任何操作。在查看器上调用
refresh
后,不会调用
ContentProvider
getChildren()
方法。查看器似乎忽略了调用
refresh
,我知道查看器中存在一个树项