Esempio n. 1
0
        public ICollection <TItem> Hide(IEnumerable <TItem> elements)
        {
            var worker = new WalkerWorker <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.Changes);
        }
Esempio n. 2
0
        public virtual ICollection <TItem> CollapseToFocused(IEnumerable <TItem> elements)
        {
            var worker = new WalkerWorker <TItem, TEdge> (this.Sink);

            NeverRemove(worker, elements);

            foreach (TItem item in Sink)
            {
                worker.RemoveCollapsed(item, Sink);
                worker.Remove(item);
            }

            CommitRemove(worker);

            return(worker.Changes);
        }
Esempio n. 3
0
        protected virtual void RevoveEdgesOfChanged(WalkerWorker <TItem, TEdge> worker)
        {
            var changeStack = new Stack <TItem> (worker.Changes);

            while (changeStack.Count != 0)
            {
                TItem item = changeStack.Pop();
                if (item is TEdge)
                {
                    TEdge edge = (TEdge)item;
                    if (worker.Changes.Contains(edge.Root) || worker.Changes.Contains(edge.Leaf))
                    {
                        worker.Remove(edge);
                    }
                }
            }
        }