public async Task Lookup(T value, ITreeSelector <VM, T> parentSelector, ICompareHierarchy <T> comparer, params ITreeLookupProcessor <VM, T>[] processors) { if (parentSelector.EntryHelper.IsLoaded) { foreach (VM current in parentSelector.EntryHelper.AllNonBindable) { if (current is ISupportTreeSelector <VM, T> && current is ISupportEntriesHelper <VM> ) { var currentSelectionHelper = (current as ISupportTreeSelector <VM, T>).Selection; var compareResult = comparer.CompareHierarchy(currentSelectionHelper.Value, value); switch (compareResult) { case HierarchicalResult.Child: case HierarchicalResult.Current: if (_hierarchy.Contains(currentSelectionHelper)) { processors.Process(compareResult, parentSelector, currentSelectionHelper); return; } break; } } } } }
public async Task Lookup(T value, ITreeSelector <VM, T> parentSelector, ICompareHierarchy <T> comparer, params ITreeLookupProcessor <VM, T>[] processors) { IEnumerable <VM> subentries = _loadSubEntries ? await parentSelector.EntryHelper.LoadAsync() : parentSelector.EntryHelper.AllNonBindable; if (subentries != null) { foreach (VM current in subentries) { if (current is ISupportTreeSelector <VM, T> && current is ISupportEntriesHelper <VM> ) { var currentSelectionHelper = (current as ISupportTreeSelector <VM, T>).Selection; var compareResult = comparer.CompareHierarchy(currentSelectionHelper.Value, value); switch (compareResult) { case HierarchicalResult.Current: processors.Process(compareResult, parentSelector, currentSelectionHelper); return; case HierarchicalResult.Child: if (processors.Process(compareResult, parentSelector, currentSelectionHelper)) { await Lookup(value, currentSelectionHelper, comparer, processors); return; } break; } } } } }
public async Task Lookup(T value, ITreeSelector <VM, T> parentSelector, ICompareHierarchy <T> comparer, params ITreeLookupProcessor <VM, T>[] processors) { foreach (VM current in await parentSelector.EntryHelper.LoadAsync()) { if (current is ISupportTreeSelector <VM, T> ) { var currentSelectionHelper = (current as ISupportTreeSelector <VM, T>).Selection; var compareResult = comparer.CompareHierarchy(currentSelectionHelper.Value, value); processors.Process(compareResult, parentSelector, currentSelectionHelper); } } }
public async Task Lookup(T value, ITreeSelector <TVm, T> parentSelector, ICompareHierarchy <T> comparer, params ITreeLookupProcessor <TVm, T>[] processors) { foreach (var current in await parentSelector.EntryHelper.LoadAsync()) { if (current is ISupportTreeSelector <TVm, T> selector) { var currentSelectionHelper = selector.Selection; var compareResult = comparer.CompareHierarchy(currentSelectionHelper.Value, value); switch (compareResult) { case HierarchicalResult.Current: case HierarchicalResult.Child: processors.Process(compareResult, parentSelector, currentSelectionHelper); return; } } } }
public async Task Lookup(T value, ITreeSelector <TVm, T> parentSelector, ICompareHierarchy <T> comparer, params ITreeLookupProcessor <TVm, T>[] processors) { var subentries = _loadSubEntries ? await parentSelector.EntryHelper.LoadAsync() : parentSelector.EntryHelper.AllNonBindable; foreach (var current in subentries) { if (current is ISupportTreeSelector <TVm, T> selector) { var currentSelectionHelper = selector.Selection; var compareResult = comparer.CompareHierarchy(currentSelectionHelper.Value, value); if (processors.Process(compareResult, parentSelector, currentSelectionHelper)) { await Lookup(value, currentSelectionHelper, comparer, processors); } break; } } }