【问题标题】:How do I open a new workbench window (with its own WorkbenchWindowAdvisor) from an existing workbench window?如何从现有工作台窗口打开一个新的工作台窗口(带有自己的 WorkbenchWindowAdvisor)?
【发布时间】:2011-08-06 23:37:05
【问题描述】:

我有一个 RCP 应用程序,需要在模态“对话框”中显示 GEF 编辑器。但是由于编辑器框架似乎与工作台窗口等的使用紧密耦合,我需要找到为什么要打开一个新的工作台窗口(带有它自己的 WorkbenchWindowAdvisor 等),以便我可以在这个工作台窗口中打开我的 GEF 编辑器。一旦我打开了这个工作台窗口,我会将工作台窗口的外壳样式设置为应用程序模式。

【问题讨论】:

    标签: java eclipse rcp


    【解决方案1】:

    我在一个客户项目中使用以下组件完成了这项工作:

    • 具有openNewWindow(String type, ...) 方法的静态类。这是您用来打开新窗口的方法。 type 参数指定所需的窗口类型。
    • 该类通过新的扩展点查找指定类型以获取ILocalWorkbenchWindowAdvisor 和初始透视ID。
    • 然后它将信息保存在全局变量中并调用IWorkbench.openWorkbenchWindow(perspectiveID, ...)
    • ApplicationWorkbenchAdvisor.createWorkbenchWindowAdvisor(...) 中,基于保存的ILocalWorkbenchWindowAdvisor 创建了一个新顾问 - 返回的顾问基本上将所有postWindowCreate(...) 等委托给ILocalWorkbenchWindowAdvisor 中的相同方法...
    • 如果没有保存ILocalWorkbenchWindowAdvisor - 这是打开第一个窗口的情况 - 查找并使用类型“mainWindow”...

    它工作得很好,让项目的所有部分都可以根据需要添加新窗口。

    【讨论】:

      【解决方案2】:

      使用命令“org.eclipse.ui.window.newWindow”打开一个新窗口。在您的 WorkbenchWindowAdvisor.preWindowOpen() 中,将 IWorkbenchWindowConfigurer 上的外壳样式设置为应用程序模式。您还可以隐藏酷栏、菜单和状态栏,使其看起来更像是一个对话框而不是一个窗口。

      【讨论】:

      • 谢谢,但是我如何为这个新打开的窗口赋予它自己的 WorkbenchWindowAdvisor,因为我真的不希望它使用主应用程序使用的 WorkbenchWindowAdvisor。我希望这个新窗口没有其父窗口(主应用程序的窗口)所具有的其他绒毛
      • 实际上使用此命令的问题是它(从调试中看到)打开了一个具有活动工作台窗口透视图的新窗口。这根本不是我想要的……我希望它用自己的 WorkbenchWindowAdvisor 打开一个新窗口,并用一个编辑器打开一个完全不同的视角。方法:final IWorkbenchWindow window = PlatformUI.getWorkbench().openWorkbenchWindow("NewPerspectiveID", null);会稍微好一点......但使用“自定义”工作台窗口顾问仍然有问题,所以我可以配置它的 shell 样式
      猜你喜欢
      • 2021-02-18
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-10
      • 2018-06-29
      • 2011-02-17
      相关资源
      最近更新 更多