Ticket #2249: undoRedoAfterSave.patch

File undoRedoAfterSave.patch, 5.1 KB (added by mira, 10 years ago)

patch

  • src/main/java/org/sophie2/main/app/commons/util/SaveDocUtil.java

    ### Eclipse Workspace Patch 1.0
    #P org.sophie2.main.app.commons
     
    66import org.sophie2.base.dialogs.DialogManager; 
    77import org.sophie2.base.model.resources.r4.LocationPrefix; 
    88import org.sophie2.base.model.resources.r4.ResourceRefR4; 
    9 import org.sophie2.base.model.resources.r4.access.AccessOptions; 
    109import org.sophie2.base.model.resources.r4.access.BaseResourceAccess; 
    1110import org.sophie2.base.model.resources.r4.access.ResourceAccess; 
    1211import org.sophie2.base.model.resources.r4.access.ResourceLocator; 
     
    9897                                ((StoredResourceAccess) access).save(null); 
    9998                        } else { 
    10099                                StoredResourceAccess fileAccess = (StoredResourceAccess) locator.create( 
    101                                         fileRef, AccessOptions.DEFAULT_ACCESS_OPTIONS.modifyViewId(), 
    102                                                 ((BaseResourceAccess) bookDocView.getAccess()).cloneHeadRevision()); 
     100                                        fileRef, access.getAccessOptions(),  
     101                                        ((BaseResourceAccess) bookDocView.getAccess()).getTopRevision()); 
    103102                                if (fileAccess == null) { 
    104103                                        DialogUtils.showErrorDialog(bookDocView.swingComponent().get(), 
    105104                                                        "The resource at "+ fileRef + " is currently in use.",  
    106105                                                        "Could not save book"); 
    107106                                        return false; 
    108107                                } 
    109                                 access.close(); 
    110108                                fileAccess.save(null); 
    111109                                bookDocView.reopen(fileAccess); 
     110                                access.close(); 
    112111                        } 
    113112                         
    114113                } catch (IOException e) { 
  • src/main/java/org/sophie2/main/app/menus/file/FileMenuLogic.java

    #P org.sophie2.main.app.menus
     
    1212import org.sophie2.base.model.book.BookH; 
    1313import org.sophie2.base.model.book.resource.r4.BookR4; 
    1414import org.sophie2.base.model.resources.r4.ResourceRefR4; 
    15 import org.sophie2.base.model.resources.r4.access.AccessOptions; 
     15import org.sophie2.base.model.resources.r4.access.BaseResourceAccess; 
     16import org.sophie2.base.model.resources.r4.access.ResourceAccess; 
    1617import org.sophie2.base.model.resources.r4.access.StoredResourceAccess; 
    1718import org.sophie2.base.model.resources.r4.changes.AutoAction; 
    1819import org.sophie2.base.model.resources.r4.changes.ResourceChanger; 
     
    191192                        fileName = FileDialogInput.appendFileExtension( 
    192193                                        new File(fileName), FileDialogInput.BOOK_FILTER).getName(); 
    193194                        File file = FileEntryManager.get().getWritableFileEntry(fileName); 
    194  
     195                        ResourceAccess access = bookDocView.getAccess(); 
    195196                        AppMainWindow mainWindow = AppViewUtil.findMainWindow(bookDocView); 
    196                         StoredResourceAccess fileAccess = (StoredResourceAccess) mainWindow.locator().get().create( 
    197                                         ResourceRefR4.make(file), AccessOptions.DEFAULT_ACCESS_OPTIONS.modifyViewId(), 
    198                                         bookDocView.getAccess().getHead()); 
    199  
     197                        StoredResourceAccess fileAccess =  
     198                                (StoredResourceAccess) mainWindow.locator().get().create( 
     199                                ResourceRefR4.make(file), access.getAccessOptions(),  
     200                                ((BaseResourceAccess)access).getTopRevision()); 
    200201                        try { 
    201202                                fileAccess.save(null); 
    202203                                bookDocView.reopen(fileAccess); 
     204                                access.close(); 
    203205                                BookTemplateHelper.get().bookTemplates().add(new BookTemplate(fileAccess)); 
    204206                        } catch (IOException e) { 
    205207                                DialogUtils.showExceptionDialog(bookDocView.swingComponent().get(), 
  • src/main/java/org/sophie2/base/model/resources/r4/access/BaseResourceAccess.java

    #P org.sophie2.base.model.resources.r4
     
    66import org.sophie2.base.model.resources.r4.model.LocalResourceRevision; 
    77import org.sophie2.base.model.resources.r4.model.ResourceModel; 
    88import org.sophie2.base.model.resources.r4.model.ResourceRevision; 
     9import org.sophie2.base.model.resources.r4.model.RevisionId; 
     10import org.sophie2.base.model.resources.r4.resources.ResourceR4; 
    911 
    1012 
    1113/** 
     
    7779                } 
    7880                return LocalResourceRevision.getInitialRevision(copyModel); 
    7981        } 
     82         
     83        /** 
     84         * Method that gets head revision for this access. It checks if the  
     85         * access location is "." and if it is not makes  initial  
     86         * revision of the accessed resource as top one. For example  
     87         * when saving a server book to the  
     88         *  
     89         * @return Top head revision for the resource of this access. 
     90         */ 
     91        public ResourceRevision getTopRevision() { 
     92                if (ResourceRefR4.CURRENT_REF.equals(this.location)) { 
     93                        return getHead(); 
     94                } 
     95                ResourceRevision head = getHead(); 
     96                RootKey key = ResourceR4.KEY_CHILDREN.sub(this.location); 
     97                ResourceModel model = head.getModel().getSubModel(key); 
     98                RevisionId id = head.getId(); 
     99                return new LocalResourceRevision(null, null, null, model, id); 
     100        } 
    80101 
    81102        /** 
    82103         * Closes this access.