您的位置:首页 > 产品设计 > UI/UE

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

2010-07-07 18:19 399 查看
工具


(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(
选中图形时图形边框上出现的柄状节点,一般在四个角和边框的中点位置
)
可能会带来形状大小的修改,或者连接端点的移动。





值得一提的是,选择工具并不选中
EditPart
,所有的鼠标点击都作为拖拽来处理。当选择工具接收到一个针对
EditPart
的鼠标按下事件时,它会请求获得一个拖拽跟踪
(Tracker)

EditPart
使用
SelectEditPartTracker
来获取跟踪,它不但跟踪鼠标按下事件,而且还包括鼠标松开之前的所有事件。
Tracker
甚至还处理鼠标的双击事件。

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

绘图板
(
Palette)




GEF

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

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


Logic
示例中,这个面板就是编辑器的主控件,见下图:



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

绘图板提供几种显示模式,比如只显示图标。你也可以提供一个自定义的模式,允许用户自己修改或创建绘图板内容。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: