【发布时间】:2012-01-19 16:30:10
【问题描述】:
我没有找到任何以编程方式最小化/最大化的功能。 当所有编辑器都关闭时,我想最小化我的 editorArea。 有什么建议吗?
提前致谢。
【问题讨论】:
我没有找到任何以编程方式最小化/最大化的功能。 当所有编辑器都关闭时,我想最小化我的 editorArea。 有什么建议吗?
提前致谢。
【问题讨论】:
我找到了一种解决方法来最小化 editorArea。这不是很好,但它正在做这项工作。
WorkbenchPage page = (WorkbenchPage)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IEditorReference[] editorReferences = page.getEditorReferences();
if(editorReferences.length==0){
page.getActivePerspective().setEditorAreaState(IStackPresentationSite.STATE_MINIMIZED);
}
我真的不喜欢这种演员阵容,但我无法获得具体课程。 有什么改进的建议吗?
【讨论】:
getActivePage() 返回的IWorkbenchPage 是WorkbenchPage 的一个实例。我意识到不太可能有人会费心实现IWorkbenchPage 而不扩展WorkbenchPage,但这是可能的。 (当然,除非您构建的 RCP 应用程序被限制在可以做出此保证的程度。)
setEditorAreaState() 是在Perspective 类中定义的,它也是internal,所以你无法绕过这个。
您可以使用IWorkbenchPage.setEditorAreaVisible() 显示/隐藏编辑器区域。您可以通过在窗口中添加IPerspectiveListener 来做到这一点。
public void perspectiveChanged(IWorkbenchPage page,
IPerspectiveDescriptor perspective, String changeId) {
if (changeId == IWorkbenchPage.CHANGE_EDITOR_CLOSE) {
if (page.isEditorAreaVisible() && page.getEditorReferences().length == 0)
page.setEditorAreaVisible(false);
}
}
虽然也可以使用页面的setPartState() 方法来最小化编辑器区域,但在关闭所有编辑器后无法做到这一点。即使最后一个编辑器引用在关闭编辑器事件处理程序中可用,对 ILayoutContainer 的引用已被删除,因此不能用于更改状态。
【讨论】:
我在 bugs.eclipse.com 上发现了这个错误:https://bugs.eclipse.org/bugs/show_bug.cgi?id=29840 但我找不到 ZoomManagement。
【讨论】: