using LiveCharts;
using LiveCharts.Wpf;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Tango.SharedUI.Components;
namespace Tango.MachineStudio.Statistics.Views
{
/// <summary>
/// Interaction logic for JobRunsView.xaml
/// </summary>
public partial class JobRunsView : UserControl
{
private int _lastSelectedGridItemIndex;
public JobRunsView()
{
InitializeComponent();
_lastSelectedGridItemIndex = -1;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
selectMachineButton.IsChecked = true;
e.Handled = true;
}
private void JobRunSourcesButton_Click(object sender, RoutedEventArgs e)
{
selectJobRunSources.IsChecked = true;
e.Handled = true;
}
private void IsGradientButton_Click(object sender, RoutedEventArgs e)
{
selectIsGradient.IsChecked = true;
e.Handled = true;
}
private void JobRunStatusButton_Click(object sender, RoutedEventArgs e)
{
selectJobRunStatus.IsChecked = true;
e.Handled = true;
}
private async void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
await Task.Delay(200);
TextBox txtBox = sender as TextBox;
txtBox.SelectAll();
}
private void TextBox_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
e.Handled = true;
}
private void SelectMachineButton_Click(object sender, RoutedEventArgs e)
{
selectThreadsButton.IsChecked = true;
e.Handled = true;
}
private void IsHeadCleaningButton_Click(object sender, RoutedEventArgs e)
{
isHeadCleaningToggleButton.IsChecked = true;
e.Handled = true;
}
private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
DataGrid dataGrid = sender as DataGrid;
_lastSelectedGridItemIndex = -1;
if (e.AddedItems != null && e.AddedItems.Count > 0)
{
DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromItem(e.AddedItems[0]);
if (row != null)
{
_lastSelectedGridItemIndex = row.GetIndex();
}
}
}
private void StartDatePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
DatePicker datePickerObj = sender as DatePicker;
if(datePickerObj != null && datePickerObj.SelectedDate != null && endDatePicker.SelectedDate != null)
{
if(datePickerObj.SelectedDate> endDatePicker.SelectedDate)
{
BindingExpression start_be = datePickerObj.GetBindingExpression(DatePicker.SelectedDateProperty);
ValidationError validationError = new ValidationError(StartDateExpiredRule, start_be);
validationError.ErrorContent = "The start time must be less than or equal to end time.";
Validation.MarkInvalid(start_be, validationError);
}
else if (Validation.GetHasError(endDatePicker))
{
BindingExpression end_be = endDatePicker.GetBindingExpression(DatePicker.SelectedDateProperty);
Validation.ClearInvalid(end_be);
}
}
}
private void EndDatePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
DatePicker datePickerObj = sender as DatePicker;
if (datePickerObj.SelectedDate != null && startdatePicker.SelectedDate != null )
{
if(datePickerObj != null && datePickerObj.SelectedDate < startdatePicker.SelectedDate)
{
BindingExpression end_be = datePickerObj.GetBindingExpression(DatePicker.SelectedDateProperty);
ValidationError validationError = new ValidationError(EndDateExpiredRule, end_be);
validationError.ErrorContent = "The end time must be greater than or equal to the start time.";
Validation.MarkInvalid(end_be, validationError);
}
else if (Validation.GetHasError(startdatePicker))
{
BindingExpression start_be = startdatePicker.GetBindingExpression(DatePicker.SelectedDateProperty);
Validation.ClearInvalid(start_be);
}
}
}
private void CheckBox_PreventUndoCheck(object sender, RoutedEventArgs e)
{
if( sender is CheckBox)
{
CheckBox cb = sender as CheckBox;
if (cb.IsChecked == false)
{
cb.IsChecked = true;
e.Handled = true;
return;
}
}
e.Handled = false;
}
private void CheckBox_StayChecked(object sender, RoutedEventArgs e)
{
if (sender is CheckBox)
{
CheckBox cb = sender as CheckBox;
if (cb.IsChecked == false)
{
var col = cb.Tag;
Type type = col.GetType();
if (col != null && col.GetType().GetGenericTypeDefinition() == typeof(SelectedObjectCollection<>))
{
dynamic dSynchedSource = type.GetProperty("SynchedSource").GetValue(col);
if(dSynchedSource != null && dSynchedSource.GetType().GetGenericTypeDefinition() == typeof(ObservableCollection<>) && dSynchedSource.Count == 0)
{
cb.IsChecked = true;
e.Handled = true;
return;
}
}
}
}
e.Handled = false;
}
}
}