前面的几篇是读了《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,属性页就出现了。
分享到:
相关推荐
在这个场景下,我们不是处理传统的文档视图结构,而是用propertysheet来代替视图,提供一种类似对话框的用户体验。 实现propertysheet的第一步是创建一个继承自CPropertySheet的类。这个类会包含对话框的标题、样式...
数据模型存储对象的属性信息,而视图(即Propertysheet控件)则显示和编辑这些属性。当属性值改变时,视图应实时更新,同时模型也需通知任何依赖它的其他部分。 7. **使用示例**: `example_jpropertysheet.m`脚本...
"Property Sheet View"是MFC(Microsoft Foundation Class)库中的一种视图类,它提供了一个用户界面元素,类似于Windows操作系统中的“属性页”对话框。这个界面通常用于展示和编辑对象的各种属性,每个属性页代表...
在本文中,我们将深入探讨`CTreeCtrl`控件在Visual C++(VC)环境中的应用,以及如何结合`PropertySheet`实现一个树形控件的属性页。`CTreeCtrl`是MFC(Microsoft Foundation Classes)库中用于创建树形视图的类,它...
树视图部分显示可展开的节点,每个节点代表一个对象或类别,而属性表则显示所选节点的详细属性。"Special caption"可能指的是可以自定义的标题,这允许开发者为控件添加特定的标识或信息,使其更符合应用的需求。...
首先,理解“属性框”(Property Sheet)和“属性列表视图”(Property List View)的概念。属性框通常表现为一个多页面的对话框,每个页面代表一类相关的设置或属性。而属性列表视图则是展示这些属性的一种控件,它...
`m_PropertySheet`是属性页集,`m_Page1`是添加到属性页集中的一个页面。通过这种方式,用户可以在对话框中看到并交互操作属性页。 7. 资源文件:在资源编辑器中,你需要为属性页和对话框创建对应的IDD(对话框ID)...
在Windows编程中,属性页(Property Sheet)是一种常见的用户界面元素,用于展示多个相关的设置页面。标题通常是属性页上方的文字,用于标识当前显示的内容。在本案例中,"MyPropertySheetDlg" 指的可能是一个自定义...
5. **创建属性表**:回到主对话框类,添加CPropertySheet成员变量,如CPropertySheet m_propertySheet,并在 OnInitDialog() 函数中初始化属性表,包括添加属性页和设置标题。 ```cpp m_propertySheet.AddPage(&m_...
文件列表中的"PropertySheet"可能是相关的源代码文件或者示例代码,包含了实现Eclipse属性页功能的具体代码片段。这些文件可能包括了类定义、XML配置文件(用于注册插件和扩展点)以及其他支持性资源。 总的来说,...
SNAPVW(VC6.0)是一个专为Visual C++ 6.0设计的示例项目,用于演示如何在视图(View)中嵌入属性页(Property Sheet)。属性页通常用于展示和编辑对象的各种属性,使得用户界面更加直观且易于操作。在早期的Windows...
在Windows API中,属性表通常通过`PROPSHEETHEADER`结构和相关函数如`PropertySheet`来创建。 3. **结合列表控件和属性表**:在实际应用中,列表控件可以用来显示一组对象,而属性表则用来展示这些对象的详细属性。...
add3dtext.zip Placing a 3D Logo Text In the PropertySheet Button Area 附加功能是控制PropertySheet区域特别是按纽部分的颜色(37KB)<END><br>10,proppage.zip Modifying Property Sheet Templates on ...
属性表(Property Sheet,又称选项卡对话框)提供了多页界面,每一页代表一类相关设置。CPropertySheet和CPropertyPage类分别用于创建属性表和属性页,这种布局便于组织大量设置,提高用户体验。 第9章:控件窗口 ...
在Windows API中,这通常由PROPSHEETHEADER结构和PropertySheet函数实现。在MFC中,CPropertySheet和CPropertyPage类用于创建属性对话框。在本框架中,属性页被内嵌到其中一个或多个视区中,允许用户交互式地修改...
GEF提供了`PropertySheet`来展示属性,并且可以自定义属性页,以便根据模型类的不同属性显示不同的编辑控件。 **十二、拖放(Drag and Drop)** GEF支持拖放操作,用户可以将图形元素从一个位置拖动到另一个位置,...
8. **PropSheet.cpp**: 这可能涉及到属性页(Property Sheet)的实现,允许用户通过多个对话框页面来配置Splitter或应用程序的设置。 9. **StdAfx.cpp**: 标准预编译头文件,用于包含预编译的头文件,提高编译速度...
6. **My_PropertySheet.cpp**: 这可能是自定义属性页的实现,属性页通常用于展示和编辑对象的多个相关属性,可以组织成分页的形式,方便用户浏览和操作。 7. **UIView.cpp**: 用户视图类的实现,负责在界面上呈现...
属性表单的核心组件是`PropertySheet`类,它是MFC(Microsoft Foundation Classes)库的一部分。在VC6.0中,我们可以通过以下步骤来创建和使用属性表单: 1. **创建新工程**:首先,我们需要创建一个新的MFC应用...
- **Property Sheet**: 显示选定对象的属性,允许实时修改。 2. **DataWindow(数据窗口)** - **创建与设计**: 数据窗口是PowerBuilder的核心组件,用于显示和操作数据库数据。可以通过图形化界面设计各种复杂的...