GEF编程指南:模型、视图与编辑的桥梁
需积分: 9 162 浏览量
更新于2024-10-11
收藏 388KB PDF 举报
"GEF (Graphical Editing Framework) 是一个用于构建图形化编辑器的开源框架,主要在Eclipse平台上运行。此资源是GEF Programmer's Guide的中文翻译版,帮助开发者理解和使用GEF来创建复杂的图形用户界面。"
GEF(Graphical Editing Framework)是一个强大的工具包,专门设计用于构建基于Eclipse的图形化编辑器和可视化应用程序。它基于Model-View-Controller(MVC)架构,使得开发者能够专注于模型的创建和编辑操作,而不是底层的图形绘制细节。GEF与Draw2D一起使用,Draw2D提供了基本的图形绘制和布局功能,而GEF则扩展了这些功能,添加了用户交互和编辑操作。
**何时使用GEF**
如果你需要为特定的数据模型构建一个图形化界面,允许用户通过拖放、选择和其他交互方式进行编辑,那么GEF就是一个理想的框架。它可以应用于各种领域,如软件建模、流程图编辑、网络配置等。
**EditParts - GEF的主要构成部分**
EditParts是GEF中的关键组件,它们作为模型和视图之间的桥梁。每个EditPart对应一个可视化的模型对象,并且负责将用户的交互转化为对模型的操作。EditParts还包含了EditPolicies,这些策略定义了特定类型的编辑行为,例如连接、旋转、缩放等。
**图形界面 - 如何为你的模型创建图形界面**
使用GEF,你可以通过创建自定义的EditParts和 Figures 来构建图形界面。Figures是屏幕上实际可见的图形元素,而EditParts则管理这些元素并处理与模型的交互。
**编辑和编辑策略**
编辑策略(EditPolicy)是EditPart的一部分,它定义了特定编辑操作的逻辑。例如,如果用户尝试连接两个元素,一个连接编辑策略将负责处理这个操作,确保连接的合法性,并更新模型状态。
**EditPart生命周期**
EditParts有自己的生命周期,包括创建、初始化、显示、更新和销毁等阶段。在这些阶段,EditPart会监听和响应各种事件,例如图形元素的添加、删除或改变。
**工具和绘图板 - 交互概述**
GEF支持多种用户交互方式,如鼠标点击、拖放、键盘输入等。绘图板(Drawing Board)是用户与图形界面交互的地方,工具(Tools)则负责处理这些交互,将用户的动作转化为对模型的修改请求。
**请求(Request)和命令(Command)**
请求和命令是GEF中进行交互的核心机制。请求是用户操作的抽象表示,而命令是对模型进行修改的可撤销/重做的操作。当用户执行一个操作时,GEF会创建相应的请求,然后由控制器处理并执行相应的命令。
**模型(Model)**
模型是编辑器所表示的数据,它可以是任何持久化的信息。模型需要提供通知机制,以便在数据变化时通知视图进行更新。通常,模型与命令紧密关联,命令用来修改模型,并支持撤销/重做功能。
**视图(View)**
视图是用户看到和与之交互的图形界面,包括Figures和TreeItems。它们由EditParts管理,每个EditPart都与模型的一个部分相对应。
**控制器(Controller) - EditPart**
EditPart作为控制器,连接模型和视图,处理用户交互并调用适当的EditPolicy来执行编辑操作。
**Viewers**
EditPartViewer是GEF中的一个组件,它管理一组EditParts并负责它们的显示和布局。通过EditPartViewer,你可以实现对多个EditPart的组织和管理,创建复杂多层次的图形编辑界面。
GEF Programmer's Guide中文版为开发者提供了一个全面的指南,帮助他们利用GEF构建功能丰富的图形化编辑器,实现高效、直观的用户界面。无论是对于初学者还是经验丰富的Eclipse开发者,这都是一个宝贵的资源。
2009-05-26 上传
2022-09-24 上传
2013-05-14 上传
2023-06-09 上传
2008-10-07 上传
2008-10-22 上传
2017-08-02 上传
juncke
- 粉丝: 3
- 资源: 19
最新资源
- WPF渲染层字符绘制原理探究及源代码解析
- 海康精简版监控软件:iVMS4200Lite版发布
- 自动化脚本在lspci-TV的应用介绍
- Chrome 81版本稳定版及匹配的chromedriver下载
- 深入解析Python推荐引擎与自然语言处理
- MATLAB数学建模算法程序包及案例数据
- Springboot人力资源管理系统:设计与功能
- STM32F4系列微控制器开发全面参考指南
- Python实现人脸识别的机器学习流程
- 基于STM32F103C8T6的HLW8032电量采集与解析方案
- Node.js高效MySQL驱动程序:mysqljs/mysql特性和配置
- 基于Python和大数据技术的电影推荐系统设计与实现
- 为ripro主题添加Live2D看板娘的后端资源教程
- 2022版PowerToys Everything插件升级,稳定运行无报错
- Map简易斗地主游戏实现方法介绍
- SJTU ICS Lab6 实验报告解析