using System;
using System.Text;
using System.Collections;
using System.ComponentModel;
namespace DevComponents.DotNetBar
{
    /// 
    /// Provides context information for serialization.
    /// 
    public class ItemSerializationContext
    {
        /// 
        /// Gets or sets reference to context XmlElement an item is being serialized to.
        /// 
        public System.Xml.XmlElement ItemXmlElement = null;
        /// 
        /// Gets or sets whether SerializeItem event handler has been defined and whether event should be fired.
        /// 
        public bool HasSerializeItemHandlers = false;
        /// 
        /// Gets or sets whether DeserializeItem event handler has been defined and whether event should be fired.
        /// 
        public bool HasDeserializeItemHandlers = false;
        /// 
        /// Provides access to serializer.
        /// 
        public ICustomSerialization Serializer = null;
        [EditorBrowsable(EditorBrowsableState.Never)]
        public System.ComponentModel.Design.IDesignerHost _DesignerHost = null;
        internal Hashtable DockControls = null;
        [EditorBrowsable(EditorBrowsableState.Never)]
        public BaseItem CreateItemFromXml(System.Xml.XmlElement xmlItem)
        {
            if (_DesignerHost != null)
            {
                BaseItem item = null;
                string name = "";
                if (xmlItem.HasAttribute("name")) name = xmlItem.GetAttribute("name");
                try
                {
                    item = BarFunctions.CreateItemFromXml(xmlItem, _DesignerHost, name);
                }
                catch { }
                if (item == null) item = BarFunctions.CreateItemFromXml(xmlItem, _DesignerHost, "");
                if (name != "") item.GlobalName = name;
                return item;
            }
            else
                return BarFunctions.CreateItemFromXml(xmlItem);
        }
    }
}