// <file>
//     <copyright see="prj:///doc/copyright.txt"/>
//     <license see="prj:///doc/license.txt"/>
//     <author name="Daniel Grunwald"/>
//     <version>$Revision$</version>
// </file>

using ICSharpCode.Core;
using System;
using System.Linq;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Text;
using System.Xml;
using ICSharpCode.SharpDevelop.Project;

namespace CppBackendBinding
{
	/// <summary>
	/// Represents a {File} element in the .vcproj file.
	/// </summary>
	sealed class FileItem
	{
		public readonly ProjectItem ProjectItem;
		public readonly XmlElement XmlElement;
		
		/// <summary>
		/// Loads a file item from XML.
		/// </summary>
		public FileItem(FileGroup group, XmlElement fileElement)
		{
			this.XmlElement = fileElement;
			string relativePath = fileElement.GetAttribute("RelativePath");
			if (relativePath.StartsWith(".\\")) {
				// SharpDevelop doesn't like paths starting with ".\", so strip it away:
				relativePath = relativePath.Substring(2);
			}
			this.ProjectItem = new FileProjectItem(group.Project, group.ItemType, relativePath);
		}
		
		/// <summary>
		/// Creates a new file item.
		/// </summary>
		public FileItem(XmlDocument document, ProjectItem item)
		{
			this.ProjectItem = item;
			this.XmlElement = document.CreateElement("File");
			SaveChanges();
		}
		
		public void SaveChanges()
		{
			this.XmlElement.SetAttribute("RelativePath", this.ProjectItem.Include);
		}
	}
}