我有一个带有视图的插件,该视图基于在选定项目中找到的不同文件创建一个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
}
}