`

EMF开发指南之Command Framework

UI 
阅读更多
★emf的command framework分为两部分,一部分是common的不依赖于emf.edit的command,另一个部分是和emf.edit关联的command,和emf.edit关联的command,通过EObject的相关方法来实现对model的attribute设置,reference修改,copy&paste操作等。
★在command command中,提供了一个Command接口,里面的方法包括execute(), undo(),redo(),canExecute(), canUndo()等等。其中getResult()方法的作用一般是用来告诉后续的command,当前操作的结果,这个在组合command中会用到,而getAffectedObject()方法则用来取得受execute(), redo(), undo()方法影响的对象,这个方法通常在emf.edit的ui framework中使用,比如一个属性被修改之后,其他受影响的属性也响应发生修改了,则ui对被修改的属性使用不同的颜色来加以标识(比如高亮),则两个方法返回的结果有时候会是一样的。
★从Command继承而来的AbstractCommand做的一件非常重要的事情就是实现了canExecute()方法,同时让从AbstractCommand继承的子类去实现prepare()方法来决定是否可执行,从而保证canExecute()最终只会被执行一次prepare()来做判断command是否能执行
★CommandStack主要在undo,redo的时候使用,它使用一个stack来维护所有可undoable的command,可以给commandstack添加一个CommandStackListener,那么stack中的所有command在被调用的时候都会出发该listener。BasicCommandStack是CommandStack的一个简单实现
★CompoundCommand用来一次执行多个command,它提供了一些特殊的操作,比如appendAndExecute(),该方法可以很好的将已执行的command加以记录下来,这样我们在undo的时候,直接倒过来执行commandlist中的每一个command即可,实际上其他的command也会在execute()方法里面这么干,另外一个方法就是unwrap(),如果你的compound command只有一个command的时候,该方法会起到一定的优化作用。
★Set,Add,Remove,Move,Replace以及CopyCommand都是和emf.edit关联的基本command,不过CopyCommand实际上是一个Compound Command,它结合了CreateCopyCommand和InitinalizeCopyCommand。对这些基本command加以组合便可以形成其他更高级的command,比如CreateChildCommand(AddCommand+SetCommand),CutToClipboardCommand(RemoveCommand),PasteFromClipboardCommand(AddCommand+CopyCommand),DragAndDropCommand(CopyCommand+RemoveCommand+AddCommand)等等。
★AbstractOverrideableCommand解决了一个代理的问题,不过还没明白有什么用 
★CommandParameter用来封装创建command所需要的参数,通过参看EditingDomain的createCommand方法实现我们可以得知,通过反射得到要创建的Command Class,接着根据约定:每一种Command必须提供相应的静态创建方法create来生成对应的Command实例
★model如何显示交给Label Provider来管理,而对model的维护则交给了EditingDomain,该实现主要做三件事:创建command,维护undo command stack,对编辑的resource提供访问接口。
★IEditingDomainItemProvider是用来访问model的层次关系的接口(Editing Domain也实现了这些方法,因此后者会调用前者的实现)。而IEditingDomainItemProvider的实现则是通过ItemProvider来取得
★ItemProviderAdapter也提供了一个根据editing domain, commandparameter创建command的createCommand()方法。它和AdapterFactoryEditingDomain的实现基本一样。
分享到:
评论

相关推荐

    eclipse插件开发经验汇总

    此外,本文档还将详细介绍EMF开发指南之Command Framework、Item Provider、Editor、属性详解、Attribute详解、Reference详解、客户端编程等方面的内容。 本文档旨在为读者提供一个详细的eclipse插件开发经验总结,...

    EMF开发过程整合资料

    EMF(Eclipse Modeling Framework)是Eclipse基金会提供的一款强大的模型化开发框架,主要用于构建基于模型的应用程序。它建立在Java平台上,为开发者提供了一种高效的方法来处理复杂的软件建模任务,支持元数据驱动...

    emf-runtime,eclipse modeling framework

    总之,Eclipse Modeling Framework(EMF)提供了一套强大的工具和API,帮助开发者构建基于模型的软件系统,简化了开发过程,并提高了代码的可维护性和可扩展性。通过Eclipse插件形式提供的最新emf-runtime版本2.10.1...

    EMF Eclipse Modeling Framework 第二版

    《EMF Eclipse Modeling Framework》第二版是由 Dave Steinberg、Frank Budinsky、Marcelo Paternostro 和 Ed Merks 四位专家编写的权威指南。本书是针对 Eclipse 建模框架(EMF)的全面修订版本,为读者提供了深入...

    使用EMF开发基于模型的Eclipse插件

    2. **EMF.Edit**:这部分建立在Ecore之上,提供了一组用于查看和修改模型的方法,还包括了一个内置的模型编辑器,使得开发人员可以直接在Eclipse环境中对模型进行操作。 #### EMF的适用场景 EMF非常适合于那些需要...

    Eclipse Modeling Framework (EMF) Developer Guide

    **EMF Framework Programmer's Guide** 部分为开发人员提供了深入理解 EMF 核心框架所需的知识。这部分涵盖了如何定义 EMF 模型、模型的实现方式以及如何使用这些模型进行数据存储和读取等内容。 - **定义 EMF 模型...

    基于eclipse的EMF插件开发程序详解

    EMF(Eclipse Modeling Framework)是一种基于Eclipse的模型驱动架构(MDA)工具,用于构建复杂的模型驱动应用程序。EMF提供了一种通用的模型驱动架构,允许开发人员使用统一的模型定义语言(MDL)定义模型,并生成...

    Eclipse开发使用GEF和EMF(IBM 红皮书)中英文对照版

    《Eclipse开发使用GEF和EMF》是IBM红皮书系列中的一部经典著作,主要探讨了如何在Eclipse环境中利用GEF(图形编辑框架)和EMF( Eclipse模型框架)进行图形化应用程序的开发。这两项技术是Eclipse平台上的核心组件,...

    EMF_Eclipse_Modeling_Framework_2nd_Edition 源码

    EMF(Eclipse Modeling Framework)是Eclipse平台上用于构建模型驱动软件开发工具的核心框架。它基于MDE(Model Driven Engineering)理念,提供了一种强大的方式来定义、创建和操作复杂的模型。本资源是《EMF:...

    java开发工具EMF插件

    Java开发工具EMF插件是Java开发者在进行模型驱动工程(Model Driven Engineering,MDE)时常用的一个强大工具。EMF(Eclipse Modeling Framework)是Eclipse IDE的一部分,它提供了一种框架和API,用于构建基于模型...

    eclipse插件开发EMF api 文档

    **与其他Eclipse组件集成**:EMF与Eclipse的其他组件如PDE(Plug-in Development Environment)、JDT(Java Development Tools)和gef(Graphical Editing Framework)等有良好的集成,可以方便地构建复杂的开发环境...

    基于eclipse的EMF插件开发图形化编辑程序

    在本文中,我们将深入探讨如何基于Eclipse的EMF(Eclipse Modeling Framework)插件来开发图形化编辑程序。EMF是Eclipse平台的核心部分,它提供了一套强大的工具和库,用于构建模型驱动的软件应用程序。让我们一起...

    java EMF,图形开发框架。也可用作eclipse的插件开发

    Java EMF,全称为“Eclipse Modeling Framework”,是Java平台上的一款强大的模型驱动工程(Model Driven Engineering, MDE)框架,也是Eclipse IDE中的一个重要组成部分。EMF为开发者提供了构建和使用模型化软件的...

    EMF.Eclipse Modeling Framework.2nd part1

    EMF.Eclipse Modeling Framework.2nd 第二版,part1

    EMF.Eclipse Modeling Framework.2nd part2

    EMF.Eclipse Modeling Framework.2nd part2 第二版 part2

    EMF.Eclipse Modeling Framework.2nd part3

    EMF.Eclipse Modeling Framework.2nd part3 第二版,part3

Global site tag (gtag.js) - Google Analytics