コード例 #1
0
ファイル: ITreeLookup.cs プロジェクト: francisrc/FileExplorer
 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;
                 }
             }
         }
     }
 }
コード例 #2
0
ファイル: ITreeLookup.cs プロジェクト: francisrc/FileExplorer
        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;
                        }
                    }
                }
            }
        }
コード例 #3
0
ファイル: ITreeLookup.cs プロジェクト: francisrc/FileExplorer
 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);
         }
     }
 }
コード例 #4
0
 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;
             }
         }
     }
 }
コード例 #5
0
        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;
                }
            }
        }