在我的树查看器中进行操作后,当我调用此api IResource.refreshLocal(IResource.DEPTH_INFINITE,null); 时,它不会刷新UI。有没有其他方法可以刷新我的树?
答案 0 :(得分:2)
如果您正在执行依赖于资源更改的自定义树查看器,则刷新资源不会导致查看器中的更改:内容提供程序将不会在资源更改时重新执行。如果要刷新自定义查看器,则必须注册一个resourcechangelistener,它将调用查看器的刷新或更新方法。
但是,如果您使用带有内置资源支持的Common Navigator Framework(CNF),它应该自行刷新。
更新:CNF应配置如下(从我的工作解决方案中提取):
<extension
point="org.eclipse.ui.navigator.viewer">
<viewerContentBinding
viewerId="org.eclipse.viatra2.navigator">
<includes>
<contentExtension
pattern="org.eclipse.ui.navigator.resourceContent" />
<contentExtension
pattern="org.eclipse.ui.navigator.resources.filters.*"/>
</includes>
...
</extension>
答案 1 :(得分:1)
对于添加到Navigator中的自定义模型,请使用:
if (viewPart instanceof CommonNavigator) {
CommonViewer viewer = ((CommonNavigator) viewPart).getCommonViewer();
viewer.refresh();
}