1.关闭当前(Active)视图
public class CloseAction extends Action
{
public CloseAction()
{
setText("Close");
setActionDefinitionId("org.eclipse.ui.file.close");//通常建议设置
}
public void run()
{
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
System.out.println(page.getActivePart().getTitle());
IWorkbenchPart part = page.getActivePart();//获取的当前IWorkbenchPart可能是IEditorPart(编辑器),也可能是IViewPart(视图)。所以需要在下面做一个instanceof判断。当然IWorkbenchPage中也提供了直接获取当前IEditorPart的方法。
if (part instanceof IViewPart)
page.hideView((IViewPart)part);
}
}
2.关闭所有视图
关闭所有视图是先获取所有视图的一个IViewReference数组来做的。也是将ViewPart隐藏(hide)
public class CloseAllAction extends Action
{
public CloseAllAction()
{
setText("Close All");
setActionDefinitionId("org.eclipse.ui.file.closeAll");
}
public void run()
{
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IViewReference[] refs = page.getViewReferences();//不是直接获取ViewPart,实际上IWorkbenchPage中也确实提供了获取所有视图的方法,但这里获取的是IViewPeference。
for (int i = 0; i < refs.length; i++)
{
IWorkbenchPart part = refs[i].getPart(false);//获取视图
if (part instanceof IViewPart)
page.hideView((IViewPart)part);
}
}
}