一、可以注册监听来获取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...
// 创建一个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. ...
MFC中窗体界面保存成jpg,tif,tiff,emf,等各种文件,简短代码,加运行效果
EMF提供了运行时环境(EMF Runtime),使得模型可以在应用程序中被实例化、修改和保存。这个环境支持动态加载和解析模型,以及持久化模型到磁盘。 6. **EMF插件** 插件是EMF生态系统的重要组成部分,它们扩展了...
通过阅读这份文档,读者可以了解到如何创建、编辑和解析EMF文件,以及EMF在应用程序中的使用方式,比如打印、图像处理和图形显示。 **emf.hlp**:这是一个帮助文件,通常用于提供快速查询和参考。在这个文件中,...
增强型元文件是一种矢量图形格式,广泛用于Windows操作系统中,它可以保存图形对象的描述,包括线条、曲线、填充区域等。而位图则是像素图像,适用于存储照片或包含大量细节的图像。 描述中的“emf转bmpemf”可能是...
在遍历过程中,对于识别到的位图记录,我们可以使用`Graphics`对象的`DrawImage`方法绘制位图,并应用抗锯齿效果。这通常涉及到读取位图数据,创建`Bitmap`对象,然后调用`DrawImage`: ```cpp Bitmap bitmap...
将EMF文件发送到打印机涉及将文件中的图形指令翻译成打印机语言,例如PCL或PostScript。这通常通过打印机驱动程序完成,该驱动程序理解EMF格式并将其转换为适合特定打印机的命令。 4. **转换为图像**:有时候,将...
3. **模型操作**:EMF提供了丰富的API,包括创建、修改、查询模型对象,以及保存和加载模型到XML文件。 4. **图形化编辑器**:EMF集成了GEF(Graphical Editor Framework),可以快速构建基于模型的图形化编辑器,...
这个列表可能包含了一系列用于安装或更新EMF Runtime 2.7.2到Eclipse环境中的文件,如JAR包、配置文件等,这些文件将被Eclipse识别并集成到其插件系统中,以提供对EMF功能的支持。 EMF的主要特点和应用包括: 1. **...
- 如何配置和集成EMF.compare到他们的开发环境,如Eclipse IDE。 - 如何解析和加载EMF模型文件。 - 如何启动和使用比较视图,理解差异的表示方式。 - 如何处理和合并模型文件的冲突。 - 如何通过API扩展EMF.compare...
在EMF中,XSD文件可以被用来作为模型的定义,生成相应的Java类和API,这样开发人员就可以在代码中直接操作这些模型对象。 GUI设计是构建用户界面的重要环节,EMF结合GEF (Graphical Editing Framework) 提供了一套...
EMF文件的核心优势在于它能够保存图形对象的矢量信息,这意味着图像可以在不失真的情况下放大或缩小。这使得EMF成为创建图形、图表、logo和其他需要在不同尺寸下保持清晰的图形的理想选择。此外,EMF还支持颜色管理...
EMF(Enhanced Metafile)和WMF(Windows Metafile)是两种常见的矢量图形文件格式,主要用于存储图像数据,特别是在Windows操作系统环境下。这两种格式都允许无损缩放和复杂图形的绘制,但EMF是WMF的增强版本,提供...
EMF 提供了数据模型的创建、存储、序列化以及与Java对象之间的映射。开发者可以通过EMF定义自己的领域特定语言(DSL),并利用EMF生成对应的Java类和API,从而简化模型的编程和管理。此外,EMF还支持XMI(XML ...
6. **交互与事件处理**:学习如何添加用户交互,如监听用户输入,处理拖放和连接事件,以及实现图形的动态更新。 7. **GEF与EMF结合**:演示如何将EMF的数据模型与GEF的图形编辑器相结合,创建一个完整的模型驱动的...