WEB开发网
开发学院软件开发Java GEF实践总结(一)简洁的基础框架 阅读

GEF实践总结(一)简洁的基础框架

 2009-09-06 00:00:00 来源:WEB开发网   
核心提示: BaseEditPart :所有EditPart的基础类,extends于AbstractGraphicalEditPart,GEF实践总结(一)简洁的基础框架(2),同时实现了PropertyChangeListener接口,注意: propertyChange中对于IPropertyCons

BaseEditPart :所有EditPart的基础类。extends于AbstractGraphicalEditPart,同时实现了PropertyChangeListener接口。

注意: propertyChange中对于IPropertyConst. CHILDREN 和IPropertyConst.COMMON 的不同属性改变的不同处理。

BaseContainerEditPart :所有父模型的基础类。作用和BaseContainerModel类似,都是为了处理父子结构。

注意:覆盖了getModelChildren()方法。

DiagramEditPart :DiagramModel对应的EditPart。

RectEditPart :RectModel对应的EditPart。

DiagramEditPartFactory :通过model得知应该创建哪种对应的EditPart。就和jface.TableView一样,知道通过model得到TableItem。和jface.TreeViewer一样,通过model知道生成TreeItem一样的功效。只是在GEF中model和EditPart过多,需要一个工厂类专门处理,而TableViewer和TreeViewer则不需要。

五. 创建EditPart对应的Figure

IBaseFigure :为了后面能方便获得模型而做的接口。

DiagramFigure :与DiagramEditPart对应。

RectFigure :与RectEditPart对应。

六. 在ViewPart中创建GraphicalViewer

Java代码

graphicalViewer = new ScrollingGraphicalViewer(); 
graphicalViewer.createControl(bottomComposite); 
 
graphicalViewer.setRootEditPart(new ScalableRootEditPart()); 
graphicalViewer.setEditPartFactory(new DiagramEditPartFactory()); 
 
graphicalViewer.setContents(this.buildModel());

代码很简洁,没有做任何多余的事情,先create一个GraphicalViewer,在赋予一个Root的EditPart,再指定EditPartFactory,最后,将构建的模型放入GraphicalViewer中。

七. 启动,查看运行效果

注意:

第一个灰边框:ViewPart的。

第二个黑边框:DiagramModel对应的DiagramFigure的。

第三个小框:RestModel对应的RestFigure的。

八. 总结

1. 写的非常简洁,没有Command,没有EditPolicy,没有多余的属性和方法,就基本将一个GEF的项目搭建出来了,完全可以作为通用的GEF框架。当然,前提是纯粹的GEF,而不是EMF,GMF等。

2. GEF中有些概念一定要搞清楚:

PropertyChangeSupport和PropertyChangeListener

Model与EditPart与Figure的一对一

Model、EditPart与EditPartFactory

EditPart与Figure

Root的model(本文中的DiagramModel)

RootEditPart

3. 本文基于Eclipse3.4

4. 后续文章会跟进的,尽量做成一个入门的系列。但是还是需要你能够预先知晓一些GEF的基本概念。并要明白model的变化是如果传递,并最终显示到UI界面的Figure上的。

上一页  1 2 

Tags:GEF 实践 总结

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接