本文是在 http://winseclone.iteye.com/blog/1774307 基础上,实现模型属性值改变后更新视图。
在Eclipse-articles propertyviewsample.zip的例子中adaptableObject是一个View(ButtonElement封装了Button),模型属性值改变后会通过ButtonElementProperties.firePropertyChanged(String, Object)更新Button(视图)。
protected void firePropertyChanged(String propName, Object value) { Button ctl = element.getControl(); if (ctl == null) { // the GUIView is probably hidden in this case return; } if (propName.equals(PROPERTY_FONT)) { ctl.setFont(new Font (ctl.getDisplay(),new FontData((String)value)) ); return; } if (propName.equals(PROPERTY_TEXT)) { ctl.setText((String)value); return; } }
上例中的方式,会导致代码臃肿,且灵活性不高。
EMF采用观察者模式(listener)方式来提高代码的灵活性。EMF使用到org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider类来实现。
首先,通过eAdapters()注册到模型对象 [r1] 。AdapterFactoryContentProvider中包括了Viewer视图实例,同时实现了INotifyChangedListener。
其次,当模型属性改变时,通过模型的eAdapters()获得监听器,通知监听者更新视图TreeViewer。
通知监听器,更新视图:
++ ItemPropertySource适配了Properties视图需要的IPropertySource对象
org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider.getPropertySource(Object)
|-org.eclipse.emf.edit.ui.provider.PropertySource.PropertySource(Object, IItemPropertySource)
参考:
r1:EMF监听实现:
http://www.vogella.com/articles/EclipseEMFNotification/article.html
http://wiki.eclipse.org/EMF/Recipes#Notification_Framework_Recipes
http://yiliner.iteye.com/blog/213846 (ContentAdapter会监听孩子的变化, 添加到notifier的时刻会递归添加到其孩子)
resource.eAdapters().add(contentAdapter);
相关推荐
- **修改(Update)**:用户编辑记录并提交,控制器获取修改后的数据,模型执行更新操作,更新成功后反馈给视图。 - **查询(Select)**:用户可以通过搜索条件获取数据,控制器处理查询请求,模型执行查询操作,将...
5. 关联视图和模型:在RCP应用中,你可以选择将属性视图与特定类型的模型对象关联。当用户在工作台中选择这种类型的对象时,属性视图会自动显示与该对象相关的属性。 6. 自定义属性:在适配器中,你可以根据需求...
通过设置依赖属性(Dependency Properties),视图可以轻松地将自身属性绑定到视图模型的属性,实现数据的双向通信。 **3. 视图模型的角色** 视图模型是MVVM架构的关键组件,它实现了INotifyPropertyChanged接口,...
视图的更新通常由控制器触发,但不直接修改模型数据,而是请求控制器进行操作。 3. **控制器(Controller)**:控制器作为模型和视图之间的桥梁,接收用户的输入并调用模型进行数据处理,然后更新视图。在E-家园...
视图通过数据绑定与视图模型关联,当视图模型中的数据发生变化时,视图会自动更新,反之亦然。 3. **视图模型(ViewModel)**:视图模型是模型和视图之间的桥梁,它实现了视图的数据和命令接口。视图模型包含与用户...
实现后的效果如图所示,满足了系统设计的需求,即点击处理器图形模型时能在属性视图中显示对应的硬件信息,同时在图形模型或属性视图中修改属性,另一端都会实时反映出变化。 在实际应用中,可以根据需求扩展属性...
视图模型通过实现INotifyPropertyChanged接口来通知视图数据的变化,使得WPF能够自动更新界面。 在本示例中,你可能会看到以下关键点: - **数据绑定**:WPF的强大的特性之一就是数据绑定,它可以自动同步视图模型...
3. **创建配置文件**:通常,我们会创建一个 `DispatcherServlet-servlet.xml` 配置文件,其中定义了视图解析器、模型-视图对、控制器 beans 等。 4. **定义 Controller**:使用 `@Controller` 注解标记 Java 类作为...
它采用模型-视图-控制器(MVC)设计模式,分离了业务逻辑、数据和用户界面,使得Web应用的开发更加简洁。 3. **MyBatis**:是一个持久层框架,它允许开发者编写SQL语句并与Java对象映射,减少了手动编写JDBC代码的...
- 添加/重命名模型对象(Add/Rename Model Objects):增加新的模型对象或修改现有对象的名称。 - 管理模型对象列表(Manage the List of Model Objects):组织和管理模型对象列表。 #### 七、标注策略 1. **标注...
模型属性可以通过“Model”→“Model Properties”或在资源浏览器中双击模型来查看和修改。 **4. 创建Requirements Model的步骤** 1. 首先,关闭当前Workspace,然后新建一个。 2. 在新Workspace中,通过“File”...
- **简化UI更新**:数据绑定使得视图模型的改变能够自动反映到视图上,减少手动操作。 - **利于团队协作**:不同团队成员可以专注于各自领域,如UI设计师专注于视图,而开发者专注于模型和视图模型。 ### 6. ...
这样设置后,在图纸空间不管你把视图放大几倍,标注的尺寸还是不变的。 2. 在模型空间画好图,在图纸空间标注、出图。在图纸空间不同的比例图,用不同的视口。 3. 打开文字属性栏,修改文字高度和宽度比例就可以了。...
- **Show composite view**(显示复合视图):展示包含多个视图的复杂模型视图。 - **Hide composite view**(隐藏复合视图):从当前视图中移除复合视图。 - **Find objects**(查找对象):搜索模型中的特定元素。...
控制器可以调用模型来获取或更新数据,并决定显示哪个视图。控制器也是实现应用程序逻辑和路由决策的地方。 4. **MVC的优点** - **可测试性**:由于模型、视图和控制器的职责明确,可以轻松编写单元测试,确保代码...
Struts2是一个流行的Java web应用框架,用于构建MVC(模型-视图-控制器)架构的应用程序。在Struts2中,`struts.properties`文件是核心配置文件,它位于应用的`classes`目录下,用于设定框架的行为和偏好。这个文件...
Watcher接收到变化通知后,会执行预定义的更新函数,从而更新视图。 4. **MVVM 模式**: MVVM(Model-View-ViewModel)模式在Vue中得到了实现。ViewModel是Vue实例,它是Model(数据模型)和View(视图)之间的...
根据给定的信息,本文将详细介绍3ds Max修改器的相关知识点,...以上就是3ds Max中常见的修改器及其功能介绍,这些修改器可以帮助用户高效地创建和编辑3D模型。了解并熟练掌握这些修改器是成为一名优秀3D艺术家的基础。
- 控制器(Controller):接收到用户的请求后,根据请求内容调用模型进行处理,并更新视图以反映变化。 **JSP、Servlet和JDBC的协同工作** 在JSP、Servlet和JDBC的联合使用中,通常采用以下工作流程: 1. 用户...
- **修改hibernate.properties**:配置Hibernate的属性,如连接池、方言、自动更新模式等。 - **修改log4j.properties**:配置日志输出级别、路径和格式,以便调试和记录应用程序运行信息。 - **编写Spring配置文件*...