【发布时间】:2011-08-06 23:37:05
【问题描述】:
我有一个 RCP 应用程序,需要在模态“对话框”中显示 GEF 编辑器。但是由于编辑器框架似乎与工作台窗口等的使用紧密耦合,我需要找到为什么要打开一个新的工作台窗口(带有它自己的 WorkbenchWindowAdvisor 等),以便我可以在这个工作台窗口中打开我的 GEF 编辑器。一旦我打开了这个工作台窗口,我会将工作台窗口的外壳样式设置为应用程序模式。
【问题讨论】:
我有一个 RCP 应用程序,需要在模态“对话框”中显示 GEF 编辑器。但是由于编辑器框架似乎与工作台窗口等的使用紧密耦合,我需要找到为什么要打开一个新的工作台窗口(带有它自己的 WorkbenchWindowAdvisor 等),以便我可以在这个工作台窗口中打开我的 GEF 编辑器。一旦我打开了这个工作台窗口,我会将工作台窗口的外壳样式设置为应用程序模式。
【问题讨论】:
我在一个客户项目中使用以下组件完成了这项工作:
openNewWindow(String type, ...) 方法的静态类。这是您用来打开新窗口的方法。 type 参数指定所需的窗口类型。ILocalWorkbenchWindowAdvisor 和初始透视ID。IWorkbench.openWorkbenchWindow(perspectiveID, ...)
ApplicationWorkbenchAdvisor.createWorkbenchWindowAdvisor(...) 中,基于保存的ILocalWorkbenchWindowAdvisor 创建了一个新顾问 - 返回的顾问基本上将所有postWindowCreate(...) 等委托给ILocalWorkbenchWindowAdvisor 中的相同方法...ILocalWorkbenchWindowAdvisor - 这是打开第一个窗口的情况 - 查找并使用类型“mainWindow”...它工作得很好,让项目的所有部分都可以根据需要添加新窗口。
【讨论】:
使用命令“org.eclipse.ui.window.newWindow”打开一个新窗口。在您的 WorkbenchWindowAdvisor.preWindowOpen() 中,将 IWorkbenchWindowConfigurer 上的外壳样式设置为应用程序模式。您还可以隐藏酷栏、菜单和状态栏,使其看起来更像是一个对话框而不是一个窗口。
【讨论】: