邋遢居

我的Java天堂

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  61 Posts :: 2 Stories :: 90 Comments :: 0 Trackbacks

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

他默认的编辑器如下图所示viewer.gif

共有三个部:

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的产生代码中分别放到了两个插件里实现了他们分别是editeditor

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

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

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

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

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

首先看声明:

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

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

itemprivdelayer.gif
AdapterImpl是为了实现Adapter模式而设定.

ItemProviderAdapter完成一些基本功能。下面就分别从不同的接口来说明

1.         ResourceLocator:该接口是用来进行资源定位的。

2.         IDisposable emf框架提供的一种析构接口。

3.         IChangeNotifier 为"Notification and Adapters"模式提供必需的方法。

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

         This is the interface is needed to populate property sheet itemsit is the same as IpropertySourceexcept that the object is          passed as the first parameter for each method.

这一篇还只是edit部分刚开一个头。

下一期会介绍一下他的command部分。

posted on 2005-12-25 13:36 Jet Geng 阅读(1723) 评论(0)  编辑  收藏 所属分类: EMF

只有注册用户登录后才能发表评论。


网站导航: