public ICollection <TItem> Hide(IEnumerable <TItem> elements) { var worker = new WalkerWorker1 <TItem, TEdge> (this.Sink); foreach (var item in elements) { worker.Remove(item); foreach (var edge in this.Sink.Twig(item)) { worker.Remove(edge); } } RevoveEdgesOfChanged(worker); CommitRemove(worker); //List<TItem> changes = new List<TItem>(WalkerWorker.Changes); //WalkerWorker.Changes.Clear(); //WalkerWorker.RemoveOrphans(this.View); //CommitRemove(WalkerWorker); //changes.AddRange(WalkerWorker.Changes); //WalkerWorker.Changes.Clear(); return(worker.Affected); }
protected virtual void RevoveEdgesOfChanged(WalkerWorker1 <TItem, TEdge> worker) { foreach (var edge in worker.Affected.OfType <TEdge>().ToArray()) { if (worker.Changed(edge.Root) || worker.Changed(edge.Leaf)) { worker.Remove(edge); } } }
public virtual ICollection <TItem> CollapseToFocused(IEnumerable <TItem> elements) { var worker = new WalkerWorker1 <TItem, TEdge> (this.Sink); NeverRemove(worker, elements); foreach (TItem item in Sink) { worker.RemoveCollapsed(item, Sink); worker.Remove(item); } CommitRemove(worker); return(worker.Affected); }