private UIItem[] ParseItemsOfTab(XElement uiTab)
        {
            List <UIItem> items = new List <UIItem>();
            XElement      root  = uiTab.Element("UIItems");

            if (root == null)
            {
                return(null);
            }
            foreach (XElement itElement in root.Elements())
            {
                string type = itElement.Name.LocalName;
                switch (type)
                {
                case "UICommandGroup":
                    UICommandGroup uig = ParseUICommandGroup(itElement);
                    if (uig != null)
                    {
                        items.Add(uig);
                    }
                    break;
                }
            }
            return(items.Count > 0 ? items.ToArray() : null);
        }
        private UICommandGroup ParseUICommandGroup(XElement itElement)
        {
            UICommand[]    cmds     = ParseUICommands(itElement);
            UICommandGroup uig      = new UICommandGroup(itElement.Attribute("name").Value, itElement.Attribute("text").Value, cmds);
            string         provider = null;

            if (itElement.Attribute("provider") != null)
            {
                provider = itElement.Attribute("provider").Value;
            }
            if (provider != null && provider != "assembly:class")
            {
                uig.Provider = provider;
            }
            uig.Visible        = GetBoolAttribute(itElement, "visible");
            uig.AllowCollapsed = GetBoolAttribute(itElement, "allowcollapsed");//AllowCollapsed
            return(uig);
        }