GEF原理及实现系列(三、视图)

GEF视图通常利用Draw2d图形(IFigure)作为表现方式,用户可以通过Draw2d的功能实现图形的展示、布局及图形的编辑。
1.视图的功能
    GEF的视图可以有很多种,GEF目前提供了图形(GraphicalViewer)和树状(TreeViewer)这两种,前者利用Draw2D图形 (IFigure)作为表现方式,多用于编辑区域,后者则多用于实现大纲展示。视图的任务同样繁重,除了模型的显示功能以外,还要提供编辑功能、回显 (Feedback)、工具提示(ToolTip)等等。
    视图是模型图形方式的表现,它以图形的方式展示模型。视图的作用和JFace中的Viewer十分类似,而控制器(EditPart)就相当于是它的 ContentProvider和LableProvider,通过setContents()方法来指定视图的输入。
    GEF经常使用的Editor是一个GraphicalEditorWithPalette(GEF提供的Editor,是EditorPart的子类, 具有图形化编辑区域和一个工具条)的实例,这个Editor使用GraphicalEditViewer和PaletteViewer这两个视图类, PaletteViewer也是GraphicalEditViewer的子类,表示选项板视图。开发人员要在 configureGraphicalViewer()和initializeGraphicalViewer()这两个方法里对 EditPartViewer进行定制,包括指定它的contents和EditPartFactory等。
    EditPartViewer同时也是ISelectionProvider,这样当用户在编辑区域做选择操作是,注册的 SelectionChangeListener就可以收到选择事件。EditPartViewer会维护各个EditPart的选中状态,如果没有被选 中的EditPart,则默认选中的是作为contents的EditPart。
2.视图的实现
    视图的实现相对模型来说较为复杂,出来模型的显示功能外,还要提供编辑功能、回显(Feedback)、工具提示(ToolTip)等。
    在GEF中,通常视图是利用Draw2d图形(IFigure)作为表现方式,用户可以通过Draw2d的功能实现图形的展示、布局及图形的编辑。

你可能感兴趣的:(gef视图)