【GMF】实现双击图形进行属性或参数编辑

36 阅读1分钟
  1. 根据生成的diagram代码来看,editpart类负责图形部分,其中createDefaultEditPolicies类提供了可插拔的编辑策略操作,为了实现双击打开一个dialog,需要在这个类中安装一个编辑策略用来添加一个打开的请求常量。

image.png

  1. 这个OpenPropertyEditPolicy是自己定义的编辑策略类,继承于OpenEditPolicy,里面通过重写getOpenCommand的处理打开请求,通过getTargetEditPart来获取请求的图形对象,获取到双击的editpart对象后,可以通过它拿到对应的object(通过ViewUntil.resolvesemanticElement)和一个事务性的EMF模型编辑域domian, 为什么需要获取事务性编辑域,因为EMF模型不允许直接修改,必须通过写事务,直接修改Object的属性会报错:Unhandled event loop exception (problem with read-only transaction context)

image.png

  1. 返回一个command代理,这个ModiftyForLoopCommand继承于AbstractTransactionalCommand,doExecuteWithResult()方法是一个可以修改EMF模型的写事务。

image.png