GEF Programmers' Guide 中文版(工具和绘图板)

工具 (Tools) 和绘图板 ( Palette )

GEF 的工具处理几乎可以所有的事件,在 GEF 中, EditDomain 用来记录当前有效地工具。 应用程序可能会选择使用绘图板 (PaletteViewer) 来显示多种工具,它允许用户在不用的工具集之间切换。

工具如何工作

工具的实现有点像状态机, SWT 的事件 (Event) 驱动状态机工作。根据事件和当前状态,工具将执行特定的处理,这些处理包括:

1.     请示 EditPart 是否显示反馈

2.     EditPart 中得到命令

3.     在命令栈 (Command Stack) 中执行命令

4.     更新鼠标光标,比如有时候有手型,有时候则为指针型

工具的激活需要通过 EditDomain ,在一个 EditDomain 中的所有 Viewer 只能拥有同一个工具。 如果使用了绘图板,从绘图板中选择某个工具也会激活它。

选择工具 (The Selection Tool )

选择工具是 GEF 中最基本的工具,一般也是应用程序一开始默认的工具。我们可以委托选择工具来处理任何 EditPart 。它会从 EditPart 获得一种叫做拖拽跟踪者 (DragTacker) 的辅助工具,也会在鼠标进行拖拽时响应。拖拽 (Drag) 是鼠标在按下与松开之间进行的任何操作,这期间会产生很多事件。事件被转发给代理,然后根据拖拽发生的时间和位置来进行不同的处理。例如,点击一个 Handle( 选中图形时图形边框上出现的柄状节点,一般在四个角和边框的中点位置 ) 可能会带来形状大小的修改,或者连接端点的移动。

selection tool

 

值得一提的是,选择工具并不选中 EditPart ,所有的鼠标点击都作为拖拽来处理。当选择工具接收到一个针对 EditPart 的鼠标按下事件时,它会请求获得一个拖拽跟踪 (Tracker) EditPart 使用 SelectEditPartTracker 来获取跟踪,它不但跟踪鼠标按下事件,而且还包括鼠标松开之前的所有事件。 Tracker 甚至还处理鼠标的双击事件。

更多选择工具和 Tracker 的信息请参考选择交互一节。

绘图板 ( Palette)

 

GEF PaletteViewer 使用的是 SWT 控件,它提供了一系列的工具可供用户选择。同时 PaletteVIewer 也可以作为拖拽的源,允许用户直接把对象从绘图板中拖到图形中。绘图板虽然不是必需的,但是使用非常普遍。

我们可以指定绘图板的位置,甚至可以放在编辑器里。 GEF 提供了一个 WorkbenchView 来放置绘图板,同时一个自定义的面板—— FlyoutPaletteComposite 将负责管理 PaletteViewer 的位置,一般地 PaletteViewer 位于主控件的旁边。 Logic 示例中,这个面板就是编辑器的主控件,见下图:

palette

PaletteViewer 显示绘图模型,一般以根模型 (PaletteRoot) 开始。 PaletteRoot 使用可以展开合拢的目录抽屉 (Drawer) 或者组 (Group) 来组织各种绘图模型。每个组成员都可以包含绘图元素 (Palette Entry) 。绘图元素或者是一个工具,或者是一个模板 (Template) 。模板将在下面的创建一节中讲述。

绘图板提供几种显示模式,比如只显示图标。你也可以提供一个自定义的模式,允许用户自己修改或创建绘图板内容。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值