当我们需要显示一个视图时,一般是通过调用IWorkbenchWindow中的getActivePage().showView方法, 但我们有一个问题,就是一般在透视图中恢复视图的时候直接恢复到悬停状态而不是占位的状态,经过研究可以采用如下的方式实现恢复到占位方式:
IWorkbenchPage page = Activator.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage();
IWorkbenchPartReference ref = null;
IViewReference[] vrs = page.getViewReferences();
for (int i = 0; i < vrs.length; i++) {
if (vrs[i].getId().equals(viewId)) {
ref = vrs[i];
break;
}
}
if (ref != null) {
page.setPartState(ref, state);
}
关于State值的说明
WorkbenchPage.STATE_RESTORED : 还原 WorkbenchPage.STATE_MINIMIZED : 最小化 WorkbenchPage.STATE_MAXIMIZED : 最大化