/// <summary> /// Intitializes the arranger for children of the region. /// </summary> private void InitializeChildrenArranger() { if (_childrenArranger == null) { _childrenArranger = ElementArrangerFactory.CreateChildrenArranger(_regionConfiguration); } }
/// <summary> /// Arranges the element in within the code tree represented in the specified /// builder. /// </summary> /// <param name="parentElement">The parent element.</param> /// <param name="codeElement">The code element.</param> public virtual void ArrangeElement(ICodeElement parentElement, ICodeElement codeElement) { if (codeElement.Children.Count > 0) { if (_childrenArranger == null) { _childrenArranger = ElementArrangerFactory.CreateChildrenArranger(_elementConfiguration); } if (_childrenArranger != null) { List <ICodeElement> children = new List <ICodeElement>(codeElement.Children); codeElement.ClearChildren(); foreach (ICodeElement childElement in children) { ArrangeChildElement(codeElement, childElement); } // // For condition directives, arrange the children of each node in the list. // ConditionDirectiveElement conditionDirective = codeElement as ConditionDirectiveElement; if (conditionDirective != null) { // // Skip the first instance since we've already arranged those child elements. // conditionDirective = conditionDirective.ElseCondition; } while (conditionDirective != null) { children = new List <ICodeElement>(conditionDirective.Children); conditionDirective.ClearChildren(); foreach (ICodeElement childElement in children) { ArrangeChildElement(conditionDirective, childElement); } conditionDirective = conditionDirective.ElseCondition; } } } if (_inserter == null) { _inserter = CreateElementInserter( _elementConfiguration.ElementType, _elementConfiguration.SortBy, _elementConfiguration.GroupBy, _parentConfiguration); } // For Type elements, if interdependent static fields are present, correct their // ordering. TypeElement typeElement = codeElement as TypeElement; if (typeElement != null && (typeElement.Type == TypeElementType.Class || typeElement.Type == TypeElementType.Structure || typeElement.Type == TypeElementType.Module)) { CorrectStaticFieldDependencies(typeElement); } _inserter.InsertElement(parentElement, codeElement); }