使用GMF开发可视化界面编辑器(四)——Compartment

GMF视图定义含有这样的功能,可以将视图组件切割成多个Compartment,每个Compartment用于显示不同方面的信息内容,就好像是将一个屋子分割成多个隔断,每个隔断用于存放不同的物品。该功能普遍应用与一种情况,模型实体之间的类引用关系是组合关系,比如Task和Assignment实体,就可以从Task视图中切割出一个Compartment来,用于显示Assignment信息。

实现方法如下:

首先在Rounded Rectangle节点下新建一个Rectangle子节点,并为其指定如下属性信息:

compartment

这相当于在Task节点中为Assignment分配了一个视图空间,来用于显示其信息内容。接着我们为该Rectangle指定一个布局,为简化配置,这里使用了Stack Layout布局。然后,我们需要在TaskFigure节点下新建一个Child Access子节点,用于访问该Rectangle对象,将Figure属性设置成刚刚建立的AssignmentFigure。同样,需要在Canvas节点下实例化我们声明的AssignmentFigure,所不同的是这次我们要添加一个Compartment子节点,并将属性信息设置成如图所示:

compartment assignment

collapsible属性用于指定该compartment是否可折叠

有了Compartment视图之后,便可将Assignment视图添加到其中。

首先,新建一个Figure Descriptor节点,name属性设置为PersonAssignmentFigure,并为其添加Label子节点,Text属性设置为"分配到个人",Name属性同样设置成PersonAssignmentFigure(随意)。

然后在Canvas节点下面新增该Figure的实例,因为我们要显示的分配器信息只是一个标签,所以新建一个Diagram Label节点,将

Name属性设置成PersonAssignment,Figure属性设置成PersonAssignmentFigure。

视图模型创建好后,修改工具模型,因为任务分配器的种类可能会有很多,为了区分于其他工具标签,把他们放到另外一个工具组里,在Palette节点下面新建一个Tool Group节点,将Title属性设置成"任务分配器",并设置Collapsible属性为true,表示该工具组是可折叠的。然后,在工具组下面新建一个Creation Tool子节点,将Title属性和Description属性设置为"分配到个人"。

最后,完成模型的映射处理,操作如下:

首先,在Node Mapping<Task/Task>节点下面新增一个Compartment Mappping子节点,并将其Compartment属性设置成视图模型所声明的Compartment Assignment,然后,在Node Mapping<Task/Task>节点下面新增一个Child Reference子节点,并设置Containment Feature属性为Task.assignment:Assignment,因为Task和Assignment之间是组合引用关系,所以要设置的属性为Containment Feature。再将Compartment属性设置成刚刚建立的Compartment Mapping节点。最后为Child Reference节点添加Node Mapping子节点,并指定如下属性信息:

compartment mapping

至此Compartment映射已经建立,剩下来所需要做的就是将分配器信息添加到该Compartment中去

在Node Mapping<PersonAssignment/PersonAssignment>节点下面,新增一个Label Mapping子节点,将其Diagram Label属性设置成视图模型所声明的Diagram Label PersonAssignment,并修改Read Only属性为true,表明我们的标签是用户不可修改的。

映射模型建立好之后,重新生成generator模型和项目代码,并启动工程,界面运行如图所示:

process overview 4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值