`
yiliner
  • 浏览: 214511 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何显示PropertySheet视图

    博客分类:
  • 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,属性页就出现了。

分享到:
评论

相关推荐

    MFC单文档文件对话框propertysheet设置

    在这个场景下,我们不是处理传统的文档视图结构,而是用propertysheet来代替视图,提供一种类似对话框的用户体验。 实现propertysheet的第一步是创建一个继承自CPropertySheet的类。这个类会包含对话框的标题、样式...

    matlab开发-Propertysheet

    数据模型存储对象的属性信息,而视图(即Propertysheet控件)则显示和编辑这些属性。当属性值改变时,视图应实时更新,同时模型也需通知任何依赖它的其他部分。 7. **使用示例**: `example_jpropertysheet.m`脚本...

    Property Sheet View

    "Property Sheet View"是MFC(Microsoft Foundation Class)库中的一种视图类,它提供了一个用户界面元素,类似于Windows操作系统中的“属性页”对话框。这个界面通常用于展示和编辑对象的各种属性,每个属性页代表...

    treepropertysheet_source.zip_CTreeCtrl_PropertySheet_TreeCtrl_VC

    在本文中,我们将深入探讨`CTreeCtrl`控件在Visual C++(VC)环境中的应用,以及如何结合`PropertySheet`实现一个树形控件的属性页。`CTreeCtrl`是MFC(Microsoft Foundation Classes)库中用于创建树形视图的类,它...

    TREE_PROPERTY_SHEET_DEMO.rar_DEMO

    树视图部分显示可展开的节点,每个节点代表一个对象或类别,而属性表则显示所选节点的详细属性。"Special caption"可能指的是可以自定义的标题,这允许开发者为控件添加特定的标识或信息,使其更符合应用的需求。...

    MFC对话框上实现属性列表视图

    首先,理解“属性框”(Property Sheet)和“属性列表视图”(Property List View)的概念。属性框通常表现为一个多页面的对话框,每个页面代表一类相关的设置或属性。而属性列表视图则是展示这些属性的一种控件,它...

    在对话框中加入属性页 代码及使用说明

    `m_PropertySheet`是属性页集,`m_Page1`是添加到属性页集中的一个页面。通过这种方式,用户可以在对话框中看到并交互操作属性页。 7. 资源文件:在资源编辑器中,你需要为属性页和对话框创建对应的IDD(对话框ID)...

    MyPropertySheetDlg.

    在Windows编程中,属性页(Property Sheet)是一种常见的用户界面元素,用于展示多个相关的设置页面。标题通常是属性页上方的文字,用于标识当前显示的内容。在本案例中,"MyPropertySheetDlg" 指的可能是一个自定义...

    vs2015 利用MFC实现单文本情况下属性表的建立

    5. **创建属性表**:回到主对话框类,添加CPropertySheet成员变量,如CPropertySheet m_propertySheet,并在 OnInitDialog() 函数中初始化属性表,包括添加属性页和设置标题。 ```cpp m_propertySheet.AddPage(&m_...

    Eclipse属性页的支持

    文件列表中的"PropertySheet"可能是相关的源代码文件或者示例代码,包含了实现Eclipse属性页功能的具体代码片段。这些文件可能包括了类定义、XML配置文件(用于注册插件和扩展点)以及其他支持性资源。 总的来说,...

    SNAPVW(VC6.0)

    SNAPVW(VC6.0)是一个专为Visual C++ 6.0设计的示例项目,用于演示如何在视图(View)中嵌入属性页(Property Sheet)。属性页通常用于展示和编辑对象的各种属性,使得用户界面更加直观且易于操作。在早期的Windows...

    商业编程-源码-如何实现由列表控件控制的属性表.zip

    在Windows API中,属性表通常通过`PROPSHEETHEADER`结构和相关函数如`PropertySheet`来创建。 3. **结合列表控件和属性表**:在实际应用中,列表控件可以用来显示一组对象,而属性表则用来展示这些对象的详细属性。...

    Visual C++ 编程资源大全(英文控件)

    add3dtext.zip Placing a 3D Logo Text In the PropertySheet Button Area 附加功能是控制PropertySheet区域特别是按纽部分的颜色(37KB)&lt;END&gt;&lt;br&gt;10,proppage.zip Modifying Property Sheet Templates on ...

    MFC窗口程序设计源码(免费)

    属性表(Property Sheet,又称选项卡对话框)提供了多页界面,每一页代表一类相关设置。CPropertySheet和CPropertyPage类分别用于创建属性表和属性页,这种布局便于组织大量设置,提高用户体验。 第9章:控件窗口 ...

    VC6单文档三叉分割框架(内嵌属性页)

    在Windows API中,这通常由PROPSHEETHEADER结构和PropertySheet函数实现。在MFC中,CPropertySheet和CPropertyPage类用于创建属性对话框。在本框架中,属性页被内嵌到其中一个或多个视区中,允许用户交互式地修改...

    GEF中文帮助实例

    GEF提供了`PropertySheet`来展示属性,并且可以自定义属性页,以便根据模型类的不同属性显示不同的编辑控件。 **十二、拖放(Drag and Drop)** GEF支持拖放操作,用户可以将图形元素从一个位置拖动到另一个位置,...

    SSplitter_demo

    8. **PropSheet.cpp**: 这可能涉及到属性页(Property Sheet)的实现,允许用户通过多个对话框页面来配置Splitter或应用程序的设置。 9. **StdAfx.cpp**: 标准预编译头文件,用于包含预编译的头文件,提高编译速度...

    MSDN风格界面.zip_c 界面_msdn

    6. **My_PropertySheet.cpp**: 这可能是自定义属性页的实现,属性页通常用于展示和编辑对象的多个相关属性,可以组织成分页的形式,方便用户浏览和操作。 7. **UIView.cpp**: 用户视图类的实现,负责在界面上呈现...

    属性表单 vc6。0

    属性表单的核心组件是`PropertySheet`类,它是MFC(Microsoft Foundation Classes)库的一部分。在VC6.0中,我们可以通过以下步骤来创建和使用属性表单: 1. **创建新工程**:首先,我们需要创建一个新的MFC应用...

    Powerbuilder6.5图解文档

    - **Property Sheet**: 显示选定对象的属性,允许实时修改。 2. **DataWindow(数据窗口)** - **创建与设计**: 数据窗口是PowerBuilder的核心组件,用于显示和操作数据库数据。可以通过图形化界面设计各种复杂的...

Global site tag (gtag.js) - Google Analytics