一个emf新手的学习笔记 --EMF 生成的代码阅读笔记(二)

本文介绍了EMF生成的模型编辑器及其组成部分,包括编辑器的六种呈现方式及Outline部分,并深入探讨了EMF如何通过Item Provider实现UI与逻辑分离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个emf新手的学习笔记 --EMF 生成的代码阅读笔记(二)

EMF不光为我们生成了模型类的代码。还为我们提供了一个默认的模型编辑器。要看到这个模型编辑器我们只需要运行一下就可以看到了(用Eclipse Application的方式)。

共有三个部:

1.       编辑器的主体。包括六种呈现方式。

a)       Selection.

b)     Parent.

c)     List.

d)     Tree

e)       Table

f)       Tree With Columns.

2.       Outline部分。

Properties,会根据选择不同的对象而改变显示的内容。关于Jface部分的工作模式我在《Table View 的合作类的模式》一文中有提到,不过需要说明的是,在Jface中的Viewer他们的ContentProvider可能不一样的。

要完成这部分的功能emf的产生代码中分别放到了两个插件里实现了他们分别是edit和editor。

Edit提供了Item 的Provider,他存在的意义就在于把逻辑对象和UI分割开。而Editor通过使用edit提供的Provider实现了一个编辑器的UI和Command部分,他是正真的用户界面部分。

下面我们就先来看看edit中的类。

好了,首先edit中使用的是adapt模型。所以edit中的插件对象会实现所有的viewer,Properties所需要的接口。

Emf为我们实现通用的接口。所以这绝对是一个学习的好机会。

废话不多说了,来看代码把。

首先看声明:

public class FamilyItemProvider
  extends ItemProviderAdapter
  implements  
    IEditingDomainItemProvider,  
    IStructuredItemContentProvider,  
    ITreeItemContentProvider,  
    IItemLabelProvider,  
    IItemPropertySource {
他的继承关系可以用下图来表示:


他们之间的职能以及实现的接口可用下图来描述:

AdapterImpl是为了实现Adapter模式而设定。
ItemProviderAdapter完成一些基本功能。下面就分别从不同的接口来说明
1.    ResourceLocator:该接口是用来进行资源定位的。
2.    IDisposable 是emf框架提供的一种析构接口。
3.    IChangeNotifier 为"Notification and Adapters"模式提供必需的方法。
4.    CreateChildCommand.Helper

最下面的EMF根据我们的模型产生的Provider的了。他实现了5个接口。
1.    IEditingDomainItemProvider
这部分我还清楚,怀疑和command有关。
2.    IStructuredItemContentProvider
该接口为TableViewer,ListViewer,TreeViewer提供服务。
This is the interface needed to populate the top level items in a TreeViewer, the items of a ListViewer, or the rows of a TableViewer.
3.    ITreeItemContentProvider
This is the interface needed to populate subtrees in a TreeViewer
4.    IItemLabelProvider
This is the interface implemented to provide a label text and even a label icon for an item;
it receives delegated calls from ILabelProvider.
5.    IItemPropertySource
eclipse插件开发学习笔记源码是指记录学习eclipse插件开发过程中的笔记所对应的源代码。在学习eclipse插件开发时,我们通常会通过写笔记的方式记录自己的理解、遇到的问题以及对应的解决方案。而这些笔记所涉及的源码,就是指在实践过程中编写的相关代码。 在学习eclipse插件开发时,源码是非常重要的,因为它直接反映了我们对于插件开发知识的理解和实践能力。一般而言,我们的源码应该包含以下几个方面的内容。 首先,源码应该包括插件的基本结构和配置信息。这包括插件的manifest.mf文件和plugin.xml文件。manifest.mf文件用于定义插件的基本信息,包括插件的名称、版本号以及对其他插件的依赖关系等。而plugin.xml文件则用于定义插件的扩展点和扩展。 其次,源码应该包括对于eclipse平台核心概念的理解和应用。例如,我们可以编写代码来创建和管理视图、编辑器、菜单、工具栏等界面元素,以及定义和处理事件等。 另外,源码还应该包含对于第三方插件的使用和扩展。eclipse的插件生态系统非常丰富,我们可以通过使用第三方插件来快速实现一些功能。比如,我们可以使用JFace、SWT等第三方库来创建复杂的UI界面,使用EMF来定义和管理领域模型等。 总之,eclipse插件开发学习笔记的源码应该是一个不断积累和完善的过程。通过编写源码,我们可以更好地理解和掌握eclipse插件开发的知识和技术,提高自己的实践能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值