public ToolbarItemDef(StyleDef style, ToolbarItemAlign align, bool hasText)
        {
            _Style   = style;
            _Align   = align;
            _HasText = hasText;

            _Children = new List <ToolbarItemDef>();
        }
        internal ToolbarItemDef(ComponentDef componentDef, XmlReader reader)
        {
            while (reader.MoveToNextAttribute())
            {
                switch (reader.LocalName)
                {
                case "Style":
                    _Style = componentDef.GetStyle(reader.Value);
                    break;

                case "Align":
                    _Align = (ToolbarItemAlign)Enum.Parse(typeof(ToolbarItemAlign), reader.Value);
                    break;

                case "HasText":
                    _HasText = bool.Parse(reader.Value);
                    break;

                case "Command":
                    _Command = reader.Value;
                    break;

                default:
                    Log.Warning("Unknown attribute {0}", reader.LocalName);
                    break;
                }
            }

            reader.MoveToElement();

            if (reader.IsEmptyElement)
            {
                return;
            }

            _Children = new List <ToolbarItemDef>();

            while (reader.Read())
            {
                if (reader.MoveToContent() == XmlNodeType.EndElement)
                {
                    break;
                }

                switch (reader.LocalName)
                {
                case "Item":
                    ToolbarItemDef MyItem = new ToolbarItemDef(componentDef, reader);

                    _Children.Add(MyItem);
                    break;

                default:
                    reader.Skip();
                    break;
                }
            }
        }