protected override AdvancedDropdownItem FetchData() { AdvancedDropdownItem rootGroup = new AdvancedDropdownItem(label); searchableElements = new List <AdvancedDropdownItem> (); for (int i = 0; i < displayedOptions.Length; i++) { string menuPath = displayedOptions[i]; string[] paths = menuPath.Split('/'); AdvancedDropdownItem parent = rootGroup; for (int j = 0; j < paths.Length; j++) { string path = paths[j]; if (j == paths.Length - 1) { MultiLevelItem element = new MultiLevelItem(path, menuPath); element.ElementIndex = i; parent.AddChild(element); searchableElements.Add(element); if (i == selectedIndex) { SelectedIDs.Add(element.Id); // var tempParent = parent; // AdvancedDropdownItem searchedItem = element; //TODO fix selecting // while (tempParent != null) // { // state.SetSelectedIndex(tempParent, tempParent.children.IndexOf(searchedItem)); // searchedItem = tempParent; // tempParent = tempParent.parent; // } } continue; } string groupPathId = paths[0]; for (int k = 1; k <= j; k++) { groupPathId += "/" + paths[k]; } AdvancedDropdownItem group = parent.Children.SingleOrDefault(c => ((MultiLevelItem)c).stringId == groupPathId); if (group == null) { group = new MultiLevelItem(path, groupPathId); parent.AddChild(group); } parent = group; } } return(rootGroup); }
protected override AdvancedDropdownItem FetchData() { var rootGroup = new AdvancedDropdownItem(m_Label); m_SearchableElements = new List <AdvancedDropdownItem>(); for (int i = 0; i < m_DisplayedOptions.Length; i++) { var menuPath = m_DisplayedOptions[i]; var paths = menuPath.Split('/'); AdvancedDropdownItem parent = rootGroup; for (var j = 0; j < paths.Length; j++) { var path = paths[j]; if (j == paths.Length - 1) { var element = new MultiLevelItem(path, menuPath); element.elementIndex = i; parent.AddChild(element); m_SearchableElements.Add(element); continue; } var groupPathId = paths[0]; for (int k = 1; k <= j; k++) { groupPathId += "/" + paths[k]; } var group = parent.children.SingleOrDefault(c => ((MultiLevelItem)c).stringId == groupPathId); if (group == null) { group = new MultiLevelItem(path, groupPathId); parent.AddChild(group); } parent = group; } } return(rootGroup); }