private static void findDescendant <T>(GuiComponentCollection Components, Func <T, bool> Property) where T : class { for (int i = 0; i < Components.Count; i++) { if (item != null) { return; } var component = Components.ElementAt(i); var tComponent = component as T; if (tComponent != null && Property(tComponent)) { item = tComponent; } else if (component is GuiContainer) { findDescendant <T>(((GuiContainer)component).Children, Property); } else if (component is GuiVContainer) { findDescendant <T>(((GuiVContainer)component).Children, Property); } } }
private static T findDescendantByPropertyTemplate <T>(GuiComponentCollection Components, Func <T, bool> Property) where T : class { lock (_lockObj) { item = null; findDescendant <T>(Components, Property); return(item as T); } }
private static IEnumerable <T> findDescendantsByPropertyTemplate <T>(GuiComponentCollection Components, Func <T, bool> Property) where T : class { List <T> itemList = new List <T>(); if (Property == null) { Property = new Func <T, bool>(t => true); } findDescendants <T>(Components, itemList, Property); return(itemList); }
private static IEnumerable <T> findChildrenByPropertyTemplate <T>(GuiComponentCollection Components, Func <T, bool> Property) where T : class { if (Property == null) { Property = new Func <T, bool>(t => true); } for (int i = 0; i < Components.Count; i++) { var component = Components.ElementAt(i) as T; if (component != null && Property(component)) { yield return(component); } } }
private static void findDescendants <T>(GuiComponentCollection Components, List <T> ItemList, Func <T, bool> Property) where T : class { for (int i = 0; i < Components.Count; i++) { var component = Components.ElementAt(i); var tComponent = component as T; if (tComponent != null && Property(tComponent)) { ItemList.Add(tComponent); } else if (component is GuiContainer) { findDescendants <T>(((GuiContainer)component).Children, ItemList, Property); } else if (component is GuiVContainer) { findDescendants <T>(((GuiVContainer)component).Children, ItemList, Property); } } }