`

[zt]EMF-edit功能解析

阅读更多

FROM:http://blog.csdn.net/nickcen/archive/2005/04/14/346859.aspx

1.      EMF.edit
a)       说明:EMF.edit位于EMF.editorEMF.Ecore之间,他起了一个中介者的作用。他负责把来自EMF.editorUI相关的请求转换成符合EMF.EcoreUI无关的调用。他需要提供以下四个功能:实现用于支持Viewer显示的ContentProviderLabelProvider;实现用于支持属性显示的IPropertySource;实现用于支持对模型进行操作的CommandFramework;实现用于支持修改通知的Framework
 
b)       ContentProviderLabelProvider
                     i.             图:
 
                  ii.             说明:当TreeViewer需要显示内容时,调用她的IContentProvidergetChildren(Object obj)方法。这个方法会被转发到AdapterFactoryContentProvider内部。她通过她所引用的ItemProviderAdapterFactory来获取一个对objITreeItemContentProvider类型的Adapter,这个Adapter是由EMF生成的对应于ECore模型的一个ItemProviderAdapter(这里为TeacherItemProvider),最后由这个TeacherItemProvider负责生成所需要显示的子节点列表。
 
               iii.             代码:
public classAdapterFactoryContentProvider implements ITreeContentProvider {
public Object []getChildren(Object object){
ITreeItemContentProvider treeItemContentProvider =
(ITreeItemContentProvider)adapterFactory.adapt(object,
ITreeItemContentProvider.class);
return treeItemContentProvider.getChildren(object);
}
}
注:红色是UI相关的请求,蓝色是UI无关的适配器类,粉红色就是UI无关的请求。
 
c)       IPropertySource
                     i.             图:
 
                  ii.             说明:当PropertySheetPage需要显示属性内容时,他访问他的IPropertySourceProvidergetPropertySource(Object obj)方法。这个方法会被转发到AdapterFactoryContentProvider内部。她通过她所引用的ItemProviderAdapterFactory来获取一个对objIItemPropertySource类型的Adapter,这个Adapter是由EMF生成的对应于ECore模型的一个ItemProviderAdapter(这里为TeacherItemProvider),最后由这个TeacherItemProvider负责生成所需要显示的属性列表。
               iii.             代码:
public classAdapterFactoryContentProvider implements IPropertySourceProvider{
     public IPropertySource getPropertySource(Object object){
                       IItemPropertySource itemPropertySource =(IItemPropertySource)
adapterFactory.adapt(object,IItemPropertySource.class));
}   
}
 
d)       Command Framework
                     i.             图:
 
                  ii.             说明:由于EMF.editor并不了解底层的模型细节,因此他不能直接对模型进行操作,他需要生成一些用于操作模型的Command对象。当editor需要对模型进行修改时,他通过调用他的createCommand(EditingDomain domain)方法,创建用于进行模型操作的Command对象,该方法最后会被转发到domaincreateCommand(),然后domain会根据他所引用的ItemProviderAdapterFactory来获取一个IEditingDomainItemProvider的适配器,由他来最后生成用于对模型进行操作的Command对象。
 
               iii.             代码:
public class DeleteAction extendsCommandActionHandler{
public CommandcreateCommand(Collection selection){
returnRemoveCommand.create(domain, selection);
}
}
public class RemoveCommand extendsAbstractOverrideableCommand{
public static Commandcreate(…){
return domain.createCommand(…);
}
}
public classAdapterFactoryEditingDomain implements EditingDomain{
public CommandcreateCommand(…){
IEditingDomainItemProvider editingDomainItemProvider =
(IEditingDomainItemProvider)adapterFactory.adapt(owner,
IEditingDomainItemProvider.class);
returneditingDomainItemProvider.createCommand(…);
}
}
注:当需要执行命令时,editor会调用EditingDomain上的CommandStack,并调用他上面的execute(Command c)方法。
 
e)       Notify Framework
                     i.             图:
 
                  ii.             说明:当我们修改了模型的值以后,模型将会向他对应的ItemProvider发出一个更新通知,这个通知随后被转发到ItemProviderAdapterFactory,然后最终发到AdapterFactoryContentProvider处,并由他来负责更新对应的viewer
 
分享到:
评论

相关推荐

    emf-sdo-xsd-SDK-2.3.2.zip

    本文将详细解析"emf-sdo-xsd-SDK-2.3.2.zip"这一关键插件,探讨它在Eclipse TPTP插件安装中的作用以及背后的原理和技术。 1. **Eclipse TPTP插件**: TPTP(Test and Performance Tools Platform)是Eclipse基金会...

    emf-xsd-SDK-2.6.1

    在"emf-xsd-SDK-2.6.1"的压缩包中,包含了Eclipse环境的相关文件,这通常意味着我们可以在这个环境中开发和测试基于EMF和XSD的模型应用。Eclipse是一个集成开发环境(IDE),支持多种编程语言和插件,EMF相关的插件...

    Eclipse-EMF-GEF资料.rar

    3. **EMF-Edit**: "EMF-edit功能解析.doc" 详细阐述了 EMF-Edit,它是 EMF 集成的一部分,提供了构建图形编辑器的基础。EMF-Edit 允许开发者快速创建与 Ecore 模型相关的图形界面,以直观地操纵和展示模型数据。 4....

    emf-sdo-SDK-2.2.2

    在实际开发中,`emf-sdo-SDK-2.2.2`可以帮助开发人员快速构建数据驱动的应用程序,通过模型驱动的方法提高开发效率,同时利用SDO的强大功能来处理复杂的数据访问和转换问题。在Eclipse环境中,该插件通常会包含必要...

    emf-sdo-SDK-2.2.0(2) eclipse 可视化 界面设计

    emf-sdo-SDK-2.2.0(2) eclipse 可视化 界面设计。 因为size太大,所以分成了2部分,另一部分在 emf-sdo-SDK-2.2.0(1)里面。 emf-sdo-SDK-2.2.0(1)的下载地址: http://download.csdn.net/source/1002774

    emf-sdo-xsd-SDK-2.0.1.zip

    在EMF-SDO-XSD SDK中,"eclipse"可能指的是Eclipse集成开发环境(Integrated Development Environment),这是一个广泛使用的Java开发工具,也支持多种其他语言和框架,包括Struts。开发者可以使用Eclipse来导入和...

    emf-xsd-Update-2.7.2

    【标题】"emf-xsd-Update-2.7.2" 涉及到的是一个针对Eclipse集成开发环境的扩展,主要关注的是EMF(Eclipse Modeling Framework)和XSD(XML Schema Definition)的更新版本2.7.2。这个更新包包含了对EMF框架的增强...

    emf-runtime-2.6.1.7z

    Eclipse 3.6.1(Helios)的插件。emf-runtime-2.6.1.7z。

    emf-xsd-Update-2.10.2

    通过安装和使用"emf-xsd-Update-2.10.2",开发者可以利用EMF的强大功能,创建XML Schema Definition (XSD)模型,并通过Visual Editor进行可视化编辑。这极大地简化了处理复杂数据结构和业务逻辑的过程,提高了开发...

    emf-runtime-2.5.0.zip

    "emf-runtime-2.5.0.zip" 是一个包含EMF运行时库的压缩文件,版本为2.5.0。这个版本可能包含了对模型对象的创建、序列化、反序列化以及与模型相关的事件处理等功能。它对于那些希望在Eclipse环境下开发图形化编辑器...

    emf-runtime,eclipse modeling framework

    Eclipse Modeling Framework(EMF)是Eclipse项目中的一个核心组件,它提供了一种模型到代码的转换...通过Eclipse插件形式提供的最新emf-runtime版本2.10.1,开发者可以利用最新的功能和改进,提升建模和开发的效率。

    emf-runtime-2.6.1

    标题中的"emf-runtime-2.6.1"指的是EMF框架的运行时组件,版本号为2.6.1。 EMF的核心功能包括: 1. **模型定义**:通过扩展XML Schema Definition (XSD) 或者ECORE(EMF的元数据模型)来定义模型结构。ECORE是一种...

    emf-sdo-runtime-2.2.0.zip

    "emf-sdo-runtime-2.2.0.zip" 是一个包含EMF SDO运行时库的压缩包,用于在Eclipse环境中集成SDO功能。这个版本号2.2.0表明这是一个特定的稳定版本,包含了该版本中所有修复的bug和新增的功能。 在压缩包内的...

    emf-sdo-xsd-SDK-2.4.0.zip

    emf-sdo-xsd-SDK-2.4.0.zip emf是Eclipse modeling framework组建框架的缩写;SDO是服务数据对象的缩写,它是Java程序的一种数据编程框架;emf-sdo-xsd-SDK-2.4.0.zip是Eclipse编程器的组成员之一。

    emf-sdo-runtime

    在使用`emf-sdo-runtime`进行开发时,通常会结合Eclipse的其他工具,如EMF的模型编辑器(EMF Edit)、图型化建模工具(GMF)等,来提升工作效率。通过这些工具,开发者可以图形化地设计数据模型,自动生成相应的Java...

    emf-sdo-runtime-2.2.0.zip、GEF-runtime-3.2.zip和VE-runtime-1.2.3_jem.zip

    myeclipse ,swing ,chajian,解压,添加

    emf-sdo-xsd-SDK-2.2.1

    标题中的"emf-sdo-xsd-SDK-2.2.1"指的是Eclipse Modeling Framework (EMF) Service Data Objects (SDO) XSD SDK的一个特定版本,即2.2.1。EMF是Eclipse基金会开发的一个强大的建模框架,它允许开发者创建、操作和...

    emf-sourcedoc

    【标题】:“EMF-Sourcedoc”:Java 可视化IDE插件解析与应用 【描述】:“EMF-Sourcedoc”是一个专为Java开发者设计的高效集成开发环境(IDE)插件,它提供了强大的可视化功能,帮助程序员更直观地理解和编辑模型...

Global site tag (gtag.js) - Google Analytics