重新加载Eclipse视图

时间:2014-09-29 05:55:54

标签: java plugins eclipse-plugin eclipse-rcp

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

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

2 个答案:

答案 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包含需要解析所选项目中某些文件的函数的调用。 ..