zoukankan      html  css  js  c++  java
  • 关于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();
        }
  • 相关阅读:
    Visual Studio Code安装Python环境
    Visual Studio Code安装以及C/C++运行环境搭建
    第五场周赛(字符串卡常个人Rank赛)——题解
    SpringCloud学习之二:服务提供者与服务消费者
    SpringCloud学习之一:服务注册中心
    java算法篇之一:动态数组
    Amdahl(阿姆达尔)定律
    org.apache.shiro.session.UnknownSessionException: There is no session with id [xxxx]的解决方案
    RedHat6.9下替换yum源
    微信公众号弹出框在IOS最新系统中点击键盘上的“完成”导致事件无法触发问题
  • 原文地址:https://www.cnblogs.com/youngerbaby/p/411363.html
Copyright © 2011-2022 走看看