private static void BranchVisitor(LocationReportBuilder locationReportBuilder, BranchAccessor branchAccessor) { if (Equals(branchAccessor.FirstItemTabablzControl, locationReportBuilder.TargetTabablzControl)) locationReportBuilder.MarkFound(branchAccessor.Branch, false); else if (Equals(branchAccessor.SecondItemTabablzControl, locationReportBuilder.TargetTabablzControl)) locationReportBuilder.MarkFound(branchAccessor.Branch, true); else { branchAccessor.Visit(BranchItem.First, ba => BranchVisitor(locationReportBuilder, ba)); if (locationReportBuilder.IsFound) return; branchAccessor.Visit(BranchItem.Second, ba => BranchVisitor(locationReportBuilder, ba)); } }
private static void BranchVisitor(LocationReportBuilder locationReportBuilder, BranchAccessor branchAccessor) { if (Equals(branchAccessor.FirstItemTabablzControl, locationReportBuilder.TargetTabablzControl)) { locationReportBuilder.MarkFound(branchAccessor.Branch, false); } else if (Equals(branchAccessor.SecondItemTabablzControl, locationReportBuilder.TargetTabablzControl)) { locationReportBuilder.MarkFound(branchAccessor.Branch, true); } else { branchAccessor.Visit(BranchItem.First, ba => BranchVisitor(locationReportBuilder, ba)); if (locationReportBuilder.IsFound) { return; } branchAccessor.Visit(BranchItem.Second, ba => BranchVisitor(locationReportBuilder, ba)); } }
private static void BranchAccessorVisitor(TreeNode treeNode, BranchAccessor branchAccessor) { var branchNode = new TreeNode {Content = "Branch " + branchAccessor.Branch.Orientation}; treeNode.Children.Add(branchNode); var firstBranchNode = new TreeNode { Content = "Branch Item 1" }; branchNode.Children.Add(firstBranchNode); var secondBranchNode = new TreeNode { Content = "Branch Item 2" }; branchNode.Children.Add(secondBranchNode); branchAccessor .Visit(firstBranchNode, BranchItem.First, BranchAccessorVisitor, TabablzControlVisitor) .Visit(secondBranchNode, BranchItem.Second, BranchAccessorVisitor, TabablzControlVisitor); }
/// <summary> /// Helper method for <see cref="BranchAccessor.Visit"/> which allows a context to be passed through. /// </summary> /// <typeparam name="TContext"></typeparam> /// <param name="branchAccessor"></param> /// <param name="context"></param> /// <param name="childItem"></param> /// <param name="branchVisitor"></param> /// <param name="tabablzControlVisitor"></param> /// <param name="contentVisitor"></param> /// <returns></returns> public static BranchAccessor Visit <TContext>( this BranchAccessor branchAccessor, TContext context, BranchItem childItem, Action <TContext, BranchAccessor> branchVisitor = null, Action <TContext, TabablzControl> tabablzControlVisitor = null, Action <TContext, object> contentVisitor = null) { if (branchAccessor == null) { throw new ArgumentNullException("branchAccessor"); } branchAccessor.Visit( childItem, WrapVisitor(context, branchVisitor), WrapVisitor(context, tabablzControlVisitor), WrapVisitor(context, contentVisitor) ); return(branchAccessor); }
private static void BranchAccessorVisitor(IList <TabablzControl> resultSet, BranchAccessor branchAccessor) { branchAccessor .Visit(resultSet, BranchItem.First, BranchAccessorVisitor, TabablzControlVisitor) .Visit(resultSet, BranchItem.Second, BranchAccessorVisitor, TabablzControlVisitor); }
private static void BranchAccessorVisitor(XElement stateNode, BranchAccessor branchAccessor) { var proportion = branchAccessor.Branch.GetFirstProportion(); var firstBranch = new XElement(XmlStructure.BranchNode.Branch, new XAttribute(XmlStructure.BranchNode.Proportion, proportion)); var secondBranch = new XElement(XmlStructure.BranchNode.Branch, new XAttribute(XmlStructure.BranchNode.Proportion, 1 - proportion)); var branchNode = new XElement(XmlStructure.BranchNode.Branches, new XAttribute(XmlStructure.BranchNode.Orientation, branchAccessor.Branch.Orientation.ToString())); branchNode.Add(firstBranch); branchNode.Add(secondBranch); stateNode.Add(branchNode); branchAccessor .Visit(firstBranch, BranchItem.First, BranchAccessorVisitor, TabablzControlVisitor) .Visit(secondBranch, BranchItem.Second, BranchAccessorVisitor, TabablzControlVisitor); }
private static void BranchAccessorVisitor(StateNode stateNode, BranchAccessor branchAccessor) { var branchNode = new StateNode( new BranchNode(branchAccessor.Branch.Orientation.ToString()) ); stateNode.Children.Add(branchNode); var proportion = branchAccessor.Branch.GetFirstProportion(); var firstBranchNode = new StateNode(new BranchNode(proportion)); branchNode.Children.Add(firstBranchNode); var secondBranchNode = new StateNode(new BranchNode(1-proportion)); branchNode.Children.Add(secondBranchNode); branchAccessor .Visit(firstBranchNode, BranchItem.First, BranchAccessorVisitor, TabablzControlVisitor) .Visit(secondBranchNode, BranchItem.Second, BranchAccessorVisitor, TabablzControlVisitor); }