我有一个带有视图的插件,该视图根据所选项目中找到的不同文件创建一个tableviewer(工作区有多个项目已加载)。我的问题是,当我尝试重新加载视图时,信息仍然与Eclipse启动后的第一次运行时相同。
每次重新加载视图时,我该怎么做才能重新加载内容提供程序?
答案 0 :(得分:1)
要了解哪个部分处于有效状态,您需要使用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
}
}
答案 1 :(得分:0)
这是我的partVisible看起来的样子:
public void partVisible(IWorkbenchPartReference partRef) {
// TODO Auto-generated method stub
if (partRef.getId().equals("view id taken from extensions"))
{
getWorkspacePath();
viewer.remove(TableContent.INSTANCE.getRow());
viewer.setInput(TableContent.INSTANCE.updateContentProvider());
viewer.refresh();
}
}
路径更新(我在视图中显示了路径),但表的内容不是.... updateContentProvider包含需要解析所选项目中某些文件的函数的调用。 ..