private void Month_MouseLeave(object sender, PointerEventArgs e) { if (_isMouseLeftButtonDownYearView) { CalendarButton b = (CalendarButton)sender; // The button is in Pressed state. Change the state to normal. if (e.Device.Captured == b) { e.Device.Capture(null); } //b.ReleaseMouseCapture(); if (_downEventArgYearView != null) { var args = new PointerReleasedEventArgs() { Device = _downEventArgYearView.Device, MouseButton = _downEventArgYearView.MouseButton, Handled = _downEventArgYearView.Handled, InputModifiers = _downEventArgYearView.InputModifiers, Route = _downEventArgYearView.Route, Source = _downEventArgYearView.Source }; b.SendMouseLeftButtonUp(args); } _lastCalendarButton = b; } }
private void Month_MouseEnter(object?sender, PointerEventArgs e) { if (_isMouseLeftButtonDownYearView) { CalendarButton b = (CalendarButton)sender !; UpdateYearViewSelection(b); } }
private void SetYearButtons(int decade, int decadeEnd) { int year; int count = -1; foreach (object child in YearView.Children) { CalendarButton childButton = child as CalendarButton; Contract.Requires <ArgumentNullException>(childButton != null); year = decade + count; if (year <= DateTime.MaxValue.Year && year >= DateTime.MinValue.Year) { // There should be no time component. Time is 12:00 AM DateTime day = new DateTime(year, 1, 1); childButton.DataContext = day; childButton.Content = year.ToString(DateTimeHelper.GetCurrentDateFormat()); childButton.IsVisible = true; if (Owner != null) { if (year == Owner.SelectedYear.Year) { Owner.FocusCalendarButton = childButton; childButton.IsCalendarButtonFocused = Owner.HasFocusInternal; } else { childButton.IsCalendarButtonFocused = false; } childButton.IsSelected = (Owner.DisplayDate.Year == year); if (year < Owner.DisplayDateRangeStart.Year || year > Owner.DisplayDateRangeEnd.Year) { childButton.IsEnabled = false; childButton.Opacity = 0; } else { childButton.IsEnabled = true; childButton.Opacity = 1; } } // SET IF THE YEAR IS INACTIVE OR NOT: set if the year is a // trailing year or not childButton.IsInactive = (year <decade || year> decadeEnd); } else { childButton.IsEnabled = false; childButton.Opacity = 0; } count++; } }
private void Month_MouseEnter(object sender, PointerEventArgs e) { if (_isMouseLeftButtonDownYearView) { CalendarButton b = sender as CalendarButton; Contract.Requires <ArgumentNullException>(b != null); UpdateYearViewSelection(b); } }
private void Month_MouseEnter(object sender, PointerEventArgs e) { if (_isMouseLeftButtonDownYearView) { CalendarButton b = sender as CalendarButton; Debug.Assert(b != null, "The sender should be a non-null CalendarDayButton!"); UpdateYearViewSelection(b); } }
private void Month_CalendarButtonMouseDown(object?sender, PointerPressedEventArgs e) { CalendarButton b = (CalendarButton)sender !; _isMouseLeftButtonDownYearView = true; if (e != null) { _downEventArgYearView = e; } UpdateYearViewSelection(b); }
private void Month_MouseLeave(object sender, PointerEventArgs e) { if (_isMouseLeftButtonDownYearView) { CalendarButton b = (CalendarButton)sender; // The button is in Pressed state. Change the state to normal. if (e.Device.Captured == b) { e.Device.Capture(null); } //b.ReleaseMouseCapture(); _lastCalendarButton = b; } }
private void Month_CalendarButtonMouseDown(object sender, PointerPressedEventArgs e) { CalendarButton b = sender as CalendarButton; Contract.Requires <ArgumentNullException>(b != null); _isMouseLeftButtonDownYearView = true; if (e != null) { _downEventArgYearView = e; } UpdateYearViewSelection(b); }
private void Month_CalendarButtonMouseDown(object sender, PointerPressedEventArgs e) { CalendarButton b = sender as CalendarButton; Debug.Assert(b != null, "The sender should be a non-null CalendarDayButton!"); _isMouseLeftButtonDownYearView = true; if (e != null) { _downEventArgYearView = e; } UpdateYearViewSelection(b); }
private void SetMonthButtonsForYearMode() { int count = 0; foreach (object child in YearView.Children) { CalendarButton childButton = child as CalendarButton; Contract.Requires <ArgumentNullException>(childButton != null); // There should be no time component. Time is 12:00 AM DateTime day = new DateTime(_currentMonth.Year, count + 1, 1); childButton.DataContext = day; childButton.Content = DateTimeHelper.GetCurrentDateFormat().AbbreviatedMonthNames[count]; childButton.IsVisible = true; if (Owner != null) { if (day.Year == _currentMonth.Year && day.Month == _currentMonth.Month && day.Day == _currentMonth.Day) { Owner.FocusCalendarButton = childButton; childButton.IsCalendarButtonFocused = Owner.HasFocusInternal; } else { childButton.IsCalendarButtonFocused = false; } Debug.Assert(Owner.DisplayDateInternal != null, "The Owner Calendar's DisplayDateInternal should not be null!"); childButton.IsSelected = (DateTimeHelper.CompareYearMonth(day, Owner.DisplayDateInternal) == 0); if (DateTimeHelper.CompareYearMonth(day, Owner.DisplayDateRangeStart) < 0 || DateTimeHelper.CompareYearMonth(day, Owner.DisplayDateRangeEnd) > 0) { childButton.IsEnabled = false; childButton.Opacity = 0; } else { childButton.IsEnabled = true; childButton.Opacity = 1; } } childButton.IsInactive = false; count++; } }
internal void UpdateYearViewSelection(CalendarButton calendarButton) { if (Owner != null && calendarButton != null && calendarButton.DataContext != null) { Owner.FocusCalendarButton.IsCalendarButtonFocused = false; Owner.FocusCalendarButton = calendarButton; calendarButton.IsCalendarButtonFocused = Owner.HasFocusInternal; if (Owner.DisplayMode == CalendarMode.Year) { Owner.SelectedMonth = (DateTime)calendarButton.DataContext; } else { Owner.SelectedYear = (DateTime)calendarButton.DataContext; } } }
private void PopulateGrids() { if (MonthView != null) { var childCount = Calendar.RowsPerMonth + Calendar.RowsPerMonth * Calendar.ColumnsPerMonth; var children = new List <IControl>(childCount); for (int i = 0; i < Calendar.RowsPerMonth; i++) { if (_dayTitleTemplate != null) { var cell = _dayTitleTemplate.Build(); cell.DataContext = string.Empty; cell.SetValue(Grid.RowProperty, 0); cell.SetValue(Grid.ColumnProperty, i); children.Add(cell); } } for (int i = 1; i < Calendar.RowsPerMonth; i++) { for (int j = 0; j < Calendar.ColumnsPerMonth; j++) { CalendarDayButton cell = new CalendarDayButton(); if (Owner != null) { cell.Owner = Owner; } cell.SetValue(Grid.RowProperty, i); cell.SetValue(Grid.ColumnProperty, j); cell.CalendarDayButtonMouseDown += Cell_MouseLeftButtonDown; cell.CalendarDayButtonMouseUp += Cell_MouseLeftButtonUp; cell.PointerEnter += Cell_MouseEnter; cell.PointerLeave += Cell_MouseLeave; cell.Click += Cell_Click; children.Add(cell); } } MonthView.Children.AddRange(children); } if (YearView != null) { var childCount = Calendar.RowsPerYear * Calendar.ColumnsPerYear; var children = new List <IControl>(childCount); CalendarButton month; for (int i = 0; i < Calendar.RowsPerYear; i++) { for (int j = 0; j < Calendar.ColumnsPerYear; j++) { month = new CalendarButton(); if (Owner != null) { month.Owner = Owner; } month.SetValue(Grid.RowProperty, i); month.SetValue(Grid.ColumnProperty, j); month.CalendarLeftMouseButtonDown += Month_CalendarButtonMouseDown; month.CalendarLeftMouseButtonUp += Month_CalendarButtonMouseUp; month.PointerEnter += Month_MouseEnter; month.PointerLeave += Month_MouseLeave; children.Add(month); } } YearView.Children.AddRange(children); } }
private void PopulateGrids() { if (MonthView != null) { var childCount = Calendar.RowsPerMonth + Calendar.RowsPerMonth * Calendar.ColumnsPerMonth; using var children = new PooledList <IControl>(childCount); for (int i = 0; i < Calendar.RowsPerMonth; i++) { if (_dayTitleTemplate != null) { var cell = (Control)_dayTitleTemplate.Build(); cell.DataContext = string.Empty; cell.SetValue(Grid.RowProperty, 0); cell.SetValue(Grid.ColumnProperty, i); children.Add(cell); } } EventHandler <PointerPressedEventArgs> cellMouseLeftButtonDown = Cell_MouseLeftButtonDown; EventHandler <PointerReleasedEventArgs> cellMouseLeftButtonUp = Cell_MouseLeftButtonUp; EventHandler <PointerEventArgs> cellMouseEnter = Cell_MouseEnter; EventHandler <RoutedEventArgs> cellClick = Cell_Click; for (int i = 1; i < Calendar.RowsPerMonth; i++) { for (int j = 0; j < Calendar.ColumnsPerMonth; j++) { var cell = new CalendarDayButton(); if (Owner != null) { cell.Owner = Owner; } cell.SetValue(Grid.RowProperty, i); cell.SetValue(Grid.ColumnProperty, j); cell.CalendarDayButtonMouseDown += cellMouseLeftButtonDown; cell.CalendarDayButtonMouseUp += cellMouseLeftButtonUp; cell.PointerEnter += cellMouseEnter; cell.Click += cellClick; children.Add(cell); } } MonthView.Children.AddRange(children); } if (YearView != null) { var childCount = Calendar.RowsPerYear * Calendar.ColumnsPerYear; var children = new List <IControl>(childCount); EventHandler <PointerPressedEventArgs> monthCalendarButtonMouseDown = Month_CalendarButtonMouseDown; EventHandler <PointerReleasedEventArgs> monthCalendarButtonMouseUp = Month_CalendarButtonMouseUp; EventHandler <PointerEventArgs> monthMouseEnter = Month_MouseEnter; for (int i = 0; i < Calendar.RowsPerYear; i++) { for (int j = 0; j < Calendar.ColumnsPerYear; j++) { var month = new CalendarButton(); if (Owner != null) { month.Owner = Owner; } month.SetValue(Grid.RowProperty, i); month.SetValue(Grid.ColumnProperty, j); month.CalendarLeftMouseButtonDown += monthCalendarButtonMouseDown; month.CalendarLeftMouseButtonUp += monthCalendarButtonMouseUp; month.PointerEnter += monthMouseEnter; children.Add(month); } } YearView.Children.AddRange(children); } }