using ANX.ContentCompiler.GUI.Converters;
using ANX.Framework.Content.Pipeline.Tasks;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;

namespace ANX.ContentCompiler.GUI.Nodes
{
    class BuildItemNodeProperties : NodeProperties
    {
        public BuildItemNodeProperties(BuildItem buildItem)
        {
            if (buildItem == null)
                throw new ArgumentNullException("buildItem");

            this.BuildItem = buildItem;
        }

        internal BuildItem BuildItem
        {
            get;
            private set;
        }

        public string AssetName
        {
            get { return BuildItem.AssetName; }
            set 
            {
                if (value != null)
                {
                    foreach (var c in Path.GetInvalidFileNameChars())
                    {
                        if (value.Contains(c))
                            return;
                    }
                }

                BuildItem.AssetName = value; 
            }
        }

        public string SourceFilename
        {
            get { return BuildItem.SourceFilename; }
        }

        [TypeConverter(typeof(ImporterConverter))]
        public string Importer
        {
            get { return BuildItem.ImporterName; }
            set { BuildItem.ImporterName = value; }
        }

        [TypeConverter(typeof(ProcessorConverter))]
        public string Processor
        {
            get { return BuildItem.ProcessorName; }
            set { BuildItem.ProcessorName = value; }
        }
    }
}