using System.Reflection;

using UnityEditor.IMGUI.Controls;

#if UNITY_6000_2_OR_NEWER
using TreeView = UnityEditor.IMGUI.Controls.TreeView<int>;
#endif

namespace Unity.PlasticSCM.Editor.UnityInternals.UnityEditor
{
    internal static class TreeViewExtensions
    {
        internal static void RaiseContextClickedItem(this TreeView treeView)
        {
            MethodInfo InternalContextClickedItem = treeView.GetType().GetMethod(
                "ContextClickedItem",
                BindingFlags.Instance | BindingFlags.NonPublic);

            if (InternalContextClickedItem == null)
                return;

            InternalContextClickedItem.Invoke(treeView, new object[] { -1 });
        }

        internal static void RaiseContextClicked(this TreeView treeView)
        {
            MethodInfo InternalContextClicked = treeView.GetType().GetMethod(
                "ContextClicked",
                BindingFlags.Instance | BindingFlags.NonPublic);

            if (InternalContextClicked == null)
                return;

            InternalContextClicked.Invoke(treeView, null);
        }
    }
}