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

一个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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值