GMF中,编辑图元属性的方法

         GMF中,经常需要修改图元属性。如果我们直接通过XXXImpl.setXXX();这种方法设置的话,运行后会报错,这是因为在GMF中,必须要在写事务中才能修改资源属性(这里的资源指真正存到图文件里的对象)。

         首先要获得某个图元的EditPart,然后将其转换为此图元的语义模型,之后便可以进行图元属性的修改了:

         XXXImpl  xxxImpl = XXXEditPart.resolveSemanticElement();

         TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(xxxImpl);
 domain.getCommandStack().execute(new RecordingCommand(domain) {
          protected void doExecute() {
          xxxImpl.setName(); // 设置图元属性
          }
           });

        如何获得某个图元的EditPart呢?在上一篇文章中,我已提供一种获得当前editor的EditPart,我们可以在此延伸:

        XXXDiagramEditor  xxxDiagramEditor= (XXXEditor) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();

        XXXEditPart  xxxEditPart = (XXXEditPart)xxxDiagramEditor.getDiagramEditPart();//获得当前editor的EditPart


        //获得选中的图元的EditPart

        List<?> selectedList = xxxEditPart.getViewer().getSelectedEditParts(); //如果在菜单类(DiagramEditorContextMenuProvider.java)中,可以直接调用getViewer()方法

if (selectedList.size() == 1) {

if (selectedList.get(0) instanceof XXXEditPart) {

XXXEditPart xxxEditPart = (XXXEditPart) selectedList.get(0); //获得选中的图元的EditPart

                       ....

                 }

        }

       当然,如果你希望找到图元中某个名称为“xxx”的图元模型对象,可以由editor的EditPart获得editor的模型对象,进而通过得到它的子图元集合找到你想要的图元模型对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值