Пример #1
0
        // align node to top element and create constant space between nodes
        public void AlignCompact(Nodes nodes)
        {
            if (nodes.Count() > 0)
            {
                int minx = nodes[0].position.x;
                int miny = nodes[0].position.y;
                foreach (Node rec in nodes)
                {
                    if (rec.position.y <= miny) // find most top element
                    {
                        miny = rec.position.y;
                        minx = rec.position.x;
                    }
                }

                foreach (Node rec in nodes) // align to left
                {
                    rec.position.x = minx;
                }

                // sort elements by y coordinate
                nodes.OrderByPositionY();

                int posy = miny;
                foreach (Node rec in nodes) // change space between nodes
                {
                    rec.position.y = posy;
                    posy = posy + rec.height + 10;
                }
            }
        }
Пример #2
0
        // align node to top element and create constant space between nodes and sort items
        public void sortNodes(Nodes nodes)
        {
            if (nodes.Count() > 0)
            {
                int minx = nodes[0].position.x;
                int miny = nodes[0].position.y;
                foreach (Node rec in nodes)
                {
                    if (rec.position.y <= miny) // find most top element
                    {
                        minx = rec.position.x;
                        miny = rec.position.y;
                    }
                }

                foreach (Node rec in nodes) // align to left
                {
                    rec.position.x = minx;
                }

                nodes.OrderByPositionY();

                // check if nodes are ordered by name already
                bool alreadyAsc = true;
                for (int i = 0; i < nodes.Count - 1; i++)
                {
                    if (String.Compare(nodes[i + 1].name, nodes[i].name) < 0)
                    {
                        alreadyAsc = false;
                        break;
                    }
                }

                if (alreadyAsc)
                {
                    nodes.OrderByNameDesc();
                }
                else
                {
                    nodes.OrderByNameAsc();
                }

                int posy = miny;
                foreach (Node rec in nodes) // change space between nodes
                {
                    rec.position.y = posy;
                    posy = posy + rec.height + 10;
                }
            }
        }