IResource.refreshLocal(IResource.DEPTH_INFINITE,null);不爽快

时间:2011-07-15 06:22:19

标签: eclipse eclipse-plugin

在我的树查看器中进行操作后,当我调用此api IResource.refreshLocal(IResource.DEPTH_INFINITE,null); 时,它不会刷新UI。有没有其他方法可以刷新我的树?

2 个答案:

答案 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();
}