/// <summary> /// Initialize a new instance of the ViewDrawMenuMonthCalendar class. /// </summary> /// <param name="provider">Reference to provider.</param> /// <param name="monthCalendar">Reference to owning month calendar entry.</param> public ViewDrawMenuMonthCalendar(IContextMenuProvider provider, KryptonContextMenuMonthCalendar monthCalendar) { _provider = provider; _monthCalendar = monthCalendar; _firstDayOfWeek = _monthCalendar.FirstDayOfWeek; _minDate = _monthCalendar.MinDate; _maxDate = _monthCalendar.MaxDate; _todayDate = _monthCalendar.TodayDate; _maxSelectionCount = _monthCalendar.MaxSelectionCount; _scrollChange = _monthCalendar.ScrollChange; _todayText = _monthCalendar.TodayText; _todayFormat = _monthCalendar.TodayFormat; _dimensions = _monthCalendar.CalendarDimensions; // Decide on the enabled state of the display _itemEnabled = provider.ProviderEnabled && _monthCalendar.Enabled; // Give the item object the redirector to use when inheriting values _monthCalendar.SetPaletteRedirect(provider.ProviderRedirector); // Create view that is used by standalone control as well as this context menu element _layoutMonths = new ViewLayoutMonths(provider, monthCalendar, provider.ProviderViewManager, this, provider.ProviderRedirector, provider.ProviderNeedPaintDelegate); _layoutMonths.CloseOnTodayClick = _monthCalendar.CloseOnTodayClick; _layoutMonths.ShowWeekNumbers = _monthCalendar.ShowWeekNumbers; _layoutMonths.ShowTodayCircle = _monthCalendar.ShowTodayCircle; _layoutMonths.ShowToday = _monthCalendar.ShowToday; _layoutMonths.Enabled = _itemEnabled; Add(_layoutMonths); }
/// <summary> /// Initialize a new instance of the MonthCalendarController class. /// </summary> /// <param name="monthCalendar">Reference to owning month calendar entry.</param> /// <param name="viewManager">Owning view manager instance.</param> /// <param name="months">Reference to view that manages the display of months.</param> /// <param name="needPaint">Delegate for handling repainting requests.</param> public MonthCalendarController(KryptonContextMenuMonthCalendar monthCalendar, ViewContextMenuManager viewManager, ViewLayoutMonths months, NeedPaintHandler needPaint) { _monthCalendar = monthCalendar; _viewManager = viewManager; _months = months; _needPaint = needPaint; _mouseOver = false; _captured = false; }
/// <summary> /// Initialize a new instance of the ViewLayoutMonths class. /// </summary> /// <param name="provider">Provider of context menu information.</param> /// <param name="monthCalendar">Reference to owning month calendar entry.</param> /// <param name="viewManager">Owning view manager instance.</param> /// <param name="calendar">Reference to calendar provider.</param> /// <param name="redirector">Redirector for getting values.</param> /// <param name="needPaintDelegate">Delegate for requesting paint changes.</param> 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); }