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); }