图元开发

来源:互联网 发布:ubuntu安装tomcat8 编辑:程序博客网 时间:2024/05/16 11:21

 图元开发


定义板型
IDE内部机制使用了UML2的模型来表达图元模型。有些图元需要在此基础上扩展、保存额外的信息,我们通过给图元定制Stereotype,扩展图元模型,达到存储信息的目的
以ReceiveEvent图元为例:该图元用于对Event事件进行解码,需要保存解码的Event事件信息,所以我们要对它的原模型进行扩展
1、定义图元的Stereotype
 在xx.uml.xx.type插件的xx.profile.uml文件中定义,具体步骤如下
? 定义板型类。ReceiveEvent图元的原模型是State,为了达到我们的要求,继承了xx_state_event和xx_event_property两个模型。如下图
 
 xx_state_event模型是为后期扩展做准备的,暂时无用
 
 xx_event_property模型有四个属性,我们主要用前面三个Event的name、type、variable
? 定义Stereotype的继承关系。
 
? 定义stereotype生成的Ecore模型类。
 
 注意1:正常情况下应该使用下图的方式自动生成。但是所有模型的URI地址都会重新 生成,导致以前做的图元,都用不了。所以这里要手动创建
 
 注意2:stereotype的命名
   名称+“::”+  名称
  如:xx::receive_event
定义ElementType
1、 扩展elementTypes扩展点
? 在xx.uml.xx.type插件中扩展
  扩展点:org.eclipse.gmf.runtime.emf.type.core.elementTypes
  定义如下图所示结构:图元的原模型、图元标识(semantichHint)、stereoTypes
  
? specializationType节点介绍。
? edithelperadvice:为图元各种操作操作之前、之后方法,如创建、移动、销毁等
? kind:用于绑定elementTypeFactory工厂。整个扩展点的加载如下:
1) 通过AbstractElementTypeEnumerator类getElementType方法加载
2) 在注册表ElementTypeRegistry中获取扩展点内容
3) 找到kind绑定的工厂进行创建
    在uml.type的elementTypes扩展点(StereotypeTypeFactory)
  
? enablement节点介绍:符合该节点条件时,扩展点才有效
? property:判断属性。在uml.core的org.eclipse.core.expressions.propertyTesters扩展点中定义。内容如下:
   
   其中properties定义了属性,class中定义了类用来处理逻辑判断
? value:要判断的值。这里用stereotype的值
   
? 通过注册表方法获取匹配上面属性的所有elementType
   
加入Palette面板
1、在Palette面板上展示
 xx.uml.ui.diagrams.statechart插件
 org.eclipse.gmf.runtime.diagram.ui.paletteProviders扩展点,
 在contribution加入entry节点,定义ReceiveEvent
 
2、点击时创建图元
 在Contribution节点修改xxStateChartDiagramPaletteFactory类createTool方法,
 加入ReceiveEvent图元的创建逻辑。当点击图元时,创建图元模型
创建图元EditPart
org.eclipse.gmf.runtime.diagram.ui.editpartProviders扩展点
xxStateChartDiagramEditPartProvider类。
调用xxStateChartDiagramEditPartFactory工厂,加入对ReceiveEvent图元的图片获取。xxNameCompartmentEditPart
图元的图片资源,管理在xxStateChartDiagramResourceManager类中
创建图元View
org.eclipse.gmf.runtime.diagram.core.viewProviders扩展点,
xxStateChartDiagramViewProvider类中加入ReceiveEvent图元的处理

0 0
原创粉丝点击