发明内容
本发明所要解决的技术问题是提供一种可视化组件的生成方法和生成模块,降低对组件开发人员的能力要求,提高组件开发效率。
为解决上述技术问题,本发明提出了一种可视化组件的生成方法,包括:
根据要生成的编程工具组件的组件类型和该要生成的编程工具组件需要的流程控制关键字,选取图形化编辑框架GEF模型;
为选取的每个GEF模型设置与该GEF模型对应的视图,将所述要生成的编程工具组件的流程表示为选取的GEF模型对应的视图的组合;
根据GEF文件中保存的模型实例属性信息和模型实例关系信息,自动生成所述要生成的编程工具组件的源代码文件。
进一步地,上述方法还可具有以下特点,还包括:根据所述GEF模型的属性变化更新所述GEF模型对应的视图。
进一步地,上述方法还可具有以下特点,还包括:根据用户对视图的编辑修改该视图对应的GEF模型。
进一步地,上述方法还可具有以下特点,所述GEF模型对应的视图使用绘图工具Draw2D绘制。
进一步地,上述方法还可具有以下特点,所述编程工具为C编程语言或C++编程语言。
为解决上述技术问题,本发明提出了一种可视化组件的生成模块,包括:
选取单元,用于根据要生成的编程工具组件的组件类型和该要生成的编程工具组件需要的流程控制关键字,选取图形化编辑框架GEF模型;
视图化单元,用于为选取的每个GEF模型设置与该GEF模型对应的视图,将所述要生成的编程工具组件的流程表示为选取的GEF模型对应的视图的组合;
生成单元,用于根据GEF文件中保存的模型实例属性信息和模型实例关系信息,自动生成所述要生成的编程工具组件的源代码文件
进一步地,上述模块还可具有以下特点,还包括:视图更新单元,用于根据所述GEF模型的属性变化更新所述GEF模型对应的视图。
进一步地,上述模块还可具有以下特点,还包括:模型修改单元,用于根据用户对视图的编辑修改该视图对应的GEF模型。
进一步地,上述模块还可具有以下特点,所述GEF模型对应的视图使用绘图工具Draw2D绘制。
进一步地,上述模块还可具有以下特点,所述编程工具为C编程语言或C++编程语言。
本发明可视化组件的生成方法和生成模块,降低了对开发人员C/C++开发能力的要求,使得开发人员可以更多的关注于业务逻辑。并且,本发明可视化组件的生成方法和生成模块,能够自动生成代码,代码格式统一,降低了语法错误出现的机率,提高了开发测试效率。
具体实施方式
本发明使用GEF技术,在Eclipse平台上实现一个C/C++组件的可视化开发插件,通过图形化编辑C/C++组件流程,最终生成C/C++组件代码。
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
本发明可视化组件的生成方法可以通过Eclipse平台实现。
图1为本发明实施例中可视化组件的生成方法的流程图。如图1所示,本实施例中,可视化组件的生成方法可以包括如下步骤:
步骤101,根据要生成的编程工具组件的组件类型和该要生成的编程工具组件需要的流程控制关键字,选取GEF(Graphical Editor Framework,图形化编辑框架)模型;
每个GEF模型对应一种GEF中自定义的图形,该图形即下面将要提到的GEF模型对应的视图。
其中,编程工具可以为C编程语言或C++编程语言。
GEF模型的选取可以通过分析归类得到。比如,C/C++组件有A、B两类,分别用一个java类来描述A、B两类组件;再比如,C/C++流程控制关键字主要有if、for等,分别用一个java类来描述各个关键字的属性。这些java类就构成了GEF的模型。
GEF模型用来记录组件或者流程关键字的属性(例如组件名称、组件输入输出参数、if关键字的判断条件等)以及在编辑器中图形化展示时的位置、大小等关系。
GEF模型只与控制器打交道,而不知道任何与视图有关的东西。为了能让GEF中的控制器知道GEF模型的变化,还需把控制器作为事件监听者注册到GEF模型中,当GEF模型发生变化时,GEF模型发相应的事件给控制器,控制器负责通知视图进行更新,所以GEF模型对象一般还会包含PropertyChangeSupport类型的成员变量,用来维护控制器。
步骤102,为选取的每个GEF模型设置与该GEF模型对应的视图,将要生成的编程工具组件的流程表示为选取的GEF模型对应的视图的组合;
GEF模型对应的视图是指GEF模型对应的显示图形。GEF模型对应的视图可以使用绘图工具Draw2D绘制。
为GEF模型设置或者说绘制视图的目的是,使GEF模型能够在可视化编辑器中展现,并用视图的组合来表示编程工具组件的流程,使用户对编程工具组件流程的了解更加直观,易于理解。
可以通过拖拽GEF模型对应的视图到编辑器窗口以实例化、图形化GEF模型,通过设置GEF模型实例的属性以及GEF模型实例之间的关系完成C/C++流程设计。
步骤103,根据GEF文件中保存的模型实例属性信息和模型实例关系信息,自动生成要生成的编程工具组件的源代码文件;
步骤104,根据GEF模型的属性变化更新GEF模型对应的视图;
步骤105,根据用户对视图的编辑修改该视图对应的GEF模型。
控制器是GEF模型和GEF模型对应的视图之间的桥梁。控制器不仅要监听GEF模型的变化,当GEF模型的属性发生变化时,刷新GEF模型对应的视图,而且当用户编辑GEF模型对应的视图时,还要把编辑结果反映到GEF模型上。
GEF中的控制器就是所谓的EditPart对象,每一个GEF模型对象都对应一个EditPart对象。每个控制器都继承类AbstractGraphicalEditPart,并且由于控制器要监听GEF模型的变化,所以还需实现PropertyChangeListener接口。在控制器生效时,应该把控制器注册为对应GEF模型的监听器,所以需覆盖父类AbstractGraphicalEditPart的active方法,在控制器失效时,从GEF模型中删除这个控制器,所以需覆盖父类AbstractGraphicalEditPart的deactive方法。此外由于控制器要根据模型来创建并刷新模型对应的视图,所以还需覆盖父类AbstractGraphicalEditPart的CreateFigure、实现PropertyChangeListener接口的PropertyChange方法。
用户编辑视图(比如拖动某个GEF模型对应的图形,改变其位置),这过程包括用户向视图对应的控制器发出编辑请求(Request),控制器会调用相应的命令(command)来修改对应GEF模型的位置属性,GEF模型位置属性发生变化了,又会通知控制器,控制器就会刷新视图,改变图形的位置。控制器怎么根据请求类型来调用相应的命令,是通过策略来完成的,策略保存了请求类型和命令的映射关系。所以需要在控制器中安装策略,这通过覆盖父类的createEditPolicies来实现。
本发明可视化组件的生成方法,降低了对开发人员C/C++开发能力的要求,使得开发人员可以更多的关注于业务逻辑。并且,本发明可视化组件的生成方法,能够自动生成代码,代码格式统一,降低了语法错误出现的机率,提高了开发测试效率。
本发明还提出了一种可视化组件的生成模块。本发明可视化组件的生成模块可以实施上述可视化组件的生成方法。
图2为本发明实施例中可视化组件的生成模块的结构图。如图2所示,本实施例中,可视化组件的生成模块200可以包括选取单元210、视图化单元220和生成单元230。其中,选取单元210用于根据要生成的编程工具组件的组件类型和该要生成的编程工具组件需要的流程控制关键字,选取图形化编辑框架GEF模型。视图化单元220用于为选取的每个GEF模型设置与该GEF模型对应的视图,将要生成的编程工具组件的流程表示为选取的GEF模型对应的视图的组合。生成单元230用于根据GEF文件中保存的模型实例属性信息和模型实例关系信息,自动生成该要生成的编程工具组件的源代码文件。
再如图2所示,可视化组件的生成模块200还可以包括视图更新单元240。视图更新单元240用于根据GEF模型的属性变化更新该GEF模型对应的视图。
再如图2所示,可视化组件的生成模块200还可以包括模型修改单元250。模型修改单元250用于根据用户对视图的编辑修改该视图对应的GEF模型。
应用本发明可视化组件的生成模块,降低了对开发人员C/C++开发能力的要求,使得开发人员可以更多的关注于业务逻辑。并且,本发明可视化组件的生成模块,能够自动生成代码,代码格式统一,降低了语法错误出现的机率,提高了开发测试效率。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。