关闭视图一般是将视图隐藏(hide)起来。直接看代码:
1.关闭当前(Active)视图
public class CloseAction extends Action
{
public CloseAction()
{
setText("Close");
setActionDefinitionId("org.eclipse.ui.file.close");//通常建议设置
}
/* (non-Javadoc)
* @see org.eclipse.jface.action.Action#run()
*/
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"); //$NON-NLS-1$
}
/* (non-Javadoc)
* @see org.eclipse.jface.action.Action#run()
*/
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);
}
}
}