GEF 是图形编辑框架,它实现允许开发人员以图形化的方式展示和编辑模型,提升用户体验。它提供标准的MVC结构,但是和web的MVC框架略有不同。
1、模型:模型只与控制器打交道,模型改变时触发相应的事件给控制器,控制器负责通知视图更新。典型的模型包含PropertyChangeSupport类型的成员变量,用来维护监听器成员即控制器。
public abstract class AbstractMode implements Cloneable, Serializable {
private static final long serialVersionUID = 7796529230959678337L;
PropertyChangeSupport listeners = new PropertyChangeSupport(this);
public void addPropertyChangeListener(PropertyChangeListener l) {
listeners.addPropertyChangeListener(l);
}
public void firePropertyChange(String prop, Object oldValue, Object newValue) {
listeners.firePropertyChange(prop, oldValue, newValue);
}
public void fireStructureChange(String prop, Object child) {
listeners.firePropertyChange(prop, null, child);
}
public void removePropertyChangeListener(PropertyChangeListener l) {
listeners.removePropertyChangeListener(l);
}
}
2、控制器:EditPart对象,所有的EditPart共同组成了GEF的控制器这部分,每个模型对应一个EditPart。你的应用中需要一个EditPartFactory对象复制控制给定模型对象创建对应的EditPart对象,这个工厂类将被视图利用。
EditPart控制实现,而实现的具体操作GEF交给了command,每个command做自己应该执行的操作,比如创建,移动,删除等,command都放在EditDomain堆栈里,每个command具有撤销和回退功能。一组command由EditPolicy控制。
在EditPolicy里可以控制可编辑的图元的handler句柄,创建自定义的Handler,自定义的图元的结构。
public class MainModeEditPart extends AbstractGraphicalEditPart implements
PropertyChangeListener {
private GefLayoutEditpolicy gefLayoutEditpolicy = new GefLayoutEditpolicy();
private ModeDirectEditManager manager;
// IEditorInput input = (IEditorInput) PlatformUI.getWorkbench()
// .getActiveWorkbenchWindow().getActivePage().getActiveEditor().getEditorInput();
// DiagramEditor editor = (DiagramEditor) PlatformUI.getWorkbench()
// .getActiveWorkbenchWindow().getActivePage().getActiveEditor();
protected List getModelChildren() {
PeopleActivePropertyDialog.modelArray = ((MainMode) getModel())
.getModes();
ChooseActivityDialog.modelArray2 = (ArrayList) ((MainMode) getModel())
.getModes();
return ((MainMode) getModel()).getModes();
}
// @Override
// public IFigure getContentPane() {
// return ((MainFigure) getFigure()).getAttributeFigure();
// }
public void activate() {
super.activate();
((MainMode) getModel()).addPropertyChangeListener(this);
}
/**
* ˢ�¡äӶԻ��
分享到:
相关推荐
这个资源包可能包含了对理解、学习和使用GEF非常有帮助的材料。描述进一步说明了这个包中包含的具体内容,如“GEF_Tutorial”、“GEF实例”、“入门教程”以及“GEF-whole-upload”,这些都暗示了这是一个全面的学习...
**GEF(Graphical Editing Framework)** 是一个用于构建图形化编辑器的开源框架,它在Eclipse平台上广泛使用,特别是在开发复杂的图形用户界面和工具时。本资料集旨在为初学者提供一个全面的入门指南,帮助理解GEF...
- `org.eclipse.gef.requests.Request`:表示用户或系统对编辑域的某种请求,如创建新对象或选择对象。 - `org.eclipse.gef.editpolicies`包下的类:提供了各种编辑策略,如连接策略、布局策略等,它们决定了...
3. **编辑器(Editor)**: 编辑器是Eclipse插件开发中的一个关键组件,它提供了对模型的编辑功能。GEF编辑器通常基于`AbstractGraphicalEditor`类,可以集成到Eclipse IDE中。 4. **指挥者(Commander)**: 指挥者处理...
**GEF(Graphical Editing Framework)** 是一个用于构建图形编辑工具的开源框架,它为开发人员提供了一套全面的库和工具,用于创建基于Eclipse的富客户端平台(RCP)的应用程序,特别是那些涉及图形用户界面(GUI)...
1. 用户对编辑区域的操作(如选择、新增、删除节点)首先由EditPartViewer接收。 2. 操作被转换为请求(Request),并根据操作的角色(Role)分配给适当的EditPolicy。 3. EditPolicy根据请求创建对应的Command对象,...
创建Editor后,接下来是对Editor进行定制化开发。这包括但不限于: - **自定义图形元素**:通过EditParts定义图形的外观与行为。 - **模型绑定**:确保视图中的图形元素与模型数据保持一致。 - **事件处理**:实现...
Java GEF(Graphical Editing Framework)开发实例是一个深入理解并应用GEF框架的优秀实践案例。GEF是Eclipse平台上...通过实际操作和调试,可以加深对GEF框架的理解,并为将来更复杂的图形编辑器开发打下坚实基础。
2. **创建项目**:新建一个Eclipse插件项目,并在项目的MANIFEST.MF文件中声明对GEF的依赖。 3. **编写模型**:定义图形编辑器的数据模型,这通常是基于Java类的。 4. **实现视图**:根据模型创建视图,包括图元的...
2. **创建和弯曲**:可以创建新的图形元素,或者对现有元素进行形状变换。 3. **连接**:图形元素之间可以通过线条或其他连接方式进行交互。 4. **删除、撤销和重做**:提供了基本的编辑历史管理,方便用户纠正错误...
在图形编辑框架(GEF,Graphical Editing Framework)中,锚点(Anchor)是一个关键概念,它是连接模型元素之间的连接线在元素上的固定点。在GEF中,锚点的定位直接影响到连接线的形状和行为,特别是当用户通过鼠标...
**GEF(Graphical Editing Framework)教程与Demo源码详解** GEF,全称为Graphical Editing Framework,是Eclipse平台上用于构建图形化编辑器的一种框架。它为开发人员提供了丰富的工具,可以方便地创建出复杂的...
### GEF教程精要 #### 引言:GEF框架概览 GEF,全称为Graphical Editor Framework...GEF框架的学习之路虽漫长,但其带来的回报无疑是巨大的,无论是对个人技能的提升,还是对项目成果的贡献,都有着不可估量的价值。
随着对GEF的深入学习,你可能还会接触到更多高级特性,如Zest(用于创建图表和网络图的GEF扩展)、自定义编辑政策(EditPolicies)以控制特定图元的行为,以及自定义图元的绘画策略等。 总之,"GEF_Tutorial.rar"是...
《GEF-SDK-3.6.2 jar:Eclipse GEF框架详解及在Android ADT中的应用》 GEF(Graphical Editing Framework)是Eclipse项目中的一个重要组成部分,它为开发图形化编辑器提供了强大的支持。在标题“GEF-SDK-3.6.2 jar...
在3.7.1版本中,GEF可能包含了对性能的优化、API的改进、新特性的添加以及已知问题的修复。例如,可能增加了对Eclipse最新版本的兼容性,提升了图形绘制效率,或者提供了更灵活的自定义选项。为了充分利用这些更新,...
文件名列表中,尽管没有直接的代码文件,但“Gef.doc”可能是关于GEF的文档,可能包含了对GEF的介绍、使用方法以及例子的详细说明。MHT文件通常是网页的单个文件存档,可能保存了两篇与GEF相关的博客文章:“Draw2D...
6. **事件处理与反向工程**:GEF可以捕获用户对图形的操作,并将这些操作转化为代码,反之亦然,支持模型到视图的同步。 **Eclipse** 是一个高度可扩展的开放源码IDE,最初为Java开发而设计,但现在支持多种语言和...