Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
 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));
     }
 }
Exemplo n.º 3
0
        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();
            }
        }
Exemplo n.º 5
0
        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");
            }
        }
Exemplo n.º 6
0
 public void ChangeParent(IExtendedTreeNode newParent)
 {
     Parent = newParent;
 }
Exemplo n.º 7
0
 bool ICollection <IExtendedTreeNode> .Remove(IExtendedTreeNode item)
 {
     return(Remove((CloneableTestNode)item));
 }
Exemplo n.º 8
0
 bool ICollection <IExtendedTreeNode> .Contains(IExtendedTreeNode item)
 {
     return(Contains((CloneableTestNode)item));
 }
Exemplo n.º 9
0
 void ICollection <IExtendedTreeNode> .Add(IExtendedTreeNode item)
 {
     Add((CloneableTestNode)item);
 }
Exemplo n.º 10
0
 void IList <IExtendedTreeNode> .Insert(int index, IExtendedTreeNode item)
 {
     Insert(index, (CloneableTestNode)item);
 }
Exemplo n.º 11
0
 int IList <IExtendedTreeNode> .IndexOf(IExtendedTreeNode item)
 {
     return(IndexOf((CloneableTestNode)item));
 }