using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
namespace VEPROMS.CSLA.Library
{
    [Serializable]
	[TypeConverter(typeof(ExpandableObjectConverter))]
    public class DocumentConfig : ConfigDynamicTypeDescriptor, INotifyPropertyChanged
    {
        #region XML
        private XMLProperties _Xp;
        private XMLProperties Xp
        {
            get { return _Xp; }
        }
        #endregion
        #region Constructors
        public Document _Document;
        private DocumentInfo _DocumentInfo;
        public DocumentConfig(Document document)
		{
            _Document = document;
            string xml = _Document.Config;
			if (xml == string.Empty) xml = "";
			_Xp = new XMLProperties(xml);
		}
        public DocumentConfig(DocumentInfo documentInfo)
		{
            _DocumentInfo = documentInfo;
            string xml = _DocumentInfo.Config;
			if (xml == string.Empty) xml = "";
			_Xp = new XMLProperties(xml);
		}
        internal string GetValue(string group, string item)
        {
            return _Xp[group, item];
        }
        #endregion
        #region Properties
        [Category("General")]
		[DisplayName("Name")]
		[Description("Name")]
		public string Name
		{
            get { return (_Document != null ? _Document.LibTitle : _DocumentInfo.LibTitle); }
			set	{ if (_Document != null) _Document.LibTitle = value; }
		}
        [Category("General")]
        [DisplayName("Comment")]
        [RefreshProperties(RefreshProperties.All)]
        [Description("Comment")]
        public string LibDoc_Comment
        {
            get
            {
                string s = _Xp["LibDoc", "Comment"];// get the saved value
                return s;
            }
            set
            {
                _Xp["LibDoc", "Comment"] = value;
                OnPropertyChanged("LibDoc_Comment");
            }
        }
        #endregion
        #region ToString
        public override string ToString()
        {
            string s = _Xp.ToString();
            if (s == "" || s == "") return string.Empty;
            return s;
        }
        #endregion
    }
}