using System; using System.Collections.Generic; using System.Text; using System.ComponentModel; using System.Drawing; using DescriptiveEnum; namespace VEPROMS.CSLA.Library { [Serializable] [TypeConverter(typeof(ExpandableObjectConverter))] public class RevisionConfig : ConfigDynamicTypeDescriptor, INotifyPropertyChanged { #region DynamicTypeDescriptor internal override bool IsReadOnly { get { return false; }//_Section == null; } } #endregion #region XML private XMLProperties _Xp; private XMLProperties Xp { get { return _Xp; } } #endregion #region Constructors private Revision _Revision; private RevisionInfo _RevisionInfo; [Browsable(false)] public bool ParentLookup { get { return _Xp.ParentLookup; } set { _Xp.ParentLookup = value; } } public RevisionConfig(Revision revision) { _Revision = revision; string xml = revision.Config; if (xml == string.Empty) xml = ""; _Xp = new XMLProperties(xml); } public RevisionConfig(RevisionInfo revisionInfo) { _RevisionInfo = revisionInfo; string xml = revisionInfo.Config; if (xml == string.Empty) xml = ""; _Xp = new XMLProperties(xml); } public RevisionConfig(string xml) { if (xml == string.Empty) xml = ""; _Xp = new XMLProperties(xml); } public RevisionConfig() { _Xp = new XMLProperties(); } internal string GetValue(string group, string item) { return _Xp[group, item]; } #endregion #region Properties and Methods // This is needed for the Data Loader [Category("History")] [Browsable(false)] [DisplayName("Start Date")] [RefreshProperties(RefreshProperties.All)] [Description("Start date used for change bars")] public DateTime History_StartDate { get { string s = _Xp["History", "StartDate"]; if (s == string.Empty) return DateTime.MinValue; return DateTime.Parse(s); } set { string s = _Xp["History", "StartDate"]; if (s == value.ToString("MM/dd/yyyy HH:mm:ss")) return; _Xp["History", "StartDate"] = value.ToString("MM/dd/yyyy HH:mm:ss"); OnPropertyChanged("History_StartDate"); } } //jcb 20120618 [Category("Applicability")] [Browsable(false)] [DisplayName("Index")] [RefreshProperties(RefreshProperties.All)] [Description("Index for unit")] public int Applicability_Index { get { string s = _Xp["Applicability", "Index"]; if (s == string.Empty) return 0; return int.Parse(s); } set { string s = _Xp["Applicability", "Index"]; if (s == value.ToString()) return; _Xp["Applicability", "Index"] = value.ToString(); OnPropertyChanged("Applicability_Index"); } } //end jcb 20120618 public void Save() { if (_Revision != null) _Revision.Config = this.ToString(); } public override string ToString() { string s = _Xp.ToString(); if (s == "" || s == "") return string.Empty; return s; } #endregion } }