/// <summary>
        /// Setup constructor
        /// </summary>
        /// <param name="commandHost">Command host. Used to execute commands from items in this group and sub groups</param>
        /// <param name="item">Tool strip item that this group is bound to</param>
        /// <param name="groupInfo">Group information</param>
        public MenuGroup( ICommandHost commandHost, ToolStripMenuItem item, MenuGroupInfo groupInfo )
        {
            Arguments.CheckNotNull( commandHost, "commandHost" );
            Arguments.CheckNotNull( item, "item" );
            Arguments.CheckNotNull( groupInfo, "groupInfo" );

            m_CommandHost = commandHost;
            m_Ordinal = groupInfo.Ordinal;
            m_Item = item;
            item.Tag = this;
            item.Text = groupInfo.Text;
            item.Name = groupInfo.Name;
        }
        /// <summary>
        /// Finds or creates a root menu group
        /// </summary>
        public IMenuGroup this[MenuGroupInfo info]
        {
            get
            {
                ToolStripItem item = MainMenu.Items[ info.Name ];
                if ( item != null )
                {
                    return ( IMenuGroup )item.Tag;
                }

                item = MainMenu.Items.Add( info.Text );
                return new MenuGroup( m_CommandHost, ( ToolStripMenuItem )item, info );
            }
        }
        /// <summary>
        /// Finds or adds a new menu group matching the specified information
        /// </summary>
        public IMenuGroup AddGroup( MenuGroupInfo groupInfo )
        {
            ToolStripItem item = m_Item.DropDownItems[ groupInfo.Name ];
            if ( item != null )
            {
                return ( IMenuGroup )item.Tag;
            }

            ToolStripMenuItem groupItem = new ToolStripMenuItem( );
            InsertMenuItem( groupInfo.Ordinal, groupItem );
            return new MenuGroup( m_CommandHost, groupItem, groupInfo );
        }
 /// <summary>
 /// Finds or adds a new menu group matching the specified information
 /// </summary>
 public IMenuGroup this[MenuGroupInfo groupInfo]
 {
     get { return AddGroup( groupInfo ); }
 }