using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
namespace VEPROMS.CSLA.Library
{
	[Serializable]
	[TypeConverter(typeof(ExpandableObjectConverter))]
	public class AssociationConfig : ConfigDynamicTypeDescriptor, INotifyPropertyChanged
	{
		#region DynamicTypeDescriptor
		internal override bool IsReadOnly
		{
			get { return _Association == null; }
		}
		#endregion
		#region XML
		private XMLProperties _Xp;
		private XMLProperties Xp
		{
			get { return _Xp; }
		}
		#endregion
		#region Constructors
		private Association _Association;
		public AssociationConfig(Association association)
		{
			_Association = association;
			string xml = association.Config;
			if (xml == string.Empty) xml = "";
			_Xp = new XMLProperties(xml);
		}
		private AssociationInfo _AssociationInfo;
		public AssociationConfig(AssociationInfo association)
		{
			_AssociationInfo = association;
			string xml = association.Config;
			if (xml == string.Empty) xml = "";
			_Xp = new XMLProperties(xml);
		}
		public AssociationConfig(string xml)
		{
			_Xp = new XMLProperties(xml);
		}
		public AssociationConfig()
		{
			string xml = "";
			_Xp = new XMLProperties(xml);
		}
		internal string GetValue(string group, string item)
		{
			return _Xp[group, item];
		}
		#endregion
		public Association MyAssociation
		{ get { return _Association; } }
		#region RODefaults        // From proc.ini
		[Category("Referenced Objects")]
		[DisplayName("Default RO Prefix")]
		[RefreshProperties(RefreshProperties.All)]
		[Description("Setpoint Prefix")]
		public string RODefaults_setpointprefix
		{
			get
			{
				string s = _Xp["RODefaults", "Setpoint"];// get the saved value
				return s;
			}
			set
			{
				_Xp["RODefaults", "Setpoint"] = value; // save selected value
				OnPropertyChanged("RODefaults_setpointprefix");
			}
		}
		[Category("Referenced Objects")]
		[DisplayName("Default Graphics Prefix")]
		[RefreshProperties(RefreshProperties.All)]
		[Description("Graphics Prefix")]
		public string RODefaults_graphicsprefix
		{
			get
			{
				string s = _Xp["RODefaults", "Graphics"];// get the saved value
				return s;
			}
			set
			{
				_Xp["RODefaults", "Graphics"] = value; // save selected value
			}
		}
		#endregion
		#region ToString
		public override string ToString()
		{
			string s = _Xp.ToString();
			if (s == "" || s == "") return string.Empty;
			return s;
		}
		#endregion
	}
}