我有一个带有视图的插件,该视图基于在选定项目中找到的不同文件创建一个tableviewer(工作空间已加载多个项目)。我的问题是,当我尝试重新加载视图时,信息仍然与Eclipse启动后的第一次运行相同。

每次重新加载视图时,我应该怎么做才能重新加载内容提供者?

最佳答案

要了解哪个部分处于活动状态,您需要使用IPartListener2。使您的ViewPart实现为IPartListener2

createPartControl中设置侦听器:

@Override
public void createPartControl(final Composite parent)
{
  ....

  getSite().getWorkbenchWindow().getPartService().addPartListener(this);
}


删除dispose中的侦听器:

@Override
public void dispose()
{
  super.dispose();

  ...

  getSite().getWorkbenchWindow().getPartService().removePartListener(this);
}


您将必须实现IPartListener的各种方法,其中大多数不需要执行任何操作,当显示视图(或任何其他部分)时,将调用partVisible方法:

@Override
public void partVisible(final IWorkbenchPartReference ref)
{
  if (ref.getId().equals("your view id"))
   {
     // Your view has become visible ... add code here to update the table
   }
}

07-26 04:52
查看更多