File size: 2,051 Bytes
18a519f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#if UNITY_EDITOR
using System;
using System.Collections.Generic;

namespace UnityEngine.InputSystem.Editor
{
    internal class AdvancedDropdownItem : IComparable
    {
        internal readonly List<AdvancedDropdownItem> m_Children = new List<AdvancedDropdownItem>();

        public string name { get; set; }
        public Texture2D icon { get; set; }
        public int id { get; set; }
        public bool enabled { get; set; } = true;
        public int indent { get; set; }

        internal int elementIndex { get; set; } = -1;

        public IEnumerable<AdvancedDropdownItem> children => m_Children;

        protected string m_SearchableName;
        public virtual string searchableName => string.IsNullOrEmpty(m_SearchableName) ? name : m_SearchableName;

        public void AddChild(AdvancedDropdownItem child)
        {
            m_Children.Add(child);
        }

        public int GetIndexOfChild(AdvancedDropdownItem child)
        {
            return m_Children.IndexOf(child);
        }

        static readonly AdvancedDropdownItem k_SeparatorItem = new SeparatorDropdownItem();

        public AdvancedDropdownItem(string name)
        {
            this.name = name;
            id = name.GetHashCode();
        }

        public virtual int CompareTo(object o)
        {
            return name.CompareTo((o as AdvancedDropdownItem).name);
        }

        public void AddSeparator(string label = null)
        {
            if (string.IsNullOrEmpty(label))
                AddChild(k_SeparatorItem);
            else
                AddChild(new SeparatorDropdownItem(label));
        }

        internal bool IsSeparator()
        {
            return this is SeparatorDropdownItem;
        }

        public override string ToString()
        {
            return name;
        }

        private class SeparatorDropdownItem : AdvancedDropdownItem
        {
            public SeparatorDropdownItem(string label = "")
                : base(label)
            {
            }
        }
    }
}

#endif // UNITY_EDITOR