GEF实践总结(一)简洁的基础框架
2009-09-06 00:00:00 来源:WEB开发网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上的。
更多精彩
赞助商链接