GMF的outline tree默认显示的层次为:diagram -- notes,如果要展示edges或者按其他层次分类展示views,就需要对其进行定制。
1、重载DiagramEditor方法getOutlineViewEditPartFactory(),这个方法是创建outline tree节点TreeEditPart的入口函数。
2、创建tree相关的TreeEditPart,其中顶层RootDiagramTreeEditPar继承自TreeDiagramEditPart,分类层次节点CateTreeEditpart继承自AbstractTreeEditPart,叶子及其他节点Editpart继承自TreeEditPart。
代码可参考http://www.cnblogs.com/youngerbaby/archive/2007/03/02/661154.html,本文略。
3、分类的实现,首先创建模型类:
然后在RootDiagramTreeEditPart的getModelChildren方法中,创建分类节点:
4、实现创建删除edge时候,对相关TreeEditPart进行刷新,同样在RootDiagramTreeEditPart类中,覆盖handleNotificationEvent方法
5、避免出现选中分类节点后又自动选择根节点的现象,重载DiagramEditor中相关方法