public void ConfirmInput()
        {
            string path = levelPathInput_.value;

            Predicate <HierarchyComponentData> search = (x) => string.Equals(x.Path, path, StringComparison.CurrentCultureIgnoreCase);

            HierarchyComponentData item
                = Current.Entries.Find(search)
                  ?? NavigationElements.Find(search);

            if (item != null)
            {
                switch (item.Hierarchy)
                {
                case HierarchyLevel.Folder:
                    Current = item as HierarchyComponentFolder;
                    GenerateComponentNameList();
                    break;

                case HierarchyLevel.Special:
                    switch (item.Path)
                    {
                    case "$parent-folder":
                        Current = Current.Parent ?? Current;
                        break;

                    case "$root-folder":
                        Current = Root;
                        break;
                    }
                    GenerateComponentNameList();
                    break;
                }
            }
        }
        static AddCustomComponentMenuLogic()
        {
            NavigationElements = new List <HierarchyComponentData>();
            NavigationElements.Add(new HierarchyComponentSpecial("Parent Folder", "parent-folder"));
            NavigationElements.Add(new HierarchyComponentSpecial("Root Folder", "root-folder"));

            Root = new HierarchyComponentFolder("#root#>", null);
            Root.CreateFile("Text Effects/Advanced Text Mesh Settings", "com.customcampaign.textmeshsettings");
            Root.CreateFile("Text Effects/Reveal Text Listener", "com.customcampaign.listeners/revealtext");
            Root.CreateFile("Json Data", "com.customcampaign.generic/jsondata");
        }
        private void CreateButtons(HierarchyComponentFolder folder)
        {
            int sortIndex  = 1;
            int sortLength = (folder.Entries.Count + NavigationElements.Count + sortIndex).ToString().Length;

            var subfolders = (from entry in folder.Entries where entry is HierarchyComponentFolder select entry).ToList();
            var files      = (from entry in folder.Entries where entry is HierarchyComponentFile select entry).ToList();

            subfolders.Sort((x, y) => string.Compare(x.Name, y.Name));
            files.Sort((x, y) => string.Compare(x.Name, y.Name));

            if (Current.Parent != null)
            {
                CreateEntries(NavigationElements, new Color(0.68f, 0.83f, 0.38f));
            }

            CreateEntries(subfolders, Colors.BlueCyanColors.lightSkyBlue);
            CreateEntries(files, Colors.white);

            void CreateEntries(List <HierarchyComponentData> entries, Color color)
            {
                foreach (var entry in entries)
                {
                    string sort = sortIndex.ToString();
                    while (sort.Length < sortLength)
                    {
                        sort = $"0{sort}";
                    }

                    ComponentEntry componentEntry = ComponentEntry.CreateEntry(entry, ClickOnEntry, DoubleClickOnEntry, true, color);
                    componentEntry.sortString_ = sort;
                    buttonList_.Add(componentEntry);

                    ++sortIndex;
                }
            }
        }
 private void OnEnable()
 {
     Current = Root;
     GenerateComponentNameList();
 }