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)
。模板将在下面的创建一节中讲述。
绘图板提供几种显示模式,比如只显示图标。你也可以提供一个自定义的模式,允许用户自己修改或创建绘图板内容。
(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)
。模板将在下面的创建一节中讲述。
绘图板提供几种显示模式,比如只显示图标。你也可以提供一个自定义的模式,允许用户自己修改或创建绘图板内容。
相关文章推荐
- GEF Programmers' Guide 中文版(编辑和策略)
- GEF Programmers' Guide 中文版(Editpart生命周期)
- GEF Programmers' Guide 中文版(GEF 交互操作)
- GEF,EMF,RCP,Eclipse's plugin的几个问题(3) 让eclipse的properies view实现disabled效果
- The shortest guide to character sets you'll ever read
- 2012-10-27 - 2012-10-28 11gR2 "ADMINISTRATOR'S GUIDE" page 305 - 352
- 2012-10-29 11gR2 "ADMINISTRATOR'S GUIDE" page 353 - 396
- 2012-10-30 11gR2 "ADMINISTRATOR'S GUIDE" page 397 - 446
- 2012-11-1 11gR2 "ADMINISTRATOR'S GUIDE" page 509 - 550
- 2012-11-3 - 11-4 11gR2 "ADMINISTRATOR'S GUIDE" page 585 - 646
- Error:REQUIRES 'ORG.ECLIPSE.GEF 0.0.0' BUT IT COULD NOT BE FOUND
- 2012-11-8 11gR2 "ADMINISTRATOR'S GUIDE" page 809 - 847
- A 'C' Test: The 0x10 Best Questions for Would-be Embedded Programmers
- A Beginner's Guide to Pointers
- Rockie's Android Porting Guide(1)——Build your own board
- R语言-代码规范(Google's R Style Guide)
- LINUX的工具介绍(载抄venus'的blog)
- Busy Developers' Guide to HSSF and XSSF Features
- GEF,EMF,RCP,Eclipse's plugin的几个问题(4) No more handles Exception 解决办法
- 安装Android的Eclipse插件ADT遇到错误“requires 'org.eclipse.gef 0.0.0' but it could not be found”