public ViewLayoutMonths(IContextMenuProvider provider,
KryptonContextMenuMonthCalendar monthCalendar,
ViewContextMenuManager viewManager,
IKryptonMonthCalendar calendar,
PaletteRedirect redirector,
NeedPaintHandler needPaintDelegate)
{
_provider = provider;
_calendar = calendar;
_oldSelectionStart = _calendar.SelectionStart;
_oldSelectionEnd = _calendar.SelectionEnd;
_displayMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
_redirector = redirector;
_needPaintDelegate = needPaintDelegate;
_showToday = true;
_showTodayCircle = true;
_closeOnTodayClick = false;
_firstTimeSync = true;
_allowButtonSpecToolTips = false;
// Use a controller that can work against all the displayed months
MonthCalendarController controller = new MonthCalendarController(monthCalendar, viewManager, this, _needPaintDelegate);
MouseController = controller;
SourceController = controller;
KeyController = controller;
_borderForced = new PaletteBorderInheritForced(_calendar.StateNormal.Header.Border);
_borderForced.ForceBorderEdges(PaletteDrawBorders.None);
_drawHeader = new ViewDrawDocker(_calendar.StateNormal.Header.Back, _borderForced, null);
_emptyContent = new ViewDrawEmptyContent(_calendar.StateDisabled.Header.Content, _calendar.StateNormal.Header.Content);
_drawHeader.Add(_emptyContent, ViewDockStyle.Fill);
Add(_drawHeader);
// Using a button spec manager to add the buttons to the header
_buttonSpecs = new MonthCalendarButtonSpecCollection(this);
_buttonManager = new ButtonSpecManagerDraw(_calendar.CalendarControl, redirector, _buttonSpecs, null,
new ViewDrawDocker[] { _drawHeader },
new IPaletteMetric[] { _calendar.StateCommon },
new PaletteMetricInt[] { PaletteMetricInt.HeaderButtonEdgeInsetCalendar },
new PaletteMetricPadding[] { PaletteMetricPadding.None },
_calendar.GetToolStripDelegate, _needPaintDelegate);
// Create the manager for handling tooltips
_toolTipManager = new ToolTipManager();
_toolTipManager.ShowToolTip += new EventHandler<ToolTipEventArgs>(OnShowToolTip);
_toolTipManager.CancelToolTip += new EventHandler(OnCancelToolTip);
_buttonManager.ToolTipManager = _toolTipManager;
// Create the bottom header used for showing 'today' and defined button specs
_remapPalette = (ButtonSpecRemapByContentView)_buttonManager.CreateButtonSpecRemap(redirector, new ButtonSpecAny());
_remapPalette.Foreground = _emptyContent;
// Use a redirector to get button values directly from palette
_palette = new PaletteTripleRedirect(_remapPalette,
PaletteBackStyle.ButtonButtonSpec,
PaletteBorderStyle.ButtonButtonSpec,
PaletteContentStyle.ButtonButtonSpec,
_needPaintDelegate);
_drawToday = new ViewDrawToday(_calendar, _palette, _palette, _palette, _palette, _needPaintDelegate);
_drawToday.Click += new EventHandler(OnTodayClick);
_drawHeader.Add(_drawToday, ViewDockStyle.Left);
}