Ticket #2263: copy-paste-image-background.patch

File copy-paste-image-background.patch, 3.5 KB (added by deni, 15 years ago)
  • modules/org.sophie2.main.app.commons/src/main/java/org/sophie2/main/app/commons/element/CopyUtil.java

    ### Eclipse Workspace Patch 1.0
    #P sophie
     
    7373                        if (ResourceRefR4.class.equals(key.getValueClass())) { 
    7474                                ResourceRefR4 valueRef = (ResourceRefR4)resource.get(key); 
    7575                                 
     76                                if (ResourceRefR4.NONE_REF.equals(valueRef)) { 
     77                                        continue; 
     78                                } 
     79                                 
    7680                                // copy the resource referenced by valueRef 
    7781                                ResourceAccess access = resource.getAccess().open(valueRef, null); 
    7882                                ResourceModel childModel = capsulate(ResourceH.getHelper(access)); 
     
    206210                Map<String, Key<?>> deeplyCopiedKeys = ResourceR4.getDeeplyCopiedKeys(clazz); 
    207211                for (Key key : deeplyCopiedKeys.values()) { 
    208212                        ResourceRefR4 valueRef = (ResourceRefR4) model.getRaw(key); 
    209  
    210                         RootKey valueRefChildKey = RootKey.fromRef(valueRef); 
    211                         ResourceModel valueRefModel = model.getSubModel(valueRefChildKey); 
    212213                         
    213                         ResourceRefR4 realValueRef = decapsulate(bookModel, valueRefModel,  
    214                                         valueRef.getThisChildRef(), bookChanger, true); 
    215                         bookChanger.removeResource(realBookToModel.append(valueRef)); 
     214                        if (valueRef != null && !ResourceRefR4.NONE_REF.equals(valueRef)) { 
     215                                RootKey valueRefChildKey = RootKey.fromRef(valueRef); 
     216                                ResourceModel valueRefModel = model.getSubModel(valueRefChildKey); 
     217                                 
     218                                ResourceRefR4 realValueRef = decapsulate(bookModel, valueRefModel,  
     219                                                valueRef.getThisChildRef(), bookChanger, true); 
     220                                bookChanger.removeResource(realBookToModel.append(valueRef));                            
     221                                ResourceRefR4 newValue = ResourceRefR4.getRelativeRef(realBookToModel, realValueRef); 
    216222                         
    217                         ResourceRefR4 newValue = ResourceRefR4.getRelativeRef(realBookToModel, realValueRef); 
    218                         ResourceChanger subChanger = bookChanger.getSub(realBookToModel); 
    219                         subChanger.setRaw(key, newValue); 
     223                                ResourceChanger subChanger = bookChanger.getSub(realBookToModel); 
     224                                subChanger.setRaw(key, newValue); 
     225                        } 
    220226                } 
    221227                 
    222228                // decapsulate the children of the given resource 
  • modules/org.sophie2.base.model.book/src/main/java/org/sophie2/base/model/book/interfaces/StyledElement.java

     
    88import org.sophie2.base.model.book.frame.ImmInsets; 
    99import org.sophie2.base.model.resources.r4.ResourceRefR4; 
    1010import org.sophie2.base.model.resources.r4.keys.CompositeKey; 
     11import org.sophie2.base.model.resources.r4.keys.DeeplyCopied; 
    1112import org.sophie2.base.model.resources.r4.keys.TemplatedKey; 
    1213import org.sophie2.base.model.resources.r4.keys.TemplatedResourceRefKey; 
    1314import org.sophie2.base.persistence.commons.PersistenceOptions; 
     
    8283         * The image used as a background. Used when the background type is 
    8384         * <code>image</code>. 
    8485         */ 
     86        @DeeplyCopied 
    8587        public static final TemplatedResourceRefKey KEY_BACKGROUND__IMAGE = 
    8688                new TemplatedResourceRefKey("background:image", ResourceRefR4.class, ResourceRefR4.NONE_REF) { 
    8789                        @Override