使用XYLayout布局的图形操作

3 篇文章 0 订阅
2 篇文章 0 订阅

内容提要:
(1)使用 XYLayout 布局
(2)Edit 操作图形,譬如通过句柄改变图形尺寸,移动图形
(3)创建和安装 editing policy,用于改变图形尺寸,移动图形
(4)创建和执行命令 Command,用于改变图形尺寸,移动图形
(5)Undo 和 Redo 的操作

  1. 创建editing policy,在ContentsEditPart 中安装editing policy,此时图形拥有了句柄
  2. 修改图形产生的请求与约束相关,所以创建一个改变约束的类 ChangeConstaintCommand
  3. editing policy中的getCommand方法得到请求,执行createChangeConstraintCommand 方法。所以我们的 ChangeConstaintCommand 要放在这个方法中执行。
  4. 此时模型改变了,但视图没有改变,这时需要Linstener通知EditPart

监听器

  1. 创建一个超类AbstractModel ,在其中设置监听器
  2. 让其他的模型对象继承这个类,在 setConstraint中调用firePropertyChange
  3. 创建一个超类监听器的控制器,让其他模型对象的控制器继承他。
  4. 模型对象的控制器中添一行判断是否匹配的是对应的模型

Undo 和 Redo

  1. 修改之前的Command类(ChangeConstraintCommand),新建属性:oldConstraint,代表保存的旧的约束。 重写Undo方法:在Undo方法里对Model设置constraint为OldConstraint,实现模型的undo操作。

    在setModel方法里,设置oldConstraint=模型初始化约束。

    这样,当在policy里给命令设置Model的时候,会保存下来模型的旧的约束。当undo时,该Command从命令堆栈中弹出,执行该命令的 undo方法,实现模型的修改。undo里调用了model的setConstraint方法修改约束。修改完后会自动通知EditPart修改视图显 示。

  2. 配置Action
    新建DiagramActionBarContributor类,实现对DiagramActionBar的Contributor。
    在该类的buildAction方法里新建两个Retargetaction(Undo和Redo)
    在contributeToToolBar方法里给工具栏添加两个按钮(Undo按钮和Redo按钮)

  3. 在plugin.xml文件里配置Editor的contributorClass为新建的DiagramActionBarContributor类。

  4. 在ApplicationWorkbenchWindowAdvisor类里的preWindowOpen方法里设置显示coolbar。(不要忘记最后这一步)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值