/// <summary>
        /// Gets the array of group level key tips.
        /// </summary>
        /// <param name="keyTipList">List to add new entries into.</param>
        /// <param name="lineHint">Provide hint to item about its location.</param>
        public void GetGroupKeyTips(KeyTipInfoList keyTipList, int lineHint)
        {
            // Only provide a key tip if we are visible
            if (Visible)
            {
                // Get the screen location of the check box
                Rectangle viewRect = _ribbon.KeyTipToScreen(this[0]);

                Point screenPt = Point.Empty;
                GroupCheckBoxController controller = null;

                // Determine the screen position of the key tip dependant on item location/size
                switch (_currentSize)
                {
                case GroupItemSize.Large:
                    screenPt   = new Point(viewRect.Left + (viewRect.Width / 2), viewRect.Bottom);
                    controller = _viewLargeController;
                    break;

                case GroupItemSize.Medium:
                case GroupItemSize.Small:
                    screenPt   = _ribbon.CalculatedValues.KeyTipRectToPoint(viewRect, lineHint);
                    controller = _viewMediumSmallController;
                    break;
                }

                keyTipList.Add(new KeyTipInfo(GroupCheckBox.Enabled, GroupCheckBox.KeyTip,
                                              screenPt, this[0].ClientRectangle, controller));
            }
        }
        private void CreateMediumSmallCheckBoxView()
        {
            // Create the layout docker for the contents of the button
            _viewMediumSmall = new ViewLayoutRibbonCheckBox();

            // Create the image and drop down content
            _viewMediumSmallImage = new ViewDrawRibbonGroupCheckBoxImage(_ribbon, GroupCheckBox, false);
            _viewMediumSmallText1 = new ViewDrawRibbonGroupCheckBoxText(_ribbon, GroupCheckBox, true);
            _viewMediumSmallText2 = new ViewDrawRibbonGroupCheckBoxText(_ribbon, GroupCheckBox, false);
            ViewLayoutRibbonCenterPadding imagePadding = new ViewLayoutRibbonCenterPadding(_smallImagePadding)
            {
                _viewMediumSmallImage
            };

            // Layout the content in the center of a row
            _viewMediumSmallCenter = new ViewLayoutRibbonRowCenter
            {
                imagePadding,
                _viewMediumSmallText1,
                _viewMediumSmallText2
            };

            // Use content as only fill item
            _viewMediumSmall.Add(_viewMediumSmallCenter, ViewDockStyle.Fill);

            // Create controller for handling mouse, keyboard and focus
            _viewMediumSmallController               = new GroupCheckBoxController(_ribbon, _viewMediumSmall, _viewMediumSmallImage, _needPaint);
            _viewMediumSmallController.Click        += OnMediumSmallCheckBoxClick;
            _viewMediumSmallController.ContextClick += OnContextClick;
            _viewMediumSmall.MouseController         = _viewMediumSmallController;
            _viewMediumSmall.SourceController        = _viewMediumSmallController;
            _viewMediumSmall.KeyController           = _viewMediumSmallController;

            // Create controller for intercepting events to determine tool tip handling
            _viewMediumSmall.MouseController = new ToolTipController(_ribbon.TabsArea.ButtonSpecManager.ToolTipManager,
                                                                     _viewMediumSmall, _viewMediumSmall.MouseController);
        }
        private void CreateLargeCheckBoxView()
        {
            // Create the layout docker for the contents of the button
            _viewLarge = new ViewLayoutRibbonCheckBox();

            // Add the large button at the top
            _viewLargeImage = new ViewDrawRibbonGroupCheckBoxImage(_ribbon, GroupCheckBox, true);
            ViewLayoutRibbonCenterPadding largeImagePadding = new ViewLayoutRibbonCenterPadding(_largeImagePadding)
            {
                _viewLargeImage
            };

            _viewLarge.Add(largeImagePadding, ViewDockStyle.Top);

            // Add the first line of text
            _viewLargeText1 = new ViewDrawRibbonGroupCheckBoxText(_ribbon, GroupCheckBox, true);
            _viewLarge.Add(_viewLargeText1, ViewDockStyle.Bottom);

            // Add the second line of text
            _viewLargeText2 = new ViewDrawRibbonGroupCheckBoxText(_ribbon, GroupCheckBox, false);
            _viewLarge.Add(_viewLargeText2, ViewDockStyle.Bottom);

            // Add a 1 pixel separator at bottom of button before the text
            _viewLarge.Add(new ViewLayoutRibbonSeparator(1, false), ViewDockStyle.Bottom);

            // Create controller for handling mouse, keyboard and focus
            _viewLargeController               = new GroupCheckBoxController(_ribbon, _viewLarge, _viewLargeImage, _needPaint);
            _viewLargeController.Click        += OnLargeCheckBoxClick;
            _viewLargeController.ContextClick += OnContextClick;
            _viewLarge.MouseController         = _viewLargeController;
            _viewLarge.SourceController        = _viewLargeController;
            _viewLarge.KeyController           = _viewLargeController;

            // Create controller for intercepting events to determine tool tip handling
            _viewLarge.MouseController = new ToolTipController(_ribbon.TabsArea.ButtonSpecManager.ToolTipManager,
                                                               _viewLarge, _viewLarge.MouseController);
        }