/// <summary> /// 创建与前端交互的Selection对象 /// </summary> public Models.SelectCollection BuildSelections() { Models.SelectCollection selections = new Models.SelectCollection(); foreach (IJsonTreeNode root in ExportRoot.roots) { Models.SelectableJsonList list = new Models.SelectableJsonList(root.DisplayName, root); //使用宽度优先搜索遴选出可选节点并标记 Queue <IJsonTreeNode> que = new Queue <IJsonTreeNode>(); que.Enqueue(root); while (que.Count != 0) { //BFS IJsonTreeNode n = que.Dequeue(); foreach (IJsonTreeNode i in n.ChildNodes.Values) { que.Enqueue(i); } //筛选节点 if (n.Selectable) { list.AddNode(new Models.SelectableJsonNode(n.DisplayName, n)); } } if (list.Nodes.Count != 0) { selections.Source.Add(list); } } return(selections); }
/// <summary> /// 构建工作对象 /// </summary> /// <param name="selections"></param> public void SetupBuildSelections(Models.SelectCollection selections) { foreach (Models.SelectableJsonList l in selections.Source) { bool toBuild = false; foreach (Models.SelectableJsonNode n in l.Nodes) { toBuild |= n.IsChecked; n.Node.IsSelected = n.IsChecked; } (l.Node as TreeNode).BuildSingleFile = toBuild; } }