using Avalonia.Controls;
using Avalonia.Input;

namespace SourceGit.Views
{
    public partial class RevisionCompare : UserControl
    {
        public RevisionCompare()
        {
            InitializeComponent();
        }

        private void OnDataGridSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (sender is DataGrid datagrid && datagrid.IsVisible)
            {
                datagrid.ScrollIntoView(datagrid.SelectedItem, null);
            }
            e.Handled = true;
        }

        private void OnDataGridContextRequested(object sender, ContextRequestedEventArgs e)
        {
            if (sender is DataGrid datagrid && datagrid.SelectedItem != null)
            {
                var compare = DataContext as ViewModels.RevisionCompare;
                var menu = compare.CreateChangeContextMenu(datagrid.SelectedItem as Models.Change);
                datagrid.OpenContextMenu(menu);
            }

            e.Handled = true;
        }

        private void OnTreeViewContextRequested(object sender, ContextRequestedEventArgs e)
        {
            if (sender is TreeView view && view.SelectedItem != null)
            {
                var compare = DataContext as ViewModels.RevisionCompare;
                var node = view.SelectedItem as ViewModels.FileTreeNode;
                if (node != null && !node.IsFolder)
                {
                    var menu = compare.CreateChangeContextMenu(node.Backend as Models.Change);
                    view.OpenContextMenu(menu);
                }
            }

            e.Handled = true;
        }

        private void OnPressedSHA(object sender, PointerPressedEventArgs e)
        {
            if (sender is TextBlock block)
            {
                var compare = DataContext as ViewModels.RevisionCompare;
                compare.NavigateTo(block.Text);
            }

            e.Handled = true;
        }
    }
}
