选项板提供了用户选择模型元素,并提供相应的机制把模型和视图加入图形编辑器的能力。
1.选项板(PaletteRoot)的功能
GEF是一个图形编辑框架,它的主编辑区域是一个图形的视图(类似与JFace的Viewer),另外,用户还可以选择选项板上相应的模型,把选择的模型对应的视图加入到图形编辑区域进行编辑。
在GEF中,图形编辑器实现类的getPaletteRoot方法将返回一个PaletteRoot对象,用户可以在PaletteRoot中添加模型选 项入口项(ToolEntry)。例如,在选择板中加入一个连线模 ...
为了保证数据和展现的同步,必须要有一种消息通知机制,当模型被修改时通知相应的视图进行更新,下面将介绍如何实现这种消息机制。
1.模型同步的功能
模型是GEF中实体,当模型的属性被修改后,控制器会监听到模型属性改变的事件,然后通知视图进行更新,模型和视图之间没有直接的联系,如下图:
要通过事件的通知机制获得模型同步的步骤如下:
(1)模型中包含注册监听器的机制,本文范例是通过PropertyChangeSupport和PropertyChangeListener机制添 ...
为了提高代码的重用性,以及实现GEF编辑器的功能,GEF采用命令模式提供了对模型的操作方式。
1.命令(Commands)的功能
在EditPolicies中新建了命令,如果返回的命令不为空,GEF框架会执行命令,对模型进行相应的修改。
Command是GEF中的一个抽象类,主要实现了如下的几个方法:
(1)execute:这是命令的执行方法,当请求结束并获得Command后,GEF框架会负责执行此方法。
&nb ...
请求和编辑策略是GEF框架中减轻控制器的负担、减小代码耦合度而实现的一种解决方案。
1.请求和编辑策略(Request and EditPolicies)
请求和编辑策略对初学者来说是比较难理解的部分,但正是因为这种机制才使得GEF框架功能强大,而且非常灵活。
在EditPart中,可以通过设置不同的编辑策略(EditPolicies)来处理不同的请求,这样,一方面,可以把代码从EditPart中解放处 理,分别由不同的EditPolicies进行处理,另一方面,用户可以着力于自己的关注点,但由此 ...
控制器是GEF框架的核心,它负责模型和视图之间的通信。
1.控制器的功能
在GEF的MVC结构里,控制器是模型与视图之间的桥梁,也是整个GEF的核心,它不仅要监听模型的变化,当用户编辑视图时,还要把编辑结果反应到模型上。
在GEF中,控制器是由一组EditPart对象共同组成的,每一个模型对象都对应一个EditPart对象。应用程序中需要有一个EditPartFactory对象负责根据给定模型对象创建对应的EditPart对象,这个工厂类将在创建模型时被调用。
控制器是GEF中最复杂的一部分,GEF把控制器完成的工作又分成了几个部分,包括请求和编辑策略及引申出来的命令模式,如下图:
...
GEF视图通常利用Draw2d图形(IFigure)作为表现方式,用户可以通过Draw2d的功能实现图形的展示、布局及图形的编辑。
1.视图的功能
GEF的视图可以有很多种,GEF目前提供了图形(GraphicalViewer)和树状(TreeViewer)这两种,前者利用Draw2D图形 (IFigure)作为表现方式,多用于编辑区域,后者则多用于实现大纲展示。视图的任务同样繁重,除了模型的显示功能以外,还要提供编辑功能、回显 (Feedback)、工具提示(ToolTip)等等。
视图是模型图形方式的表现,它 ...
GEF的模型只与控制器打交道,而不知道任何与视图有关的东西。
1.模型的功能
在GEF框架中,模型(Model)是非常简单的一部分,用户可把模型理解成一个简单的可持久化的实体。但为了能让控制器知道模型的变化,应该把控制器作为事件监听者注册在模型中,当模型发生变化时,就触发相应的事件给控制器,后者负责通知各个视图进行更新。
2.模型的实现
典型的模型对象会包含PropertyChangeSupport类型的成员变量,用来触发事件,通知监听器即控制器。一般来说,模型会实现一个基类,用来封装事件机制,主要包括添加监听 ...
GEF(Graphical Editor Framework)是一个图形化编辑框架,它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。
本系列介绍GEF中的几个基本概念,包括如下部分:
GEF概述
模型(Model)
视图(View)
控制器(Control)
请求和编辑策略(Request and EditPolicies)
命令(commands)
模型同步
选项板(PaletteRoot)
1.GEF概述
GEF最早是Ecl ...
结束了一些事情,开始了一些事情。
本来应该有很多感慨才是的,但每天琐碎的事情不断的侵扰着,也就没那么多发表感慨的时间了。
说是忙,也不是很忙,只是心理的紧张,消耗掉太多的精力。原来做一件事情真的不简单,要做好的话,更不容易。前辈的话真的没错,要发生的事情,要解决的问题,百分之八十是意想不到的,要不然,真的只要有计划,而没有变化了。
从起名字开始,到找房子,谈判,一件接着一件,幸亏遇到是一群有活力的小伙子,带着一样的梦想,就这么开始了。







评论排行榜