在编辑器区域打开视图(3.8 / e4混合)

我正在开发一个3.8-e4混合(即我们有Luna依赖,但我们不使用Application.e4xmi)。 所以我们基本上运行紧凑层。

据说,最好找到一种e4编程方式将这些讨厌的视图堆叠到编辑器文件夹中。


1.)问题

我想在编辑器区域放置一个通用视图文件夹,以便在运行时打开的每个视图都将在那里打开。

(图片从这个问题被盗)


2.1)可能的修复方法1:使用plugin.xml

创建透视扩展,并将每个可能的视图添加到该扩展中,并将关系堆栈放在相对org.eclipse.ui.editorss上。 如果你有太多的视图需要打开,并且项目扩展很快,这会有点不方便。 我还注意到通配符视图ID在这里不起作用。

plugin.xml的SS,带有透视图扩展

如果您发现自己有时间将各个可能的视图添加到透视图扩展中,那就行得通了。 虽然,如果你打开一个未添加的视图(即:在另一个文件夹中打开),那么每个后续打开的视图将在前一个文件夹中打开,而不在编辑器区域中打开(如果不得到它)。


2.2)可能的修复方法2:在透视工厂中使用代码

IPerspectiveFactory ,我们可以访问IPageLayout ,这恰好是org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout (e4 stuff)。

现在,这个ModeledPageLayout实现是合理的,但也没有文档和奇怪的公共API。 这个可以将视图叠加在任何其他亲属身上

modeledPageLayout.stackView("newView0", IPageLayout.ID_EDITOR_AREA);

这将是2.1的程序化版本。 此外,这里也出现同样的问题。 如果某个视图在其他地方打开,则上面的代码变得毫无用处。

有趣的是, stackView API不支持通配符(而其他的如addView )。


2.3)可能的修复方法3:变通方法yaaay!

我有很多观点,并且每一个都有很多不同的文件夹。 一切都精确放置。

由于Eclipse提供的API可以从系统的任何地方获取所有视图ID,我希望按照下面的视角进行操作:未添加到特定文件夹的每个视图ID都将被追加到编辑器区域(即编辑器文件夹,编辑堆栈)。

这将是我的最后手段,除非有人提供更方便,更省时的解决方案。

请记住,e4编程替代方案更加灵活!


3.)相关问题

  • Eclipse RCP - 在编辑器文件夹中打开视图
  • Eclipse RCP - 使用编辑器区域堆叠视图?
  • 自定义Eclipse透视图,最初以不可见视图堆叠到编辑器区域
  • 谷歌的问题,拉尔斯回答
  • 这些将在e4版本中被弃用。


    4.)Eclipse Bugzilla的相关Bug:

    我自己打开的这个最近的错误与一个小的SSCCE有关。 在这个评论中描述了重现这一点的步骤,所以我不打算在这里复制粘贴它们。


    我建议你去可能的修复3号,因为我认为没有一个更快的方法来做到这一点。

    链接地址: http://www.djcxy.com/p/18689.html

    上一篇: Open a View in the Editor Area (3.8/e4 hybrid)

    下一篇: Displaying result in a custom view