Beispiel #1
0
        protected CollapsibleElement GetElementToCollapse(out int possibleCollapseStep)
        {
            possibleCollapseStep = -1;

            IList <CollapsibleElement> children = this.CollapsibleChildren;
            int count = children.Count;

            if (count == 0)
            {
                return(null);
            }

            int nextCollapseStep = children[count - 1].CollapseStep + 1;

            for (int i = 0; i < children.Count; ++i)
            {
                nextCollapseStep = Math.Min(children[i].CollapseStep, nextCollapseStep);
            }

            nextCollapseStep++;

            int maxCollapseStep = children[0].CollapseMaxSteps;

            for (; nextCollapseStep < maxCollapseStep; ++nextCollapseStep)
            {
                for (int collapsibleIndex = count - 1; collapsibleIndex >= 0; --collapsibleIndex)
                {
                    CollapsibleElement collapsibleElement = children[collapsibleIndex];

                    if (collapsibleElement.CanCollapseToStep(nextCollapseStep))
                    {
                        possibleCollapseStep = nextCollapseStep;
                        return(collapsibleElement);
                    }
                }
            }

            for (int collapsibleIndex = count - 1; collapsibleIndex >= 0; --collapsibleIndex)
            {
                CollapsibleElement collapsibleElement = children[collapsibleIndex];
                if (collapsibleElement.CanCollapseToStep(collapsibleElement.CollapseMaxSteps))
                {
                    possibleCollapseStep = collapsibleElement.CollapseMaxSteps;
                    return(collapsibleElement);
                }
            }

            return(null);
        }
        protected CollapsibleElement GetElementToCollapse(out int possibleCollapseStep)
        {
            possibleCollapseStep = -1;
            IList <CollapsibleElement> collapsibleChildren = (IList <CollapsibleElement>) this.CollapsibleChildren;
            int count = collapsibleChildren.Count;

            if (count == 0)
            {
                return((CollapsibleElement)null);
            }
            int val2 = collapsibleChildren[count - 1].CollapseStep + 1;

            for (int index = 0; index < collapsibleChildren.Count; ++index)
            {
                val2 = Math.Min(collapsibleChildren[index].CollapseStep, val2);
            }
            int nextStep = val2 + 1;

            for (int collapseMaxSteps = collapsibleChildren[0].CollapseMaxSteps; nextStep < collapseMaxSteps; ++nextStep)
            {
                for (int index = count - 1; index >= 0; --index)
                {
                    CollapsibleElement collapsibleElement = collapsibleChildren[index];
                    if (collapsibleElement.CanCollapseToStep(nextStep))
                    {
                        possibleCollapseStep = nextStep;
                        return(collapsibleElement);
                    }
                }
            }
            for (int index = count - 1; index >= 0; --index)
            {
                CollapsibleElement collapsibleElement = collapsibleChildren[index];
                if (collapsibleElement.CanCollapseToStep(collapsibleElement.CollapseMaxSteps))
                {
                    possibleCollapseStep = collapsibleElement.CollapseMaxSteps;
                    return(collapsibleElement);
                }
            }
            return((CollapsibleElement)null);
        }