Link Constraints app
目前为止,工程运行一个Topic结点给本身连线,显然是没有意义的。接下来经过使用约束,避免这种现象。 工具
一、打开mindmap.gmfmap,找到目前惟一的Link Mapping结点,右击,选择New Child > Link Constraints,而后右击这个Link Constraints,选择New Child > Source End Constraint,Language属性默认为ocl,设置Body属性为self <> oppositeEnd,以下图所示: spa
二、从新设成mindmap.gmfgen和diagram代码,运行一下,能够发现不能够给Topic结点本身连线了。 .net
Another Connection code
领域模型中的Relationship元素用来指明Topic元素之间若干可能的关系。接下来将要实现支持画出这个连线。这个例子将会更彻底地说明GMF中的Link Mapping可用的属性。 orm
Graphical Definition ip
三、打开mindmap.gmfgraph,右击Figure Gallery,选择New Child > Figure Descriptor,命名为DashedLineOpenArrow。而后右击新建的Figure Descriptor,选择New Child > Polyline Connection,将其命名为DashedLineOpenArrow,将Line Kind改为LINE_DASH。以后右击Figure Gallery,添加Polyline Decoration,命名为OpenArrow。默认的Decoration是一个打开的箭头,而Polygon Decoration是一个填充的三角形。最后将DashedLineOpenArrow的Target Decoration设置为OpenArrow: get
四、如今定义好了图形,为Canvas建立一个Connection,命名为RelationshipLink,设置Figure属性为DashedLineOpenArrow: 源码
五、咱们但愿subtopics结点的连线没有箭头,因此删除Figure Gallery中的TopicsSubtopicsTargetDecoration元素。 it
Tooling Definition
六、打开mindmap.gmftool文件,在Palette下建立一个Tool Group,命名为Links,并在这个Tool Group中添加一个Creation Tool,命名为Relationship,将TopicSubtopics工具拖到Links分组中,名重命名为Subtopic。最后将mindmap工具组的名称改成Nodes。将两个Tool Group的Collapsible属性都设置为true。
Mapping Definition
因为以前修改了Tool模型,须要在mapping definition中更新已存在的工具选择。能够右击mindmap.gmfmap,选择Validate,以检查出错的地方。
七、打开mindmap.gmfmap文件,建立一个Link Mapping,属性设置以下:
在上面的属性列表中,Domain meta information中的Element属性表示这个Link所表明的的领域中的元素。而在上一个Link中,这个属性是空的,这种情形下,Link的目标元素是由添加到源元素一列参照中的元素表示的。而在上面的属性设置中,Link在领域中是由它本身的类表示的,所以在Link映射中须要更多的信息。领域模型的Relationship类,是包含在Map元素的一列参照中。
八、此时,从新生成mindmap.gmfgen文件和diagram代码(能够借助GMF Dashboard),运行,效果以下图:
咱们如今须要作的事,当建立Link的时候,为其初始化适当的类型。咱们将会对每个使用分别的工具,也能够选择使用清楚的可视化。如今,咱们将简单的给Link添加标签,用来标示类型。
Feature Initializers
在咱们graphical definition中,咱们将为每个类型建立一个图像和相应的连线,一样在tooling definition中也会为每一个类型建立工具。
另外一个初始化时设置Relationship的标签属性,这样便于区分类型。
Graphical Definition
九、打开mindmap.gmfgraphy,在Figure Gallery添加一个Figure Descriptor和一个Label,将它们都命名为DashedLineLabelFigure,而后右击Canvas,添加一个新的Diagram Label,命名为RelationshipLabel,并将Figure属性选择为DashedLineLabelFigure,并将Element Icon属性设置为false:
十、打开mindmap.gmftool文件,将Relationship工具重命名为Dependency(顺便把Description属性改了),而后使用复制粘贴添加两个工具Includes和Extends:
Mapping Definition
十一、打开mindmap.gmfmap,将Relationship Link映射的工具改为Extends。
十二、为这个Link Mapping添加Feature Seq Initializer和Constraint,添加相关内容,设置以下:
实际上,对一个领域模型建立多个映射的时候,都要添加Constraint。
1三、最后为这个Link Mapping添加Feature Label Mapping:
1四、而后复制粘贴这个Link Mapping两次,将相关属性改为dependency和includes。注意修改相应Link Mapping的Tool属性。
1五、此时,若从新生成mindmap.gmfgen和diagram代码,运行效果以下图:
源码: http://www.oschina.net/code/snippet_164134_19253
双子座@开源中国:http://my.oschina.net/plumsoft