我正在使用一个3.8-e4混合版本(即我们有Luna依赖,但我们没有使用Application.e4xmi)。因此,我们基本上运行的是紧凑层。
话虽如此,找到一种e4编程方法来将这些麻烦的视图堆叠到编辑器文件夹中会很好。
1.) 问题
我想在编辑区域放置一个通用视图文件夹,以便于在运行时打开的每个视图都将在那里打开。
(图片来源于这个问题)
2.1) 可能的解决方法1:使用plugin.xml
创建透视图扩展,并将每个可能的视图添加到该扩展中,具有相对于org.eclipse.ui.editors的关系堆栈。如果你有太多等待打开的视图并且项目快速扩展,这可能有点不方便。我还注意到通配符视图ID在这里不起作用。
如果你有时间将每个可能的视图添加到透视图扩展中,那么这将起作用。尽管如此,如果你打开一个未在此处添加的视图(即在不同的文件夹中打开),则每个随后打开的视图都将在以前的文件夹中打开,而不是在编辑器区域中打开(如果你不理解请进一步询问)。
2.2) 可能的解决方法2:使用透视图工厂中的代码
在IPerspectiveFactory中,我们可以访问IPageLayout,它恰好是org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout(e4 stuff)。现在,这个ModeledPageLayout实现是合理的,但没有文档和奇怪的公共APIs。这个给了我们在任何其他相对位置上堆叠视图的可能性。
modeledPageLayout.stackView("newView0", IPageLayout.ID_EDITOR_AREA);
这将是2.1的编程版本。同样的问题也出现在这里。如果视图在其他地方打开,上面的代码将变得无用。
有趣的是,stackView
API不支持通配符(而其他API如addView
则支持)。
2.3) 可能的修复方法之三:变通方法!
我有很多视角,并且每个视角中都有很多不同的文件夹。一切都被精确地放置了。
由于Eclipse提供了从系统各处获取所有视图ID的API,因此我想要按照每个视角的方式执行以下操作:每个未添加到特定文件夹中的视图ID将附加到编辑器区域(即编辑器文件夹、编辑器堆栈)。
除非有人提供更方便和节省时间的解决方案,否则这将是我的最后一招。
请记住,e4编程式替代方案更加灵活!
3.) 相关问题
- Eclipse RCP - 在编辑器文件夹中打开视图
- Eclipse RCP - 将视图叠加到编辑器区域中
- 具有最初不可见视图的自定义Eclipse透视图,叠加到编辑器区域中
- Google问题,Lars的答案
这些在e4版本中将被弃用。
4.) Eclipse Bugzilla上的相关错误:
我最近创建的这个bug有一个包含小SSCCE的附件。重现此问题的步骤在此注释中描述,因此我不会在此处复制粘贴它们。