`
qq123zhz
  • 浏览: 536166 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

年底发表一点对GEF的感觉

阅读更多

GEF 是图形编辑框架,它实现允许开发人员以图形化的方式展示和编辑模型,提升用户体验。它提供标准的MVC结构,但是和webMVC框架略有不同。

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具有撤销和回退功能。一组commandEditPolicy控制。

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);

       }

 

       /**

        * ˢ�¡äӶԻ��

分享到:
评论
3 楼 Ethip 2011-02-25  
qq123zhz 写道
有乱码 为什么发布上去?

2 楼 qq123zhz 2011-01-21  
有乱码 为什么发布上去?
1 楼 qq123zhz 2011-01-21  
/**
* ˢ�¡äӶԻ��

相关推荐

    自己下的GEF资源打包

    这个资源包可能包含了对理解、学习和使用GEF非常有帮助的材料。描述进一步说明了这个包中包含的具体内容,如“GEF_Tutorial”、“GEF实例”、“入门教程”以及“GEF-whole-upload”,这些都暗示了这是一个全面的学习...

    GEF入门必读 GEF入门系列 GEF-whole-upload

    **GEF(Graphical Editing Framework)** 是一个用于构建图形化编辑器的开源框架,它在Eclipse平台上广泛使用,特别是在开发复杂的图形用户界面和工具时。本资料集旨在为初学者提供一个全面的入门指南,帮助理解GEF...

    gef 转折线的相关方法实现和 GEF的API chm 格式

    - `org.eclipse.gef.requests.Request`:表示用户或系统对编辑域的某种请求,如创建新对象或选择对象。 - `org.eclipse.gef.editpolicies`包下的类:提供了各种编辑策略,如连接策略、布局策略等,它们决定了...

    GEF入门学习例子

    3. **编辑器(Editor)**: 编辑器是Eclipse插件开发中的一个关键组件,它提供了对模型的编辑功能。GEF编辑器通常基于`AbstractGraphicalEditor`类,可以集成到Eclipse IDE中。 4. **指挥者(Commander)**: 指挥者处理...

    GEF Example Source Code

    **GEF(Graphical Editing Framework)** 是一个用于构建图形编辑工具的开源框架,它为开发人员提供了一套全面的库和工具,用于创建基于Eclipse的富客户端平台(RCP)的应用程序,特别是那些涉及图形用户界面(GUI)...

    Eclipse的GEF学习

    1. 用户对编辑区域的操作(如选择、新增、删除节点)首先由EditPartViewer接收。 2. 操作被转换为请求(Request),并根据操作的角色(Role)分配给适当的EditPolicy。 3. EditPolicy根据请求创建对应的Command对象,...

    GEF简易教程-学习GEF的入门教程

    创建Editor后,接下来是对Editor进行定制化开发。这包括但不限于: - **自定义图形元素**:通过EditParts定义图形的外观与行为。 - **模型绑定**:确保视图中的图形元素与模型数据保持一致。 - **事件处理**:实现...

    java gef开发实例

    Java GEF(Graphical Editing Framework)开发实例是一个深入理解并应用GEF框架的优秀实践案例。GEF是Eclipse平台上...通过实际操作和调试,可以加深对GEF框架的理解,并为将来更复杂的图形编辑器开发打下坚实基础。

    GEF 3.10 eclipse 插件

    2. **创建项目**:新建一个Eclipse插件项目,并在项目的MANIFEST.MF文件中声明对GEF的依赖。 3. **编写模型**:定义图形编辑器的数据模型,这通常是基于Java类的。 4. **实现视图**:根据模型创建视图,包括图元的...

    IBM GEF 推广资料

    2. **创建和弯曲**:可以创建新的图形元素,或者对现有元素进行形状变换。 3. **连接**:图形元素之间可以通过线条或其他连接方式进行交互。 4. **删除、撤销和重做**:提供了基本的编辑历史管理,方便用户纠正错误...

    GEF锚点鼠标定位

    在图形编辑框架(GEF,Graphical Editing Framework)中,锚点(Anchor)是一个关键概念,它是连接模型元素之间的连接线在元素上的固定点。在GEF中,锚点的定位直接影响到连接线的形状和行为,特别是当用户通过鼠标...

    GEF教程和demo源码

    **GEF(Graphical Editing Framework)教程与Demo源码详解** GEF,全称为Graphical Editing Framework,是Eclipse平台上用于构建图形化编辑器的一种框架。它为开发人员提供了丰富的工具,可以方便地创建出复杂的...

    GEF教程

    ### GEF教程精要 #### 引言:GEF框架概览 GEF,全称为Graphical Editor Framework...GEF框架的学习之路虽漫长,但其带来的回报无疑是巨大的,无论是对个人技能的提升,还是对项目成果的贡献,都有着不可估量的价值。

    GEF_Tutorial.rar(GEF开发指南)

    随着对GEF的深入学习,你可能还会接触到更多高级特性,如Zest(用于创建图表和网络图的GEF扩展)、自定义编辑政策(EditPolicies)以控制特定图元的行为,以及自定义图元的绘画策略等。 总之,"GEF_Tutorial.rar"是...

    GEF-SDK-3.6.2 jar

    《GEF-SDK-3.6.2 jar:Eclipse GEF框架详解及在Android ADT中的应用》 GEF(Graphical Editing Framework)是Eclipse项目中的一个重要组成部分,它为开发图形化编辑器提供了强大的支持。在标题“GEF-SDK-3.6.2 jar...

    GEF-Update-3.7.1.zip

    在3.7.1版本中,GEF可能包含了对性能的优化、API的改进、新特性的添加以及已知问题的修复。例如,可能增加了对Eclipse最新版本的兼容性,提升了图形绘制效率,或者提供了更灵活的自定义选项。为了充分利用这些更新,...

    GEF典型实现例子

    文件名列表中,尽管没有直接的代码文件,但“Gef.doc”可能是关于GEF的文档,可能包含了对GEF的介绍、使用方法以及例子的详细说明。MHT文件通常是网页的单个文件存档,可能保存了两篇与GEF相关的博客文章:“Draw2D...

    GEF-SDK-3.7.0

    6. **事件处理与反向工程**:GEF可以捕获用户对图形的操作,并将这些操作转化为代码,反之亦然,支持模型到视图的同步。 **Eclipse** 是一个高度可扩展的开放源码IDE,最初为Java开发而设计,但现在支持多种语言和...

Global site tag (gtag.js) - Google Analytics