public BranchContext(LayoutStructureBranch parent, bool isSecond) { if (parent == null) { throw new ArgumentNullException(nameof(parent)); } Parent = parent; IsSecond = isSecond; }
private static void VisitAndDocumentChildren(BranchAccessor branchAccessor, BranchContext context, ICollection <LayoutStructureBranch> branches, ICollection <LayoutStructureTabSet> layoutStructureTabSets) { //figure out the current ID: if there is no context, this is //root, otherwise, the parent will have assigned the id Guid id; if (context == null) { id = Guid.NewGuid(); } else { id = context.IsSecond ? context.Parent.ChildSecondBranchId.Value : context.Parent.ChildFirstBranchId.Value; } //document the current branch var layoutStructureBranch = new LayoutStructureBranch( id, IdOrNull(branchAccessor.FirstItemBranchAccessor), IdOrNull(branchAccessor.SecondItemBranchAccessor), IdOrNull(branchAccessor.FirstItemTabablzControl), IdOrNull(branchAccessor.SecondItemTabablzControl), branchAccessor.Branch.Orientation, branchAccessor.Branch.GetFirstProportion()); branches.Add(layoutStructureBranch); //run throw the child branches or tab controls if (branchAccessor.FirstItemBranchAccessor != null) { VisitAndDocumentChildren(branchAccessor.FirstItemBranchAccessor, new BranchContext(layoutStructureBranch, false), branches, layoutStructureTabSets); } else { DocumentTabSet(layoutStructureBranch.ChildFirstTabSetId.Value, branchAccessor.FirstItemTabablzControl, layoutStructureTabSets); } if (branchAccessor.SecondItemBranchAccessor != null) { VisitAndDocumentChildren(branchAccessor.SecondItemBranchAccessor, new BranchContext(layoutStructureBranch, true), branches, layoutStructureTabSets); } else { DocumentTabSet(layoutStructureBranch.ChildSecondTabSetId.Value, branchAccessor.SecondItemTabablzControl, layoutStructureTabSets); } }
private static JObject ToJson(LayoutStructureBranch branch) { if (branch == null) { throw new ArgumentNullException(nameof(branch)); } dynamic b = new JObject(); b.id = branch.Id; b.childFirstTabSetId = branch.ChildFirstTabSetId; b.childSecondTabSetId = branch.ChildSecondTabSetId; b.childFirstBranchId = branch.ChildFirstBranchId; b.childSecondBranchId = branch.ChildSecondBranchId; b.orientaion = branch.Orientation; b.ratio = branch.Ratio; return(b); }