private void onSourceChanged(LazyDirectoryTree oldSource) { if (oldSource != null) { oldSource.ComparerChanged -= Source_ComparerChanged; foreach (var tree in oldSource.EnumerateDescendantsAndSelf(true).Cast <LazyDirectoryTree>()) { tree.ChildTreeAttached -= Source_ChildTreeAttached; tree.ChildTreeDetached -= Source_ChildTreeDetached; tree.IsSelectedChanged -= Tree_IsSelectedChanged; } } if (this.Source == null) { this.DestRoot = null; } else { this.DestRoot = cloneSource(this.Source); Source.ComparerChanged += Source_ComparerChanged; foreach (var tree in this.Source.EnumerateDescendantsAndSelf(true).Cast <LazyDirectoryTree>()) { tree.ChildTreeAttached += Source_ChildTreeAttached; tree.ChildTreeDetached += Source_ChildTreeDetached; tree.IsSelectedChanged += Tree_IsSelectedChanged; } } }
private static IEnumerable <LazyDirectoryTree> childFactory_Run( LazyObservableTree <DirectoryInfo> parent) { if (parent.Value == null) { throw new NullReferenceException("Error: Directory cannot be null"); } try { var dirs = parent.Value.EnumerateDirectories("*", SearchOption.TopDirectoryOnly).ToArray(); var children = dirs.Select(dir => { var ty = new LazyDirectoryTree(dir); return(ty); }).ToArray(); return(children); } catch (Exception) { var dirTree = parent as LazyDirectoryTree; if (dirTree != null) { dirTree.AccessAuthorised = false; } return(new LazyDirectoryTree[0]); } }
private void Source_IsSelectedChanged(LazyDirectoryTree sender, bool?oldVal) { Logger.WriteLine($"{nameof(Source_IsSelectedChanged)}: Sender= {sender.Value.FullName} old= {oldVal.ToString()} this= {this.Value.FullName}"); if (sender.IsSelected == false) { this.Prune(); } }
private void DirList_ItemAdded(ICollection <DirectoryInfo> sender, DirectoryInfo newItem, int index) { var newLazyDirectoryTree = new LazyDirectoryTree(newItem); var newLinkedTree = new LinkedLayTree(newLazyDirectoryTree); this.LinkedRootList.Add(newLinkedTree); this.SourceRootList.Add(newLazyDirectoryTree); }
public override ObservableSortedTree <DirectoryInfo> ShallowClone() { var clone = new LazyDirectoryTree(this.Value) { IsSelected = this.IsSelected, IsExpanded = this.IsExpanded }; return(clone); }
private void Tree_IsSelectedChanged(LazyDirectoryTree sender, bool?oldVal) { if (oldVal == false && sender.IsSelected != false) { FindOrAddDirectoryToDest(sender.Value); } else if (oldVal != false && sender.IsSelected == false) { RemoveDirectoryFromDest(sender.Value); } }
private void onSourceChanged(LazyDirectoryTree oldSource) { if (oldSource != null) { oldSource.ComparerChanged -= Source_ComparerChanged; } if (this.Source != null) { Source.ComparerChanged += Source_ComparerChanged; } }
public LinkedLayTree(LazyDirectoryTree source) : base(source.Value, slaveChilFunc) { Logger.WriteLine($"new {typeof(LinkedLayTree).Name}; {source.Value.FullName}"); this.Source = source; //this.SelectedFiles=new ObservableCollection<FileInfo>(); this.CommandTest = new DelegateCommand(obj => { }); //new DelegateCommand this.SelectedFilesChanged += LinkedLayTree_SelectedFilesChanged; this.SelectedFilesChangedCommand = new DelegateCommand((obj) => { return; }); }
protected virtual void onSourceChanged(LazyDirectoryTree oldSource) { var oldSourceString = "null"; if (oldSource != null) { oldSourceString = oldSource.ToString(); } Logger.WriteLine($"{nameof(onSourceChanged)}: old= {oldSourceString} this= {this.Value.FullName}"); RemoveSourceEvents(oldSource); AddSourceEvents(this.Source); }
private ObservableSortedTree <DirectoryInfo> cloneSource(LazyDirectoryTree cloneTree) { var root = new ObservableSortedTree <DirectoryInfo>(cloneTree.Value); if (!cloneTree.AreChildrenGenerated) { return(root); } var newChildren = cloneTree.Children .Cast <LazyDirectoryTree>() .Select(child => cloneSource(child)); root.Children.AddRange(newChildren); return(root); }
private void RemoveSourceEvents(LazyDirectoryTree source) { if (source == null) { return; } source.ComparerChanged -= Source_ComparerChanged; source.ChildTreeAttached -= Source_ChildTreeAttached; source.ChildTreeDetached -= Source_ChildTreeDetached; source.IsSelectedChanged -= Source_IsSelectedChanged; if (this.AreChildrenGenerated) { foreach (var child in this.Children.Cast <LazyDirectoryTree>()) { child.IsSelectedChanged -= SourceChild_IsSelectedChanged; } } }
private void SourceChild_IsSelectedChanged(LazyDirectoryTree sender, bool?oldVal) { Logger.WriteLine($"{nameof(SourceChild_IsSelectedChanged)}: Sender= {sender.Value.FullName} old= {oldVal.ToString()} this= {this.Value.FullName}"); if (sender.IsSelected == true) { if (oldVal == null) { return; } else if (oldVal == false) { if (this.AreChildrenGenerated) { this.Children.Add(new LinkedLayTree(sender)); } } } else if (sender.IsSelected == null) { if (oldVal == true) { return; } else if (oldVal == false) { if (this.AreChildrenGenerated) { this.Children.Add(new LinkedLayTree(sender)); } } } /*if (oldVal == false && sender.IsSelected != false) * { * FindOrAddDirectoryToDest(sender.Value); * } * else if (oldVal != false && sender.IsSelected == false) * { * RemoveDirectoryFromDest(sender.Value); * }*/ }
public LinkedDirectoryTree2(LazyDirectoryTree sourceTree) { this.Source = sourceTree; }
public CategoryDirectoryInfo(LazyDirectoryTree sourceRoot) { this.LinkedRoot = new LinkedLayTree(sourceRoot); }
protected virtual void OnChildIsSelectedChanged(LazyDirectoryTree sender, bool?oldVal) { if (suppress_Child_IsSelected_Changed) { return; } suppress_IsSelected_Changed = true; bool areAllChildrenSelected = Children.Cast <LazyDirectoryTree>() .All(child => child.IsSelected == true || child.UnauthorisedAccess); bool areAnyChildrenSelected = Children.Cast <LazyDirectoryTree>() .Any(child => child.IsSelected != false); if (areAllChildrenSelected) { IsSelected = true; } else if (!areAnyChildrenSelected) { IsSelected = false; } else { IsSelected = null; } suppress_IsSelected_Changed = false; /*if (suppress_Child_IsSelected_Changed) * return; * suppress_IsSelected_Changed = true; * bool all = true; * bool any = false; * int count = Children.Count; * for (int i = 0; i < count; i++) * { * var child = Children[i] as LazyDirectoryTree; * if (child == null) * continue; * if (child.IsSelected == false && child.AccessAuthorised) * all = false; * if (child.IsSelected != false) * any = true; * if (any & !all) * break; * } * if (all) * { * IsSelected = true; * } * else if (!any) * { * IsSelected = false; * } * else * { * IsSelected = null; * } * suppress_IsSelected_Changed = false; * return;*/ /*if (suppress_Child_IsSelected_Changed) * return; * suppress_IsSelected_Changed = true; * if (sender.IsSelected == true) * { * bool areAllChildrenSelected = Children.Cast<LazyDirectoryTree>() * .All(child => child.IsSelected == true || child.UnauthorisedAccess); * if (areAllChildrenSelected) * IsSelected = true; * else * IsSelected = null; * } * else if (sender.IsSelected == null) * { * * } * else if (sender.IsSelected == false || sender.IsSelected == null) * { * bool areAnyChildrenSelected = Children.Cast<LazyDirectoryTree>() * .Any(child => child.IsSelected != false); * if (areAnyChildrenSelected) * IsSelected = null; * else * IsSelected = false; * } * suppress_IsSelected_Changed = false;*/ }