GMF中,怎么给节点的输入和输出赋值

GMF中,如何给节点的输入和输出赋值
GMF中,怎么给节点的输入和输出赋值
图1  ecore模型
GMF中,怎么给节点的输入和输出赋值
图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会自动减少此连线涉及到的节点的输入或输出,这个就不必自己添加代码了。