Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
 /// <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;
     }
 }