void PopulateTree(string searchTerm = null) { RecipeList.Clear(); var categoryItems = new Tree.Item[FlattenedCategories.Count]; categoryItems[RootCategory.FlattenedIndex] = RecipeList.CreateItem(); // Yay more recursion. Tree.Item ItemForNode(CategoryNode node) { if (categoryItems[node.FlattenedIndex] != null) { return(categoryItems[node.FlattenedIndex]); } var item = RecipeList.CreateItem(ItemForNode(node.Parent)); item.SetText(0, node.Name); item.SetSelectable(0, false); categoryItems[node.FlattenedIndex] = item; return(item); } foreach (var node in FlattenedCategories) { foreach (var prototype in node.Prototypes) { if (searchTerm != null) { var found = false; // TODO: don't run ToLowerInvariant() constantly. if (prototype.Name.ToLowerInvariant().IndexOf(searchTerm) != -1) { found = true; } else { foreach (var keyw in prototype.Keywords.Concat(prototype.CategorySegments)) { // TODO: don't run ToLowerInvariant() constantly. if (keyw.ToLowerInvariant().IndexOf(searchTerm) != -1) { found = true; break; } } } if (!found) { continue; } } var subItem = RecipeList.CreateItem(ItemForNode(node)); subItem.SetText(0, prototype.Name); subItem.Metadata = prototype; } } }
private void TestTree_OnSelectedItemChanged(Tree tree, Tree.Item item) { }