protected virtual void OnDropCheck(object sender, RoutedEventArgs e) { DropCheckEventArgs Args = (DropCheckEventArgs)e; IExtendedTreeNode DropDestinationItem = Args.DropDestinationItem as IExtendedTreeNode; if (DropDestinationItem != null && DropDestinationItem.Children.Count == 0 && TreeViewSettingsWindow.AreLeavesSealed) { Args.Deny(); } }
protected virtual IExtendedTreeNode CreateNode(bool isCloneable, IExtendedTreeNode parent, int generated) { if (isCloneable) { return(new CloneableTestNode((CloneableTestNode)parent, generated)); } else { return(new TestNode((TestNode)parent, generated)); } }
protected virtual IExtendedTreeNode GenerateRoot(bool isCloneable) { int ItemCount = TreeViewSettingsWindow.ItemCount; int AverageChildrenCount = TreeViewSettingsWindow.AverageChildrenCount; Random RNG = new Random(0); Collection <IExtendedTreeNode> ParentChain = new Collection <IExtendedTreeNode>(); IExtendedTreeNode Root = CreateRootNode(isCloneable); ParentChain.Add(Root); Dispatcher.BeginInvoke(DispatcherPriority.ContextIdle, new GenerateNextHandler(GenerateNext), isCloneable, ItemCount, AverageChildrenCount, RNG, Root, 1, ParentChain, 0, null, 0, 0); return(Root); }
protected virtual void OnDropCheck(object sender, RoutedEventArgs e) { if (e == null) { throw new ArgumentNullException(nameof(e)); } DropCheckEventArgs Args = (DropCheckEventArgs)e; IExtendedTreeNode DropDestinationItem = (IExtendedTreeNode)Args.DropDestinationItem; if (DropDestinationItem != null && ((ICollection <IExtendedTreeNode>)DropDestinationItem.Children).Count == 0 && TreeViewSettingsWindow.AreLeavesSealed) { Args.Deny(); } }
protected virtual void GenerateNext(bool isCloneable, int itemCount, int averageChildrenCount, Random randomNumberGenerator, IExtendedTreeNode root, int generated, Collection <IExtendedTreeNode> parentChain, int parentIndex, IExtendedTreeNode parentTreeNode, int childIndex, int childrenCount) { if (randomNumberGenerator == null || parentChain == null) { return; } int ThisPassCount = 0; int MaxPassCount = TreeViewSettingsWindow.IsItemExpandedAtStart ? 100 : 1000; while (generated < itemCount && ThisPassCount++ < MaxPassCount) { if (childIndex >= childrenCount) { parentIndex = randomNumberGenerator.Next(parentChain.Count); parentTreeNode = parentChain[parentIndex]; childIndex = 0; childrenCount = randomNumberGenerator.Next(averageChildrenCount) + 1; } IExtendedTreeNode NewItem = CreateNode(isCloneable, parentTreeNode, generated); parentTreeNode.Children.Add(NewItem); if (childIndex == 0) { parentChain[parentIndex] = NewItem; } else { parentChain.Add(NewItem); } generated++; childIndex++; } UpdateProgress(generated, itemCount); if (IsGenerating && generated < itemCount) { Dispatcher.BeginInvoke(DispatcherPriority.ContextIdle, new GenerateNextHandler(GenerateNext), isCloneable, itemCount, averageChildrenCount, randomNumberGenerator, root, generated, parentChain, parentIndex, parentTreeNode, childIndex, childrenCount); } else { IsGenerating = false; NotifyPropertyChanged("IsGenerating"); } }
public void ChangeParent(IExtendedTreeNode newParent) { Parent = newParent; }
bool ICollection <IExtendedTreeNode> .Remove(IExtendedTreeNode item) { return(Remove((CloneableTestNode)item)); }
bool ICollection <IExtendedTreeNode> .Contains(IExtendedTreeNode item) { return(Contains((CloneableTestNode)item)); }
void ICollection <IExtendedTreeNode> .Add(IExtendedTreeNode item) { Add((CloneableTestNode)item); }
void IList <IExtendedTreeNode> .Insert(int index, IExtendedTreeNode item) { Insert(index, (CloneableTestNode)item); }
int IList <IExtendedTreeNode> .IndexOf(IExtendedTreeNode item) { return(IndexOf((CloneableTestNode)item)); }