GMF中,如何给节点的输入和输出赋值
图1 ecore模型
图2 实例
在GMF中,将某个连接线(如上图连线1)指向某个节点(如图2 b节点)后,此节点b的输入便是连线1,但GMF默认不会自动给此节点b的incomings赋值(为连线1)。同理,也不会对此节点的输出(outcomings)赋值(为连线2)。如何解决这个问题呢?
很简单,这么做就可以了:
找到你的连线的XXXCreateCommand类,在doExecuteWithResult方法里,添加如下两句:
// 设置源节点的输出为新的边,目标节点的输入为新的边
getSource().getOutcomings().add(newElement); // 自己是源节点的输出(自己即:newElement,表示新创建的Link)
getTarget().getIncomings().add(newElement); // 自己是目标节点的输入(自己即:newElement,表示新创建的Link)
这样的话,就可以为节点的incomings和outcomings赋值了。当删除连线的时候,GMF会自动减少此连线涉及到的节点的输入或输出,这个就不必自己添加代码了。