Skip to content

Commit

Permalink
add a ResourceMove() and a ResourceCopy() method to DataFile
Browse files Browse the repository at this point in the history
  • Loading branch information
maul.esel committed May 3, 2012
1 parent eff7b03 commit b77801e
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
2 changes: 2 additions & 0 deletions ChameleonCoder.Abstract/Files/IDataFile.cs
Expand Up @@ -45,6 +45,8 @@ public interface IDataFile : IAppComponent

void ResourceDelete(IResource resource);
void ResourceInsert(IResource resource, IResource parent);
void ResourceMove(IResource resource, IResource newParent);
IResource ResourceCopy(IResource resource, IResource newParent);

void ResourceSetCreatedDate(IResource resource);
void ResourceSetCreatedDate(IResource resource, DateTime time);
Expand Down
22 changes: 22 additions & 0 deletions ChameleonCoder.Core/Files/DataFile.cs
Expand Up @@ -454,6 +454,28 @@ public void ResourceInsert(IResource resource, IResource parent)
AddPrivateResourceData(resource, element);
}

public void ResourceMove(IResource resource, IResource newParent)
{
if (resource != null)
{
DeleteResourceElement(resource); // remove old XML element
RemovePrivateResourceData(resource); // remove all references to the resource

ResourceInsert(resource, newParent); // add new XML element and add references
}
}

public IResource ResourceCopy(IResource resource, IResource newParent)
{
if (resource != null)
{
IResource newResource = App.ResourceTypeMan.CreateInstanceOf(App.ResourceTypeMan.GetKey(resource.GetType()), resource.Attributes.Clone(), newParent, this);
ResourceInsert(newResource, newParent);
return newResource;
}
throw new ArgumentNullException("resource");
}

private void DeleteResourceElement(IResource resource)
{
XmlElement element = mappings[resource.Attributes];
Expand Down

0 comments on commit b77801e

Please sign in to comment.