Eclipse RCP-在编辑器区域打开一个视图(3.8/e4混合)

我正在研究一个3.8-e4混合版本(也就是说,我们使用了 Luna,但是我们使用了 申请表格 e4xmi)。所以我们基本上运行的是紧凑层。

既然如此,找到一种 e4编程方式将这些讨厌的视图堆叠到编辑器文件夹中将是非常不错的。


1)问题

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

View in editor folder

(从 这个问题偷来的照片)


2.1)可能的补丁1: 使用 plugin.xml

创建一个透视图扩展,并将每个可能的视图添加到该扩展中,使用 关系堆栈 over 相关 org.eclipse.ui.Editor。如果有太多的视图等待打开,并且项目扩展很快,那么这就有点不方便了。我还注意到通配符视图 ID 在这里不起作用。

SS of the plugin.xml with perspective extensions

如果您发现自己有时间将每个可能的视图添加到透视扩展中,那就可以了。尽管如此,如果你打开了一个没有添加到这里的视图(例如: 在不同的文件夹中打开) ,那么每个后续打开的视图都会在前一个文件夹中打开,而不是在编辑器区域(如果你没有得到进一步的解释,请查询)。


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

IPerspectiveFactory中,我们可以访问 IPageLayout,它碰巧是 org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout(e4的东西)。

现在,这个 ModeledPageLayout实现是合理的,但也没有文档和奇怪的公共 API。这个例子提供了将视图堆叠到其他相对视图之上的可能性

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

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

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


2.3)可能的解决方案3: 工作区!

我有很多观点,每个文件夹里都有很多不同的文件夹,所有的东西都被精确地放好了。

由于 Eclipse 提供了从系统各处获取所有视图 ID 的 API,因此我想按照每个透视图执行以下操作: 没有添加到特定文件夹的每个视图 ID 将被添加到编辑器区域(即编辑器文件夹、编辑器堆栈)

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

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


3)相关问题

这些将在 e4发行版中被弃用。


4) Eclipse 的 Bugzilla 上的相关 Bug:

这个最近由我自己打开的 bug 有一个带有小 SSCCE 的附件。复制它的步骤在 此评论中有描述,所以我不打算在这里复制粘贴它们。

4817 次浏览

I suggest you go with Possible fix no.3, since i think there isn't a faster method to do this.