GEF学习笔记2

一、创建“插件项目(Plug-in Project)”
软件需求:eclipse-modeling-ganymede-SR1-incubation-win32.zip
JDK6
clip_p_w_picpath002[4]
新创建插件项目,在第二步是,做如下选择,把我们的插件项目作成可以独立运行的RCP程序:
clip_p_w_picpath002
二、创建“编辑器(editor)”
编辑器与视图一样是工作台内的可视组件,其扩展点是org.eclipse.ui.editors.扩展方式如下图:
clip_p_w_picpath004
点击上图的“Add…”按钮,会出现下面的页面,在“Extension Point filter:”旁边的文本框中输入“org.eclipse.ui.editors”在项目列表中会出现对应的列表项,选中后点击“Finish”按钮。
clip_p_w_picpath006
在下该下图中右边部分之前,需要先创建2个文件:
1. 该扩展点对应的class文件(PafircGraphicalEditor.java
2. 打开该编辑器所需要的输入内容文件(MyEditorInput.java)
详细解释参考下面的内容:
clip_p_w_picpath008
在plug-in.xml中“编辑器”对应的XML代码
clip_p_w_picpath010
ü 编辑器的扩展类型为org.eclipse.ui.editors
ü 与视图一样,一个编辑器也对应一个class,该class必须是实现了org.eclipse.ui.IEditorPart的类。而在GEF开发中一般至少是继承自GraphicalEditor,如果想带有调色板,则至少需要继承GraphicalEditorWithPalette;如果还想调色板可收缩,则可继承GraphicalEditorWithFlyoutPalette。
ü id是编辑器对象的唯一标识,name是在编辑器上显示的名称。
ü ContributorClass是可以在编辑器里添加工具条类。
其他的:除非是开发专业的编辑器程序,下面几个属性一般用不到
n Extensions:是打开该编辑器所对应的文件扩展名如:.java,.txt.
n Filenames:编辑器打开文件时可选的文件名
n SymbolicFontName:编辑器字体名称。
Java代码:
注意下面的代码中:setEditDomain(new DefaultEditDomain(this));
对于初学者,请先按这样写,不然会出现getCommandStack方法的NullPointerException。
ID字段与上图中的id属性相同。
clip_p_w_picpath012
三、修改ApplicationWorkbenchAdvisor类,用来打开“编辑器”
与视图不同,编辑器不能直接显示到透视图的某一个区域,而是由一项操作打开的,通常是采用IWorkbenchPage的openEditor方法。
Ø OpenEditor(IEidtorInput input,String editorId):input对象是打开文件是指定输入到编辑器的内容,是实现了IEditoInput接口的类。
Ø OpenEditor(IEidtorInput input,String editorId,boolean active):active是表示打开后是否激活该编辑器。
clip_p_w_picpath014
四、创建Model(模型),任意的POJO
模型是GEF框架中非常简单的一个部分,与Struts等MVC框架中Model的意思是一样的。
clip_p_w_picpath016
五、创建View(Figure),extends Figure
视图(Figure)是模型的图形化方式的表现,以图形的方式展现模型,同Struts中的View,如FromBean具有类似的作用。请注意setBorder()方法,setBounds()方法,要写正确,否则图形可能不能显示出来。setText()方法在这里其实没什么用途,如果在Model中不赋值的话,或不刷新视图的话,这个“Init Figure Name”内容会默认显示出来,正常情况下应该不显示这个内容的,应该显示模型中赋值的内容。
clip_p_w_picpath018
六、创建Control(EditPart),extends AbstractGraphicalEditPart
Control是模型与视图之间的桥梁,也是GEF的核心所在,它不仅要监听模型的变化,当用户编辑视图时,还要把编辑的结果反映到对应的模型上,这个类似Struts中的Action。
createFigure()方法用来创建视图。
refreshVisuals()方法用来刷新视图,如果不调用这个方法,就会出现“步骤 五”中所说的出现默认Label 文本内容的情况。
clip_p_w_picpath020
七、创建 EditPartFactory,implements EditPartFactory
在GEF中,控制器是由一组EditPart对象共同组成,每个模型对象都对应一个EditPart对象。应用程序中需要有一个EditPartFactory对象负责根据给定的模型对象创建对应的EditPart对象,这个工厂类在创建模型时被调用。
clip_p_w_picpath022
完成这些后,应该出现的效果如下图所示。
clip_p_w_picpath024
 
参考资料:
1.《Eclipse SWT/JFace核心应用》 清华大学出版社 那静
3.《GEF tutorial》法国人写的那个
4.《自己动手写开发工具》 清华大学出版社 杨中科
5.《Eclipse插件开发方法与实战》 电子工业出版社 甘树满 王秀明
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章