protected override void CreateChildElements()
        {
            this.arrowButton         = new RadArrowButtonElement();
            this.arrowButton.MinSize = RadDropDownButtonElement.ArrowButtonDefaultSize;
            this.arrowButton.SetValue(DropDownEditorLayoutPanel.IsArrowButtonProperty, true);
            this.arrowButton.Class       = "DropDownButtonArrowButton";
            this.arrowButton.MouseEnter += new EventHandler(arrowButton_MouseEnter);
            this.arrowButton.MouseLeave += new EventHandler(arrowButton_MouseLeave);
            this.arrowButton.Click      += new EventHandler(arrowButton_Click);

            this.actionButton = new ActionButtonElement();
            this.actionButton.BindProperty(RadButtonElement.DisplayStyleProperty, this, RadButtonItem.DisplayStyleProperty, PropertyBindingOptions.OneWay);
            this.actionButton.BindProperty(RadButtonElement.ImageAlignmentProperty, this, RadButtonItem.ImageAlignmentProperty, PropertyBindingOptions.OneWay);
            this.actionButton.BindProperty(RadButtonElement.TextAlignmentProperty, this, RadButtonItem.TextAlignmentProperty, PropertyBindingOptions.OneWay);
            this.actionButton.BindProperty(RadButtonElement.TextImageRelationProperty, this, RadButtonItem.TextImageRelationProperty, PropertyBindingOptions.OneWay);
            this.actionButton.BindProperty(RadButtonElement.TextProperty, this, RadButtonItem.TextProperty, PropertyBindingOptions.TwoWay);
            this.actionButton.BindProperty(RadButtonElement.ImageIndexProperty, this, RadButtonItem.ImageIndexProperty, PropertyBindingOptions.TwoWay);
            this.actionButton.BindProperty(RadButtonElement.ImageProperty, this, RadButtonItem.ImageProperty, PropertyBindingOptions.TwoWay);
            this.actionButton.BindProperty(RadButtonElement.ImageKeyProperty, this, RadButtonItem.ImageKeyProperty, PropertyBindingOptions.TwoWay);
            this.actionButton.SetValue(DropDownEditorLayoutPanel.IsContentProperty, true);
            this.actionButton.MouseLeave += new EventHandler(actionButton_MouseLeave);
            this.actionButton.MouseEnter += new EventHandler(actionButton_MouseEnter);
            this.actionButton.Click      += new EventHandler(actionButton_Click);
            this.actionButton.NotifyParentOnMouseInput = true;

            this.layoutPanel = new DropDownEditorLayoutPanel();
            this.layoutPanel.BindProperty(DropDownEditorLayoutPanel.AutoSizeModeProperty, this, RadDropDownButtonElement.AutoSizeModeProperty, PropertyBindingOptions.OneWay);
            this.layoutPanel.Children.Add(this.arrowButton);
            this.layoutPanel.Children.Add(this.actionButton);
            DockLayoutPanel.SetDock(arrowButton, Dock.Right);
            DockLayoutPanel.SetDock(actionButton, Dock.Left);
            layoutPanel.LastChildFill = true;

            this.borderPrimitive = new BorderPrimitive();
            this.borderPrimitive.AutoSizeMode = RadAutoSizeMode.FitToAvailableSize;
            this.borderPrimitive.Class        = "DropDownButtonBorder";
            this.Children.Add(this.borderPrimitive);
            this.Children.Add(this.layoutPanel);
        }
        protected override void CreateChildElements()
        {
            this.filterDropDown                                      = new RadDropDownButtonElement();
            this.filterDropDown.Alignment                            = ContentAlignment.TopLeft;
            this.filterDropDown.ExpandArrowButton                    = true;
            this.filterDropDown.ArrowButton.Arrow.Alignment          = ContentAlignment.MiddleLeft;
            this.filterDropDown.Class                                = "RadGalleryPopupFilterDropDownButton";
            this.filterDropDown.ActionButton.ButtonFillElement.Class = "RadGalleryPopupFilterActionButtonFill";
            this.filterDropDown.ActionButton.BorderElement.Class     = "RadGalleryPopupFilterActionButtonBorder";
            this.filterDropDown.ActionButton.Class                   = "RadGalleryPopupFilterActionButton";
            this.filterDropDown.ArrowButton.Fill.Class               = "RadGalleryPopupFilterArrowButtonFill";
            this.filterDropDown.ArrowButton.Border.Class             = "RadGalleryPopupFilterArrowButtonBorder";
            this.filterDropDown.ArrowButton.Arrow.Class              = "RadGalleryPopupFilterArrowButtonArrow";
            this.filterDropDown.BorderElement.Class                  = "RadGalleryPopupFilterDropDownButtonBorder";

            this.popupGroupsViewport = new RadCanvasViewport();

            this.popupScrollViewer = new RadScrollViewer(this.popupGroupsViewport);
            this.popupScrollViewer.AutoSizeMode          = RadAutoSizeMode.FitToAvailableSize;
            this.popupScrollViewer.HorizontalScrollState = ScrollState.AlwaysHide;
            this.popupScrollViewer.UsePhysicalScrolling  = true;
            this.popupScrollViewer.Class             = "RadGalleryPopupScrollViewer";
            this.popupScrollViewer.FillElement.Class = "RadGalleryPopupScrollViewerFill";

            this.subMenuLayoutPanel           = new RadGalleryMenuLayoutPanel();
            this.subMenuLayoutPanel.Alignment = ContentAlignment.BottomLeft;
            this.subMenuLayoutPanel.Class     = "RadGalleryPoupMenuPanel";

            this.dropDownPanel = new StackLayoutPanel();
            this.dropDownPanel.AutoSizeMode       = RadAutoSizeMode.FitToAvailableSize;
            this.dropDownPanel.Orientation        = System.Windows.Forms.Orientation.Vertical;
            this.dropDownPanel.EqualChildrenWidth = true;

            this.downMenu = new RadGalleryDropDown(this);
            this.WireMenuDropDownEvents();
            this.downMenu.VerticalPopupAlignment   = VerticalPopupAlignment.TopToTop;
            this.downMenu.HorizontalPopupAlignment = HorizontalPopupAlignment.LeftToLeft;
            this.downMenu.AnimationEnabled         = false;

            this.galleryPopupElement = new RadGalleryPopupElement(
                this.Items,
                this.Groups,
                this.Filters,
                this.Tools);
            this.downMenu.PopupElement = this.galleryPopupElement;
            this.downMenu.LoadElementTree();
            this.dropDownPanel.Children.Add(this.filterDropDown);
            this.dropDownPanel.Children.Add(this.popupScrollViewer);
            this.dropDownPanel.Children.Add(this.subMenuLayoutPanel);

            //TODO: perhaps we should implement RadStackViewport to support integral scrolling
            this.inribbonItemsLayoutPanel            = new IntegralScrollWrapPanel();
            this.inribbonItemsLayoutPanel.MaxColumns = this.MaxColumns;
            this.inribbonItemsLayoutPanel.MaxRows    = this.MaxRows;
            this.Items.Owner = this.inribbonItemsLayoutPanel;

            this.upButton                         = new RadImageButtonElement();
            this.upButton.Class                   = "GalleryUpButton";
            this.upButton.Enabled                 = false;
            this.upButton.MinSize                 = arrowButtonsMinSize;
            this.upButton.Click                  += new EventHandler(upButton_Click);
            this.upButton.BorderElement.Class     = "GalleryUpButtonBorder";
            this.upButton.ButtonFillElement.Class = "GalleryArrowButtonFill";

            this.downButton                         = new RadImageButtonElement();
            this.downButton.Class                   = "GalleryDownButton";
            this.downButton.MinSize                 = arrowButtonsMinSize;
            this.downButton.Click                  += new EventHandler(downButton_Click);
            this.downButton.BorderElement.Class     = "GalleryDownButtonBorder";
            this.downButton.ButtonFillElement.Class = "GalleryArrowButtonFill";

            this.popupButton         = new RadImageButtonElement();
            this.popupButton.Class   = "GalleryPopupButtonButton";
            this.popupButton.MinSize = arrowButtonsMinSize;

            this.popupButton.MouseDown              += new System.Windows.Forms.MouseEventHandler(popupButton_MouseDown);
            this.popupButton.BorderElement.Class     = "GalleryPopupButtonButtonBorder";
            this.popupButton.ButtonFillElement.Class = "GalleryArrowButtonFill";

            this.buttonsPanel         = new RadGalleryButtonsLayoutPanel();
            this.buttonsPanel.MaxSize = buttonsPanelMaxSize;
            this.buttonsPanel.SetValue(DropDownEditorLayoutPanel.IsArrowButtonProperty, true);
            this.buttonsPanel.Children.Add(upButton);
            this.buttonsPanel.Children.Add(downButton);
            this.buttonsPanel.Children.Add(popupButton);

            this.inribbonPanel = new DropDownEditorLayoutPanel();
            this.inribbonPanel.AutoSizeMode = RadAutoSizeMode.FitToAvailableSize;

            this.inribbonFillPrimitive       = new FillPrimitive();
            this.inribbonFillPrimitive.Class = "InribbonGalleryFill";

            this.inribbonPanel.Children.Add(this.inribbonItemsLayoutPanel);
            this.inribbonPanel.Children.Add(this.buttonsPanel);

            this.inribbonPanelBorder            = new BorderPrimitive();
            this.inribbonPanelBorder.Visibility = ElementVisibility.Collapsed;
            this.inribbonPanelBorder.Class      = "InribbonGalleryBorder";
            this.Children.Add(this.inribbonPanelBorder);
            this.Children.Add(this.inribbonFillPrimitive);
            this.Children.Add(this.inribbonPanel);
        }