xiaoxiaoleemin

天道酬勤,小小加油
posts - 19, comments - 12, trackbacks - 0, articles - 0

如何显示PropertySheet视图

Posted on 2007-05-06 17:24 xiaoxiaoleemin 阅读(2042) 评论(2)  编辑  收藏 所属分类: EMF
    前面的几篇是读了《EMF:A Developer's Guide》一书前三章的读书笔记,我觉得这三章的内容是最重要的,介绍了EMF Framework的一些设计、结构以及实现的问题。但是这些只是一些原理性的东西,要熟练掌握EMF的方法是在项目中应用它,我们可以从修改EMF生成的代码入手。EMF生成的编辑器是MultiPageEditor,比较复杂,我们可以参考它自己写一个普通的Editor,在这个过程中可以熟悉哪些代码是用于实现哪些功能的。
    下面用一个简单的例子来说明如何实现PropertySheet,这里只关心与PropertySheet有关的代码:
public class MySchoolEditor extends EditorPart implements ISelectionListener{
    ...
    PropertySheetPage propertySheetPage;

    public void init(IEditorSite site, IEditorInput input) throws PartInitException {
        ...
        propertySheetPage = getPropertySheetPage();
    }

    public PropertySheetPage getPropertySheetPage() {
        if (propertySheetPage == null) {
           propertySheetPage = new PropertySheetPage();
           propertySheetPage.setPropertySourceProvider(new
AdapterFactoryContentProvider(adapterFactory));              
        }
        return propertySheetPage;
    }

    public Object getAdapter(Class key) {
     
         if (key.equals(IPropertySheetPage.class))
             return getPropertySheetPage();        
         else
            return super.getAdapter(key);      
    }
}
    创建PropertySheetPage之后,为它设置PropertySourceProvider,参数是一个AdapterFactoryContentProvider实例,在前面的帖子里边说过,它实现了IPropertySourceProvider接口,其getPropertySource方法是这样实现的:比如我们在编辑器里边选中一个teacher对象,它先找到Teacher类对应的实现了IItemPropertySource的TeacherItemProvider对象,然后以这两个对象作为参数新建一个PropertySource。
    getAdapter方法继承自WorkbenchPart类(EditorPart和ViewPart都是它的子类,都可以重写这个方法),当我们需要打开属性页视图时,该方法会被调用,传入的参数就是IPropertySheetPage.class,因此返回我们新建的PropertySheetPage,属性页就出现了。

Feedback

# re: 如何显示PropertySheet视图  回复  更多评论   

2007-05-06 17:34 by xiaosai
刚才在寻找gmf资料的时候发现了小小的blog,好棒啊,赞死了。看来以后要常来光顾了:)

# re: 如何显示PropertySheet视图  回复  更多评论   

2007-05-06 18:04 by xiaoxiaoleemin
呵呵,真巧,不过还没有GMF的内容,我得抓紧时间整理了:)

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


网站导航: