[Eclipse]GEF入门系列(四、其他功能) - 编程入门网
以通过属性视图 (PropertyView)显示和编辑每个节点的属性,则可以让Node类实现IPropertySource接口, 并通过一个IPropertyDescriptor[]类型的成员变量描述要在属性视图里显示的那些属性。有 朋友问,要在属性页里增加一个属性都该改哪些地方,主要是三个地方:首先要在你的 IPropertyDescriptor[]变量里增加对应的描述,包括属性名和属性编辑方式(比如文本或是 下拉框,如果是后者还要指定选项列表),其次是getPropertyValue()和setPropertyValue ()里增加读取属性值和将结果写入的代码,这两个方法里一般都是像下面的结构(以前者为 例):
也就是根据要处理的属性名做不同操作。要注意的是,下拉框类型的编辑器是以Integer 类型数据代表选中项序号的,而不是int或String,例如上面的代码根据visible属性返回第 零项或第一项,否则会出现ClassCastException。 图2 属性页 实现大纲视图 在Eclipse里,当编辑器(Editor)被激活时,大纲视图自动通过这个编辑器的 getAdapter()方法寻找它提供的大纲(大纲实现IcontentOutlinePage接口)。GEF提供了 ContentOutlinePage类用来实现大纲视图,我们要做的就是实现一个它的子类,并重点实现 createControl()方法。ContentOutlinePage是org.eclipse.ui.part.Page的一个子类,大纲 视图则是PageBookView的子类,在大纲视图中有一个PageBook,包含了很多Page并可以在它 们之间切换,切换的依据就是当前活动的Editor。因此,我们在createControl()方法里要做 的就是构造这个Page,简化后的代码如下所示:
由于我们在构造方法里指定了使用树结构显示大纲,所以createControl()里的第一句就 会使outline变量得到一个Tree(见org.eclipse.gef.ui.parts.TreeViewer的代码),第二 句把TreeViewer加到选择同步器中,从而让用户不论在大纲或编辑区域里选择EditPart时, 另一方都能自动做出同样的选择;最后三行的作用在以前的帖子里都有介绍,总体目的是把 大纲视图的模型与编辑区域的模型联系在一起,这样,对于同一个模型我们就有了两个视图 ,体会到MVC的好处了吧。 [Eclipse]GEF入门系列(四、其他功能)(3)时间:2011-04-19 cnblogs bjzhanghao实现大纲视图最重要的工作基本就是这些,但还没有完,我们要在init()方法里绑定 UNDO/REDO/DELETE等命令到Eclipse主窗口,否则当大纲视图处于活动状态时,主工具条上的 这些命令就会变为不可用状态;在 getControl()方法里要返回我们的outline成员变量,也 就是指定让这个控件出现在大纲视图中;在dispose()方法里应该把这个TreeViewer从选择同 步器中移除;最后,必须在PracticeEditor里覆盖getAdapter()方法,前面说过,这个方法 是在Editor激活时被大纲视图调用的,所以在这里必须把我们实现好的OutlinePage返回给大 纲视图使用,代码如下:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |