GEF图形编辑框架学习:待深入的要点与总结

需积分: 9 2 下载量 192 浏览量 更新于2024-08-23 收藏 260KB PPT 举报
"有待深入学习的几点-GEF学习总结" 在深入探讨GEF(Graphical Editing Framework)的学习总结之前,首先要理解Eclipse插件开发的基本概念。Eclipse插件工程是一种特殊的Java工程,由Java源代码、MANIFEST.MF文件(描述插件依赖和其他元数据)以及plugin.xml文件(定义插件扩展点)组成。开发Eclipse插件的目的在于扩展Eclipse IDE的功能。 GEF是一个强大的框架,用于构建图形编辑器,它可以将复杂的业务逻辑转化为用户友好的图形界面,如流程设计器或UML编辑器。GEF基于模型-视图-控制器(MVC)设计模式,解耦了用户界面、行为和数据表示。模型是可持久化的数据,视图呈现模型,而控制器协调模型和视图的交互。 创建一个GEF编辑器涉及多个步骤,包括设置控制器(EditorPart)、初始化EditDomain、Viewers和Palette。其中,Viewer是模型数据的可视化表示,它通过EditPart工厂根据模型生成相应的控制器。EditPart作为控制器,负责模型和视图间的同步,同时实现特定的编辑策略以响应用户的编辑操作。 在GEF的工作流程中,用户操作转化为请求对象,传递给控制器。控制器选择适当的编辑策略来处理这些请求,编辑策略处理后更新模型,视图随之更新,保持模型和视图的一致性。这一过程确保了图形编辑器的响应性和灵活性。 然而,学习GEF过程中有几点值得深入研究: 1. 关于关闭Editor本身的处理:这涉及到Eclipse插件生命周期管理,包括如何正确关闭编辑器,释放资源,以及处理可能的未保存数据。 2. 平台不兼容问题:在不同的操作系统或Eclipse版本上,可能会遇到菜单无法显示或抛出异常的问题。这需要对Eclipse RCP的跨平台特性有深入理解,包括如何处理SWT(Standard Widget Toolkit)的差异和适配。 3. 不同包中的Color的转换:在GEF中,颜色对象通常是org.eclipse.swt.graphics.Color,但在序列化或跨进程通信时,可能会遇到与类加载器相关的异常,如InvalidClassException和NotSerializableException。解决这类问题可能需要了解Java序列化机制,以及如何适当地序列化和反序列化非标准对象。 4. 序列化时的异常处理:上述异常通常表明在序列化过程中遇到了类不匹配的问题。要解决这个问题,需要理解Java的序列化接口(Serializable),以及如何处理类的serialVersionUID,确保类在不同环境下的兼容性。 在深化这些知识时,建议阅读官方文档,参考已有的GEF示例项目,进行实践操作,并学习如何调试和处理Eclipse插件开发中遇到的常见问题。此外,加入相关的开发者社区和论坛,可以获取更多的实战经验和解决方案,以提升GEF应用开发的能力。