重新加载Eclipse视图
我有一个插件,该视图根据在所选项目中找到的不同文件(该工作空间有多个项目加载)创建一个tableviewer。我的问题是,当我尝试重新加载视图时,信息与Eclipse启动后第一次运行时保持不变。重新加载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
}
}
仍然不起作用,似乎一旦视图从窗口选项加载,它只使用当时选择的项目..... – 2014-09-29 08:41:12
你将不得不找出新的选择是在部分可见 – 2014-09-29 08:41:44
你是什么意思? :) – 2014-09-29 09:01:18
这是我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包含调用需要解析所选项目中的某些文件的功能....
您是否检查过CableContent.INSTANCE.updateContentProvider()函数是否正确执行更新? – DrKaoliN 2014-09-30 08:33:28
是的,它的确,我使用这个功能来刷新按钮也.... – 2014-09-30 12:31:11
向我们展示如何重新加载视图 – 2014-09-29 06:50:48
Window-> Show View-> View Name,我的意思是这个重新加载不与viewer.setInput (contentProvider) – 2014-09-29 06:52:16