`
youngerbaby
  • 浏览: 115010 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于gmf编辑器的保存操作

阅读更多
<!---->a)    First, in class DiagramDocumentEditor, the method 
public void doSave(IProgressMonitor progressMonitor) { }
b)    Second, the method above call the methon:
protected void performSave(boolean overwrite, IProgressMonitor progressMonitor) {}
this method is in class DiagramDocumentEditor.
c)AbstractDocumentProvider)中的方法
public final void saveDocument(IProgressMonitor monitor, final Object element, final IDocument document, final boolean overwrite) throws CoreException {

        
if (element == null)
            
return;


        executeOperation(getSaveOperation(element, document, overwrite), monitor);
    }
d)    在自己的Document provider里面冲载方法
protected void saveDocumentToFile(IDocument document, IFile file,
            
boolean overwrite, IProgressMonitor monitor) throws CoreException {}
        
e)    FileDiagramDocumentProvider种的方法
protected void saveDocumentToFile(IDocument document, IFile file, boolean overwrite, IProgressMonitor monitor)
        
throws CoreException {
        Diagram diagram 
= (Diagram)document.getContent();
        Resource resource 
= diagram.eResource();
        IFile resourceFile 
= WorkspaceSynchronizer.getFile(resource);
        
// if the diagram in the document is referring to another file, then we should
        
// create a copy of this diagram and save it to the new file, save as scenario.
        if(resourceFile != null && !resourceFile.equals(file)) {
            diagram 
= copyDiagramResource(diagram, file);
        }
        IDiagramDocument diagramDocument 
= (IDiagramDocument)document;
        TransactionalEditingDomain domain 
= diagramDocument.getEditingDomain();
        doSave(domain, file, diagram, 
null, monitor);
    }

protected void doSave(TransactionalEditingDomain domain, IFile file,
            Diagram diagram, Map options, IProgressMonitor monitor)
        
throws CoreException {
        
if (options == null) {
            DiagramIOUtil.save(domain, file, diagram, DiagramIOUtil
                .hasUnrecognizedData(diagram.eResource()), monitor);
        } 
else {
            DiagramIOUtil.save(domain, file, diagram, monitor, options);
        }
}


static public void save(TransactionalEditingDomain domain, IFile file, Diagram diagram, boolean bKeepUnrecognizedData, IProgressMonitor progressMonitor) throws CoreException {
        Map options 
= new HashMap();
        
if(bKeepUnrecognizedData)
            options.put(XMLResource.OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE);
        save(domain, file, diagram, progressMonitor, options);
    }

static public void save(TransactionalEditingDomain domain, IFile file, Diagram diagram, IProgressMonitor progressMonitor, Map options) throws CoreException {
        Resource notationModel 
= ((EObject) diagram).eResource();
        String fileName 
= file.getFullPath().toOSString();
        notationModel.setURI(URI.createPlatformResourceURI(fileName, 
true));
        
try {
            notationModel.save(options);
        } 
catch (IOException e) {
            
throw new CoreException(new Status(IStatus.ERROR, EditorPlugin
                .getPluginId(), EditorStatusCodes.RESOURCE_FAILURE, e
                .getLocalizedMessage(), 
null));
        }

        
if (progressMonitor != null)
            progressMonitor.done();
    }
分享到:
评论

相关推荐

    gmf例子

    GMF的目标是简化地图应用程序的开发过程,通过提供图形化的编辑器来生成代码,减少手动编码的工作量。 【gmf.edit】 "gmf.edit"部分主要涉及到GMF中的编辑功能。在GMF中,编辑模块允许用户对地图数据进行增删改查...

    Using_GMF_and_M2M_for_Modeldrivendevelopment

    Eclipse图形化建模框架(GMF)为基于Eclipse建模框架(EMF)和Eclipse图形框架(GEF)构建图形编辑器提供了生成组件及运行时基础设施。其设计目标是使开发者能够轻松创建高度定制化的图形界面,同时保持与底层模型的...

    Eclipse插件开发--gef开发指南与入门系列宝典

    3. 编辑器的生命周期:学习编辑器的创建、打开、保存和关闭过程。 4. 图形元素的定义:创建自定义的图形节点和连接线,定义它们的外观和行为。 5. 视图和模型的绑定:将数据模型映射到图形元素,实现数据变化时视图...

    eclipse的emf插件

    这些编辑器可以让用户通过拖放操作直观地创建和修改模型。 5. **生态集成**:EMF与Eclipse的其他组件,如GMF(Graphical Modeling Framework)、XText(DSL开发工具)和Tycho(PDE的Maven集成)等,有很好的集成,...

    Activiti Designer5.15.0源码

    6. **GMF (Graphical Modeling Framework)**:GMF用于创建图形化编辑器,是Activiti Designer流程图的基础。理解如何通过GMF生成图形编辑器,以及它如何与EMF模型交互,是理解源码的关键。 7. **XML解析和处理**:...

    eclipse emf插件

    4. **图形化编辑器**:EMF支持创建与模型关联的图形化编辑器,允许用户通过拖拽和编辑图形来操作数据模型,提高了开发效率和用户体验。 5. **互操作性**:EMF遵循开放标准,如XMI和UML,与其他遵循相同标准的工具和...

    eclipse-SDK-3.4.2的ve插件套装

    2. **GEF (Graphical Editing Framework)**:GEF是Eclipse的另一个核心框架,专门用于构建图形化编辑器。它提供了创建、布局和操作图形元素的基础结构。GEF-runtime-3.4.2是用于Eclipse 3.4.2的GEF运行时库,使得...

    Eclipse建模框架开发人员指南

    3. **编辑器支持**:EMF提供了构建图形用户界面(GUI)编辑器的工具,使得开发者能够创建与模型交互的定制编辑器。这通常涉及Graphical Modeling Framework (GMF)和Executable UML (XUML)等组件。 4. **运行时环境*...

    Eclipse开发的Osate插件项目入门样例

    - **图形化界面设计**:如果需要,可以使用GMF创建自定义的图形编辑器。 - **测试和调试**:使用Eclipse内置的调试器进行测试和调试。 - **打包和部署**:最后,将插件打包成.update站点或插件库,以便在Eclipse...

    ArchiLe-开源

    GMF是Eclipse中用于构建图形化编辑器的工具包,它允许开发人员以声明式的方式定义图形和图表,以及它们与底层模型数据的映射。这意味着ArchiLe的用户可以直观地拖放各种Archimate元素,如业务过程、应用组件和技术...

    emf-practice:Eclipse建模框架实践代码

    4. **EMF运行时库**:在实践中,项目会依赖EMF的运行时库,用于加载、保存和操作模型对象。这些库提供了一系列的API,例如`ResourceSet`,`Resource`,`EObject`等,用于处理模型的生命周期。 5. **例子和测试**:...

Global site tag (gtag.js) - Google Analytics