利用GMF构建双击节点展开子视图的图形化建模环境
来源:互联网 发布:c语言中break 编辑:程序博客网 时间:2024/05/17 12:23
GMF
能够根据基于Ecore
的元模型构建图形化建模环境。
在图形化建模中,这样一种需求是非常必要的:双击一个模型,展开一个新视图,在这个视图中可以构建由模型的内部元素描述的内部模型。下面就介绍下使用GMF
中实现一功能的图形化建模环境的方法。
- 第一步,构建基于
Ecore
的领域模型
下图是我们定义的领域模型,其中根节点包含CapabilityViewport
,ServiceViewport
,OrganizationTypeViewport
和SystemViewport
四个元素,它们是顶视图中的建模元素,又分别包含Capability
,Service
,PersonRoleType
和System
。在构建的图形化建模环境中,希望首先是由CapabilityViewport
,ServiceViewport
,OrganizationTypeViewport
和SystemViewport
四个元素作为建模元素构建的顶视图。当创建某个元素例如CapabilityViewport
的一个实例后,在视图上点击该实例,就打开一个新视图,该新视图的建模元素为CapabilityViewport
包含的元素,即Capability
,用以进一步描述CapabilityViewport
内部的信息。
- 第二步 生成包含所有必要元素的
gmfgraph
和gmftool
文件
选择根节点为Diagram Element
,生成一对.gmfgraph
(Graphical Def Model
)和.gmftool
文件(Tooling Def Model
),包含所有必要元素(向导将自动选择)的图元和工具。
- 第三步,生成
gmfmap
文件
根据Ecore
领域模型和第二步的两个文件生成.gmfmap
(Mapping Model
,映射模型)文件,选择在顶层视图中显示的元素和它们对应的图元和工具。
- 第四步,创建第三步创建的
gmfmap
文件对应的gmfgen
文件
为上一步生成的映射模型文件创建.gmfgen
(Diagram Editor Gen Model
)文件。因为是最顶层视图,为了作为图形化建模环境启动视图,勾选Transform
按钮上的RCP
check
项。选择Gen Editor Generator
节点下的第一个叫做Gen Plugin
的子节点,为视图设置一个唯一的ID
和Name
。
- 第五步,创建子视图的
gmfmap
文件
为各个子视图创建映射模型文件,选择点击后会打开新视图的元素,这里为CapabilityViewpoint
, SystemViewpoint
, ServiceViewpoint
和OrganizationType
。点击项目指示器上的Combine
按钮,输入子视图名称,选择领域模型中的各类,依次创建映射模型文件。本例中要创建4个子映射模型文件,分别命名为capabilityviewpoint.gmfmap
,systemviewpoint.gmfmap
,serviceviewpoint.gmfmap
和organizationtypeviewpoint.gmfmap
。
- 第六步,为各个子映射模型文件创建相应的
gmfgen
模型
在Package Explore
中右键点击各个子视图的gmfmap
模型,在右键菜单中选择Create generator model...
,打开gmfgen
模型向导,采用默认设置,为各个子映射模型文件生成相应的gmfgen
模型。
打开各个子gmfgen
模型,选择Gen Editor Generator
节点,确保Diagram File Extension
和Domain File Extension
和根gmfgen
模型相同。并确保ModelID
为唯一的值,与其他gmfgen
模型区分。修改Package Name Prefix
值以反映视图。
- 第七步,修改子
gmfgen
模型将生成的类名
选择gmfgen
模型的Gen Editor Generator
节点下的子节点Gen Diagram
,除了那些DEPRECATED
的项,其余涉及Class Name
的项都要修改为以当前gmfgen
模型所对应的模型类名。例如在一个systemviewpoint.gmfgen
中,将Edit Part Factory Class Name
属性值由自动生成的Executabledm2EditPartFactory
修改为SystemViewpointEditPartFactory
。
- 第八步,关联子视图和顶视图
选择顶视图的gmfmap
模型,选择顶节点,右键点击,从右键菜单中选择Load Resource...
将各子节点的gmfmap
文件加载进来。选择双击会展开新视图的Top Node Reference
节点,选择其子节点,在其Misc
类下的Related Diagrams
赋值。
由于无法区分各个Canvas Mapping
,可以先尝试复制,然后通过文本打开,查看所指定的是不是指定的视图。一般应该是和在根gmfmap
中各子gmfmap模型的顺序一致。
- 第九步,重新生成顶层
gmfmap
对应的gmfgen
模型。
定位到gmfgen
模型的各个双击会创建新视图的Gen Top Level Node
,选择其中的Open Diagram Behaviour
元素,没有则创建一个。分别设置它的Diagram Kind
,EditorID
和Edit Policy Class Name
。其中Diagram Kind
属性的值为对应的子gmfgen
文件中的Gen Editor Generator
下的Model ID
属性的值。EditorID
属性的值为对应的子gmfgen
文件中的Gen Editor Generator
节点下的Gen Diagram
节点下的Gen Editor View
节点的ID
属性。修改Edit Policy Class Name
为OpenXXXDiagramEditPolicy
以彼此区分。
- 第十步,生成代码,进行运行配置
参照第四步,为每个子gmfgen模型的Gen Plugin
节点指定唯一的ID
和Name
属性。由各个gmfgen
模型生成Diagram代码,由genmodel
生成模型代码、编译代码和编辑器代码。进行运行配置。
运行后,创建Genenal项目,在项目节点的右键菜单中选择New->Example
。可见除了生成顶层视图,对于每一个子视图,也生成了单独的建模环境。
选择Executabledm2 Diagram
创建一个项目,在其中创建SystemViewport
, OrganizationTypeViewpoint
等,双击就可以打开子视图。
由于没有调整gmfmap
因此,Tool
和创建的元素并不对应,这要通过后续调整gmfmap
来解决。
参考文献
http://wiki.eclipse.org/Diagram_Partitioning
- 利用GMF构建双击节点展开子视图的图形化建模环境
- 双击treeView的节点时使不展开不折叠子节点
- 双击treeView的节点时使不展开不折叠子节点
- GMF使用自定义图像搭建图形化建模工具
- GMF 双击图形打开新窗口编辑
- visjs关系图-双击折叠展开子节点(隐藏显示子节点)以及位置自定义
- TreeView 双击不展开节点
- CTreeView CTreectrl 双击不展开或收缩节点的办法。
- Ztree 展开某节点下的所有的子节点
- CTreeCtrl展开、收起子节点下所有的节点
- CTreeCtrl展开、收起子节点下所有的节点
- CTreeCtrl展开、收起子节点下所有的节点
- TreeView双击节点而不改变节点的折叠/展开状态
- flex tree的展开,关闭,添加、删除子节点
- 如何在C#的TreeView控件中双击节点而不改变节点的展开/折叠状态
- (转)EasyUI组件tree只展开根节点下的一级子节点或二级子节点
- easui tree载入时自动展开无子节点的节点
- TreeList的父节点展开和收缩子节点时,图标为“+”“—”
- spring学习笔记(点滴记录)
- crontab 执行脚本***.sh 方法
- JOS 系统调用的过程
- Merge k Sorted Lists
- linux 间拷贝文件
- 利用GMF构建双击节点展开子视图的图形化建模环境
- 移动互联网行业
- win7配置ftp服务
- linux下管理oracle表空间
- linux(centos) SPAM 问题
- 软件自动测试架构设计
- feof 函数在末尾的问题
- 异常处理
- java-EnumMap、IdentityHashMap、WeakHashMap源码分析