/// <summary>
/// Initialize a new instance of the ViewDrawRibbonGroupButtonBackBorder class.
/// </summary>
/// <param name="ribbon">Reference to owning ribbon control.</param>
/// <param name="groupItem">Reference to owning group item.</param>
/// <param name="paletteBack">Palette to use for the background.</param>
/// <param name="paletteBorder">Palette to use for the border.</param>
/// <param name="constantBorder">Should the border be a constant normal state.</param>
/// <param name="needPaint">Delegate for notifying paint requests.</param>
public ViewDrawRibbonGroupButtonBackBorder(KryptonRibbon ribbon,
KryptonRibbonGroupItem groupItem,
IPaletteBack paletteBack,
IPaletteBorder paletteBorder,
bool constantBorder,
NeedPaintHandler needPaint)
{
Debug.Assert(ribbon != null);
Debug.Assert(groupItem != null);
Debug.Assert(paletteBack != null);
Debug.Assert(paletteBorder != null);
// Remember incoming references
_ribbon = ribbon;
_groupItem = groupItem;
_paletteBack = paletteBack;
_paletteBackDraw = new PaletteBackInheritForced(paletteBack);
_paletteBackDraw.ForceDraw = InheritBool.True;
_paletteBackLight = new PaletteBackLightenColors(paletteBack);
_paletteBorderAll = new PaletteBorderInheritForced(paletteBorder);
_paletteBorderAll.ForceBorderEdges(PaletteDrawBorders.All);
_paletteBorder = paletteBorder;
_constantBorder = constantBorder;
// Default other fields
_checked = false;
_drawNonTrackingAreas = true;
// Create delegate used to process end of click action
_finishDelegate = new EventHandler(ActionFinished);
// Attach a controller to this element for the pressing of the button
_controller = new GroupButtonController(_ribbon, this, needPaint);
_controller.Click += new EventHandler(OnClick);
_controller.ContextClick += new MouseEventHandler(OnContextClick);
_controller.DropDown += new EventHandler(OnDropDown);
MouseController = _controller;
SourceController = _controller;
KeyController = _controller;
}