You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Eclipse e4中能否通过fragment.e4xmi定义透视图与透视图栈

能否在fragment.e4xmi中定义透视图栈与透视图

完全可以直接通过fragment.e4xmi完成透视图栈(Perspective Stack)、透视图(Perspective)的定义,不需要依赖plugin.xml扩展点+IPerspectiveFactory的Eclipse 3.x兼容方案。操作时出现的确定按钮置灰问题,本质是没有选对正确的模型挂载特征。

确定按钮置灰的根本原因

E4应用模型对组件的挂载层级有严格的类型校验,不是任意容器的children属性都能接收Perspective或Perspective Stack类型的节点:

  • MPerspectiveStack仅允许作为MWindow(纯E4应用默认主窗口为TrimmedWindow)的直接子节点,不能挂载到Part、Composite、Dialog这类普通UI容器下
  • MPerspective仅允许作为MPerspectiveStack的直接子节点,不能挂载到其他类型容器下
    选择Feature Name时,如果选中的是普通容器(比如CompositePart、Dialog)下属的children属性,这类属性的允许子元素类型不包含Perspective、Perspective Stack,编辑器就会自动把确定按钮置灰拦截操作。
    查找特性名时确定按钮置灰

同名属性重复出现的原因

弹窗中重复列出的children/handlers/menus不是全局通用属性,是每类支持该属性的模型元素各自持有的类型约束不同的同名字段:
比如CompositePart的children仅接收控件类子节点(Part、布局容器、原生控件等),Dialog的children允许的子元素范围和CompositePart基本一致;只有MTrimmedWindow、MWindow节点下的children属性,才支持挂载PerspectiveStack类型的节点。
早期版本的E4模型编辑器没有对不同父节点下的同名属性做明显的范围提示,才会让人觉得选不同分类下的同名属性没有差异。
选择不同位置的children项无差异

fragment.e4xmi添加透视图的正确步骤

  • 新建Model Fragment后,点击Feature Name旁的*Find...*按钮
  • 在弹窗中找到TrimmedWindow(或自定义主窗口对应的MWindow类型节点)分类,选中它下属的children属性,此时确定按钮会恢复可点击状态
  • 在该Model Fragment的子元素列表中右键新建Perspective Stack节点
  • 再新建一个子级Model Fragment,将它的父元素指向刚创建的Perspective Stack,Feature Name选择Perspective Stack下属的children属性,即可正常添加Perspective节点
  • 给最外层绑定主窗口的Model Fragment配置正确的Parent Element ID,纯E4应用默认主窗口ID为org.eclipse.e4.window.main,也可以通过模型匹配表达式定位到需要挂载透视图栈的目标窗口。

内容的提问来源于stack exchange,提问作者Sadık

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 09:06:26