示例#1
0
        public TraceTreeNode GetTraceViewModel(TraceGroupViewModel tg)
        {
            TraceTreeNode vm = null;

            using (new DebugTracer("GetTraceViewModel"))
            {
                var items = this.Repository.GetTraceItems(tg);
                if (items.Count > 0)
                {
                    using (new DebugTracer("FixLooseEnds"))
                    {
                        FixLooseEnds(items);
                    }
                    using (new DebugTracer("CreateTreeNodeViewModel"))
                    {
                        vm = CreateTreeNodeViewModel(items);
                    }
                }
            }
            using (new DebugTracer("FilterThresholds"))
            {
                FilterThresholds(vm, tg);
            }
            return(vm);
        }
 private void SetViewModel(TraceTreeNode treeNodeViewModel)
 {
     if (treeNodeViewModel != null)
     {
         treeView.BeginUpdate();
         var root = new TreeModel();
         treeView.Model = root;
         root.Nodes.Add(treeNodeViewModel);
         treeView.ExpandAll();
         treeView.EndUpdate();
     }
 }
示例#3
0
 private bool HasNoException(TraceTreeNode vm)
 {
     if (vm.TraceNode.Begin.IsException)
     {
         return(false);
     }
     foreach (TraceTreeNode node in vm.Nodes)
     {
         if (!HasNoException(node))
         {
             return(false);
         }
     }
     return(true);
 }
示例#4
0
        private TraceTreeNode ConvertToTreeNodeViewModel(NodeModel bNode)
        {
            var node = new TraceTreeNode
            {
                TraceNode = bNode.TraceNode,
                Text      = bNode.TraceNode.Description
            };

            if (bNode.Children != null)
            {
                bNode.Children.ForEach(x =>
                {
                    node.Add(ConvertToTreeNodeViewModel(x));
                });
            }
            return(node);
        }
示例#5
0
        private void FilterThresholds(TraceTreeNode vm, TraceGroupViewModel tg)
        {
            if (vm != null && tg.ThresholdMilliseconds > 0)
            {
                bool blnRet = false;

                if (vm.TraceNode.TimeTakenMilliseconds < tg.ThresholdMilliseconds)
                {
                    if (HasNoException(vm))
                    {
                        blnRet = vm.Remove();
                    }
                }
                if (!blnRet)
                {
                    for (var i = vm.Nodes.Count - 1; i >= 0; i--)
                    {
                        FilterThresholds(vm.Nodes[i] as TraceTreeNode, tg);
                    }
                }
            }
        }