在EMF中进行模型对象通知的时候,有时候不仅仅模型对象改变时需要得到通知,模型对象的子对象(通过Containment关系包含起来的)发生改变的时候,也希望能够得到同样的通知。简单的实现方式可以创建一个Adapter,通过递归的方式将其注册在这个模型对象树的每一个节点对象上,但是那样做比较复杂,要同时处理添加和删除Adapter的工作。
在EMF中提供了变通的方式,可以使用EContentAdapter类来帮助完成这个任务。如下例所示:
public class ComponentAdapter extends EContentAdapter {
private Component component;
public void notifyChanged(Notification notification) {
super.notifyChanged(notification);
System.out.println(notification);
refresh();
}
public ComponentAdapter(Component component) {
component.eAdapters().add(this);
}
public void removeSelf() {
component.eAdapters().remove(this);
}
}
通过构造函数ComponentAdapter,可以将这个Adapter添加到Component这个模型对象上。当Component自身,或者Component的人和子孙节点发生改变的时候,notifyChanged都能被调用,处理接受通知的任务。
实际上EContentAdapter不仅仅能够被添加到一个EObject上,还能够被添加到Resource甚至ResourceSet上,它都能够自动的把自身添加到每一个节点上,以响应事件,当其被删除时,它也能够自动的将其自身从每一个子节点上删除。
分享到:
相关推荐
总结,EMF读取XML是一个强大的工具,它结合了面向对象编程的灵活性和XML的标准化存储优势,为开发者提供了高效处理XML数据的途径。通过创建和理解Ecore模型,开发者可以轻松地解析、操作和生成XML文档。在实际项目中...
EMF,另一方面,是Microsoft Windows操作系统中的一个元文件格式,它可以存储矢量和光栅图形信息,适合在Windows应用程序之间交换图形数据。 这个"SVG转EMF"的示例代码提供了在Java环境下进行这种转换的方法。首先...
EMF格式的一个显著特点是其设备独立性,这意味着不论输出设备的分辨率如何变化,EMF文件都能够保持图形的精确度不变。 #### 二、EMF格式背景与特点 EMF格式的出现主要是为了满足日益增长的高质量图形处理需求。传统...
// 创建一个BufferedImage对象,用于保存PNG图像 BufferedImage image = new BufferedImage(emf.getWidth(), emf.getHeight(), BufferedImage.TYPE_INT_ARGB); // 将EMF渲染到BufferedImage上 Graphics2D g2d =...
这个压缩包包含了深入理解EMF文件格式的资源,包括一份PDF文档、一个帮助文件和源代码。 **微软EMF文件格式详解.pdf**:这份文档很可能是微软官方或第三方专家提供的关于EMF格式的详细指南。通常,它会涵盖EMF的...
EMF(Eclipse Modeling Framework)是Eclipse项目中的一个子项目,它提供了一套用于构建模型驱动的开发工具和应用程序的框架。EMF的主要目标是简化元数据驱动应用的开发过程,通过将模型与代码生成、编辑器、验证器...
EMF(Eclipse Modeling Framework)是Eclipse基金会推出的一个开源框架,主要用于构建基于模型的软件系统。它提供了一种统一的方式来表示、存储和操作复杂的结构化数据,是面向对象建模的强大工具。本教程旨在帮助...
EMF是一个Java框架,其核心功能是代码生成,旨在帮助开发者基于结构化模型快速构建工具和其他应用程序。无论你是对面向对象建模有深厚理解的开发者,还是对此不太熟悉的新手,EMF都能以较低的学习成本提供高效、准确...
4. **实现业务逻辑**:在生成的Java类中添加业务逻辑,使得模型不仅仅是一个数据结构,还能执行特定的操作。 5. **运行和调试**:在Eclipse环境中运行和调试应用,确保其功能正确并满足需求。 EMF、XSD、GEF和...
EMF位于Eclipse平台的核心之上,提供了一个高层次的抽象层,用于处理模型定义和模型实例。它是面向对象的,并且可以与Java代码紧密结合。 **1.1.2 目标** - **简化模型定义**:EMF通过简单的API提供了强大的模型...
- **加载EMF**:首先需要使用Image.FromFile()方法加载EMF文件到内存中,创建一个Image对象。 - **创建Bitmap对象**:然后,创建一个新的Bitmap对象,设置它的大小为EMF图像的尺寸。 - **创建Graphics对象**:...
3. 图形渲染:在解析 EMF 文件后,需要将其渲染成位图图像,这可能通过创建一个缓冲区,然后逐个绘制 EMF 中的图形对象完成。Java 2D API 提供了丰富的绘图函数,如 `Graphics2D` 类,可以用来绘制线条、曲线、填充...
4. **插入与编辑**:在PPT中插入EMF图片,可以直接在幻灯片上调整大小、旋转或添加效果,因为它们是矢量图形,所以这些操作不会影响图像质量。同时,还可以通过“SmartArt”工具进一步编辑和转换图形,增加交互性。 ...
描述中提到的"网页控件"可能是一个定制的ActiveX控件或者JavaScript库,它可以解析和渲染WMF和EMF文件,同时提供装载、缩放、移动和打印等操作。这样的控件对于那些需要在线展示矢量图形的网站来说非常有用,比如...
Eclipse的EMF(Eclipse Modeling Framework)插件是一个强大的模型驱动开发工具,它基于Java构建,用于创建、编辑和管理复杂的数据模型。这个插件是Eclipse IDE的一个重要组成部分,特别适合那些需要进行领域特定...
总结来说,这个项目提供了一个C++实现,用于将EMF文件转换成BMP,这对于需要在不支持EMF格式的应用程序中显示图形或者进行图像处理的场景非常有用。通过解析和执行EMF的图形指令,并将其转换为位图格式,我们可以将...
这个版本号2.7.2表明这是一个更新和优化过的版本,提供了对EMF框架在Eclipse开发环境中的支持。 【描述】"EMF( Eclipse Modeling Framework)"是Eclipse IDE的一个核心组成部分,主要用于构建和执行基于模型的应用...
EMF是Eclipse IDE中的一个重要组成部分,尤其在处理数据建模和图形用户界面(GUI)设计时扮演着关键角色。 SDO(Service Data Objects)是Oracle公司提出的一种数据访问技术,旨在提供一种统一的数据访问接口,使得...
在EMF中,模型通常以Ecore(Eclipse Core Meta-Object Facility)的形式存在,这是一个元模型定义语言。Ecore允许你定义类、属性、关系和其他元数据,这些元数据可以映射到实际的Java类。此外,EMF还提供了XMI...
EMF是Eclipse项目中的一个子项目,它提供了一种创建、操作和共享复杂的领域特定语言(DSL)模型的框架。EMF.compare允许用户比较两个EMF模型实例,识别它们之间的差异,并可选择性地合并这些差异。 这篇博客文章...