一、可以注册监听来获取EMF模型改变事件,例如:
public class ElementObserver {
private IPersonList persons;
public ElementObserver() {
ModelFactory factory = ModelFactory.eINSTANCE;
persons = factory.createIPersonList();
Adapter adapter = new AdapterImpl() {
public void notifyChanged(Notification notification) {
System.out
.println("Notfication received from the data model. Data model has changed!!!");
}
};
persons.eAdapters().add(adapter);
}
public void doStuff() {
ModelFactory factory = ModelFactory.eINSTANCE;
IPerson person = factory.createIPerson();
person.setFirstName("Lars");
System.out.println("I'm adding a person.");
persons.getPersons().add(person);
System.out.println("I'm changing a entry");
persons.getPersons().get(0).setFirstName("Lars2");
}
}
通过注册Adapter对象persons里,我们可以收到消息如果这个list有增删。
public class TotalObserver {
private IPersonList persons;
public TotalObserver() {
ModelFactory factory = ModelFactory.eINSTANCE;
persons = factory.createIPersonList();
EContentAdapter adapter = new EContentAdapter() {
public void notifyChanged(Notification notification) {
super.notifyChanged(notification);
System.out
.println("Notfication received from the data model. Data model has changed!!!");
}
};
persons.eAdapters().add(adapter);
}
public void doStuff() {
ModelFactory factory = ModelFactory.eINSTANCE;
IPerson person = factory.createIPerson();
person.setFirstName("Lars");
System.out.println("I'm adding a person.");
persons.getPersons().add(person);
System.out.println("I'm changing a entry");
IPerson person2 = persons.getPersons().get(0);
person2.setFirstName("Lars2");
}
}
通过增加EContentAdapter,我们可以监听到list的增删和其中某个元素有变化。
二、EMF模型保存时加密
可以通过设置Save Option和Load Option来实现模型保存时加密、加载时解密的过程。例如:
public class MyXMIFactoryImpl extends XMIResourceFactoryImpl {
@Override
public Resource createResource(URI uri) {
XMIResourceFactoryImpl resFactory = new XMIResourceFactoryImpl();
XMIResource resource = (XMIResource) resFactory.createResource(uri);
try {
resource.getDefaultLoadOptions().put(Resource.OPTION_CIPHER,
new AESCipherImpl("12345"));
resource.getDefaultSaveOptions().put(Resource.OPTION_CIPHER,
new AESCipherImpl("12345"));
} catch (Exception e) {
e.printStackTrace();
}
return resource;
}
}
分享到:
相关推荐
标题中的“从剪贴板提取EMF图元文件并保存的C#工程”是指一个C#编程项目,其主要功能是获取用户剪贴板中的增强型元文件(EMF)格式图像,并将其保存到本地系统。EMF是一种矢量图形格式,常用于Windows操作系统中,...
- 解析后的XML数据以EMF对象的形式存在,可以直接操作这些对象,例如修改属性值、添加或删除元素。 - 修改后,可以使用`save()`方法将模型保存回XML文件,这会自动处理XML编码和格式化。 6. **性能优化** - EMF...
- **CAD系统**:计算机辅助设计(CAD)系统也经常使用EMF格式来保存复杂的图形设计,因为它的高保真度有助于保持设计的准确性。 #### 五、EMF格式的知识产权声明 根据微软发布的[MS-EMF]文档(EnhancedMetafile ...
### MFC中窗体界面保存成jpg、tif、tiff、emf等文件的技术解析 在Windows编程领域,Microsoft Foundation Classes (MFC) 是一种广泛使用的框架,它简化了使用C++进行Windows应用程序开发的过程。本文将详细介绍如何...
// 创建一个BufferedImage对象,用于保存PNG图像 BufferedImage image = new BufferedImage(emf.getWidth(), emf.getHeight(), BufferedImage.TYPE_INT_ARGB); // 将EMF渲染到BufferedImage上 Graphics2D g2d =...
你可以通过Maven或Gradle将它引入,或者直接下载JAR文件并添加到项目的类路径中。然后,你可以按照以下步骤进行: 1. 创建一个SVG图形的输入流,通常是读取SVG文件的FileInputStream。 2. 使用Batik的...
- **绘制EMF到Bitmap**:调用Graphics对象的DrawImage()方法,将EMF图像绘制到Bitmap上。这会将EMF的矢量数据转换为位图像素。 - **保存为PNG**:最后,使用Bitmap对象的Save()方法,指定保存路径和PNG作为目标...
3. **资源管理**:`Resource`接口是EMF中用于处理模型存储的关键,它可以加载和保存模型实例。`EObject.eResource()`方法可以获取对象所在的资源,而`Resource.load()`和`Resource.save()`则用于读写模型数据。 4. ...
通过阅读这份文档,读者可以了解到如何创建、编辑和解析EMF文件,以及EMF在应用程序中的使用方式,比如打印、图像处理和图形显示。 **emf.hlp**:这是一个帮助文件,通常用于提供快速查询和参考。在这个文件中,...
EMF提供了运行时环境(EMF Runtime),使得模型可以在应用程序中被实例化、修改和保存。这个环境支持动态加载和解析模型,以及持久化模型到磁盘。 6. **EMF插件** 插件是EMF生态系统的重要组成部分,它们扩展了...
增强型元文件是一种矢量图形格式,广泛用于Windows操作系统中,它可以保存图形对象的描述,包括线条、曲线、填充区域等。而位图则是像素图像,适用于存储照片或包含大量细节的图像。 描述中的“emf转bmpemf”可能是...
6. 用户界面(UI)设计:虽然描述中没有明确提到 UI,但通常这类工具会有一个简单的用户界面,允许用户选择输入 EMF 文件,设置转换参数,并保存转换后的 JPG 文件。 7. 异常处理和错误报告:良好的源码应该包含...
EMF的序列化机制可以处理复杂的模型结构,包括循环引用、嵌套对象等,确保了模型数据的完整性和一致性。 #### 六、EMF在实际项目中的应用 EMF在各种领域都有广泛的应用,特别是在复杂系统的建模和设计中。例如,在...
此外,EMF提供了丰富的API,允许动态修改模型,实现模型的加载、保存和验证。 **高级话题** EMF支持许多高级特性,例如: 1. **逆向工程**:可以从现有的Java代码反向生成EMF模型。 2. **动态模型**:在运行时动态...
将EMF文件发送到打印机涉及将文件中的图形指令翻译成打印机语言,例如PCL或PostScript。这通常通过打印机驱动程序完成,该驱动程序理解EMF格式并将其转换为适合特定打印机的命令。 4. **转换为图像**:有时候,将...
3. **持久性**:EMF支持将模型对象序列化为XML文件,使得模型数据可以在不同时间点保存和恢复,同时也方便了跨系统数据交换。 4. **图形用户界面(GUI)编辑器**:EMF提供了一个框架,可以快速构建基于模型的图形...
3. **模型操作**:EMF提供了丰富的API,包括创建、修改、查询模型对象,以及保存和加载模型到XML文件。 4. **图形化编辑器**:EMF集成了GEF(Graphical Editor Framework),可以快速构建基于模型的图形化编辑器,...
将现有的XML或UML模型导入到EMF中,然后利用EMF的工具对其进行扩展和维护。 ##### 2.2 EMF编辑器与代码生成 **2.2.1 生成的插件** EMF自动生成的插件包含了编辑器、视图和其他相关组件。 **2.2.2 通过GenModel...
这个列表可能包含了一系列用于安装或更新EMF Runtime 2.7.2到Eclipse环境中的文件,如JAR包、配置文件等,这些文件将被Eclipse识别并集成到其插件系统中,以提供对EMF功能的支持。 EMF的主要特点和应用包括: 1. **...
此外,还可以使用 EMF 的资源框架来管理模型实例的加载和保存操作。 #### 2. EMF 编辑框架程序员指南 **EMF Edit Framework Programmer's Guide** 重点介绍了如何使用 EMF 创建用户界面,以便编辑和查看 EMF 模型...