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

问题

我正在研究一种3.8-e4混合(即我们有Luna依赖,但是我们还没有使用应用程序.4xmi)。所以我们基本上运行了紧凑的图层。

话虽如此,找到一种e4编程方法将这些令人讨厌的视图堆叠到编辑器文件夹上会很不错。

1.)问题

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

View in editor folder
(图片来自this question)

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

创建透视扩展,并将每个可能的视图添加到该扩展,使用关系stackoverrelative org.eclipse.ui.editorss。如果你有太多的视图要打开,并且项目可以快速扩展,那么这有点不方便。我还注意到通配符视图ID在这里不起作用。

SS of the plugin.xml with perspective extensions

如果你发现自己有时间将每个可能的视图添加到透视图扩展中,那就可以了。虽然,如果你打开一个未在此处添加的视图(即:在另一个文件夹中打开),则每个后续打开的视图将在上一个文件夹中打开,而不是在编辑器区域中打开(如果不是,请查询进一步的说明)得到它)。

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

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

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

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

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

有趣的是,stackViewAPI不支持通配符(而其他如addViewdo)。

2.3)可能的解决方案3:解决方法yaaay!

我有很多观点,每个观点都有很多不同的文件夹。一切都准确无误。

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

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

请记住,e4程序化替代方案更灵活!

3.)相关问题

  • Eclipse RCP - 在Editor文件夹中打开视图
  • Eclipse RCP - 使用编辑器区域堆叠视图?
  • 自定义Eclipse透视图,最初的隐藏视图堆叠到编辑器区域
  • 谷歌问题,Lars回答

这些将在e4版本中弃用。

4.)Eclipse的Bugzilla上的相关错误:

This recent bug opened by myself具有带小SSCCE的附件。重现这一步骤的步骤在this comment中有描述,所以我不打算在这里复制粘贴它们。


#1 热门回答(1 赞)

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