using System; using System.Collections.Generic; using System.Text; using System.ComponentModel; using DescriptiveEnum; namespace VEPROMS.CSLA.Library { [Serializable] [TypeConverter(typeof(ExpandableObjectConverter))] public class StepConfig : 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 //PROPGRID: Hide ParentLookup [Browsable(false)] public bool ParentLookup { get { return _Xp.ParentLookup; } set { _Xp.ParentLookup = value; } } //PROPGRID: Had to comment out NonSerialized to hide AncestorLookup from Property Grid //[NonSerialized] private bool _AncestorLookup; //PROPGRID: Hide AncestorLookup [Browsable(false)] public bool AncestorLookup { get { return _AncestorLookup; } set { _AncestorLookup = value; } } private Step _Step; private StepInfo _StepInfo; public StepConfig(Step step) { _Step = step; string xml = step.MyContent.Config; if (xml == string.Empty) xml = ""; _Xp = new XMLProperties(xml); } public StepConfig(StepInfo stepInfo) { _StepInfo = stepInfo; string xml = stepInfo.MyContent.Config; if (xml == string.Empty) xml = ""; _Xp = new XMLProperties(xml); } public StepConfig(string xml) { if (xml == string.Empty) xml = ""; _Xp = new XMLProperties(xml); } public StepConfig() { _Xp = new XMLProperties(); } internal string GetValue(string group, string item) { return _Xp[group, item]; } #endregion #region Local Properties #endregion #region ToString public override string ToString() { string s = _Xp.ToString(); if (s == "" || s == "") return string.Empty; return s; } #endregion #region StepAttr //[Category("Step Attributes")] //[DisplayName("Step Continuous Action Summary")] //[RefreshProperties(RefreshProperties.All)] //[Description("Step Continuous Action Summary")] public bool Step_CAS { get { string s = _Xp["Step", "ContActSum"]; //If there is no value to get, then get the parent value (a.k.a. default value). if (s == string.Empty) return false; if (s == "True") return true; return false; } set { string s = _Xp["Step", "ContActSum"]; if (value.ToString() == s) return; _Xp["Step", "ContActSum"] = value.ToString(); OnPropertyChanged("Step_CAS"); } } //[Category("Step Attributes")] //[DisplayName("Step Check Off Index")] //[RefreshProperties(RefreshProperties.All)] //[Description("Step Check Off Index")] public int Step_CheckOffIndex { get { string s = _Xp["Step", "CheckOffIndex"]; if (s == string.Empty) return -1; return int.Parse(s); } set { string s = _Xp["Step", "CheckOffIndex"]; if (value.ToString() == s) return; _Xp["Step", "CheckOffIndex"] = value.ToString(); OnPropertyChanged("Step_CheckOffIndex"); } } //[Category("Step Attributes")] //[DisplayName("Step Manual Pagebreak")] //[RefreshProperties(RefreshProperties.All)] //[Description("Step Manual Pagebreak")] public bool Step_ManualPagebreak { get { string s = _Xp["Step", "ManualPagebreak"]; if (s == string.Empty) return false; if (s == "True") return true; return false; } set { string s = _Xp["Step", "ManualPagebreak"]; if (value.ToString() == s) return; _Xp["Step", "ManualPagebreak"] = value.ToString(); OnPropertyChanged("Step_ManualPagebreak"); } } //[Category("Step Attributes")] //[DisplayName("Step Change Bar Override")] //[RefreshProperties(RefreshProperties.All)] //[Description("Step Change Bar Override")] public string Step_CBOverride { get { string s = _Xp["Step", "CBOverride"]; if (s == string.Empty) return null; return s; } set { string s = _Xp["Step", "CBOverride"]; if (value != null && value.ToString() == s) return; if (value == null && s != null) _Xp["Step", "CBOverride"] = null; else _Xp["Step", "CBOverride"] = value.ToString(); OnPropertyChanged("Step_CBOverride"); } } #endregion } }