Пример #1
0
        private int TailID(NodeEntity arg)
        {
            int ret   = arg.GetNodeID();
            int count = arg.GetChildren().Count;

            if (count > 0)
            {
                ret = TailID(arg.GetChildren()[count - 1]);
            }
            return(ret);
        }
Пример #2
0
 private NodeEntity FindTail(NodeEntity node, int depth)
 {
     if (depth == 1)
     {
         return(node);
     }
     else
     {
         depth--;
         int count = node.GetChildren().Count;
         return(FindTail(node.GetChildren()[count - 1], depth));
     }
 }
Пример #3
0
        public NodeEntity FindTail(int depth)
        {
            NodeEntity ret = this;

            if (depth == 1)
            {
                return(ret);
            }
            depth--;
            int count = ret.GetChildren().Count;

            return(FindTail(ret.GetChildren()[count - 1], depth));
        }
Пример #4
0
        public void RemoveByID(int arg)
        {
            NodeEntity p = FindByID(arg).GetParent();

            if (p == null)
            {
                return;
            }
            for (int i = 0; i < p.GetChildren().Count; i++)
            {
                if (p.GetChildren()[i].GetNodeID() == arg)
                {
                    p.GetChildren().RemoveAt(i);
                    Refresh();
                    return;
                }
            }
        }
Пример #5
0
        public void MoveByID(int moveFrom, int moveTo)
        {
            if (moveFrom == moveTo)
            {
                return;
            }
            NodeEntity nf = FindByID(moveFrom);

            if (nf == null)
            {
                return;
            }
            NodeEntity pf = nf.GetParent();

            if (pf == null)
            {
                return;
            }
            NodeEntity pt = FindByID(moveTo).GetParent();

            if (pt == null)
            {
                return;
            }
            nf = nf.Clone();
            for (int j = 0; j < pf.GetChildren().Count; j++)
            {
                if (pf.GetChildren()[j].GetNodeID() == moveFrom)
                {
                    pf.GetChildren().RemoveAt(j);
                    break;
                }
            }
            for (int i = 0; i < pt.GetChildren().Count; i++)
            {
                if (pt.GetChildren()[i].GetNodeID() == moveTo)
                {
                    pt.GetChildren().Insert(i, nf);
                    break;
                }
            }
            Refresh();
        }
Пример #6
0
        public void MoveUpByID(int arg)
        {
            NodeEntity p = FindByID(arg).GetParent();

            if (p == null)
            {
                return;
            }
            for (int i = 0; i < p.GetChildren().Count; i++)
            {
                if (p.GetChildren()[i].GetNodeID() == arg)
                {
                    if (i > 0)
                    {
                        NodeEntity n = p.GetChildren()[i].Clone();
                        p.GetChildren().RemoveAt(i);
                        p.GetChildren().Insert(i - 1, n);
                        Refresh();
                        return;
                    }
                }
            }
        }
Пример #7
0
        private int TailDepth(NodeEntity arg)
        {
            int ret = arg.GetDepth();

            foreach (NodeEntity c in arg.GetChildren())
            {
                int cd = TailDepth(c);
                if (ret < cd)
                {
                    ret = cd;
                }
            }
            return(ret);
        }
Пример #8
0
 private void Refresh(NodeEntity node)
 {
     newDepth++;
     foreach (NodeEntity c in node.GetChildren())
     {
         c.SetDepth(newDepth);
         newNodeId++;
         c.SetNodeID(newNodeId);
         if (c.GetChildren().Count > 0)
         {
             Refresh(c);
             newDepth--;
         }
     }
 }
Пример #9
0
 private NodeEntity FindByID(NodeEntity node, int id)
 {
     foreach (NodeEntity c in node.GetChildren())
     {
         if (c.GetNodeID() == id)
         {
             return(c);
         }
         NodeEntity ret = FindByID(c, id);
         if (ret != null)
         {
             return(ret);
         }
     }
     return(null);
 }
Пример #10
0
        private bool IDExists(NodeEntity node, int id)
        {
            bool ret = false;

            foreach (NodeEntity c in node.GetChildren())
            {
                if (c.GetNodeID() == id)
                {
                    ret = true;
                }
                ret = IDExists(c, id);
                if (ret == true)
                {
                    return(true);
                }
            }
            return(ret);
        }