Esempio n. 1
0
        NodeInfo CreateViewNode(IView view, NodesCollectionInfo collectionToAddViewNode, IInspectedObject modelNode, int level, List <NodeInfo> nodesToCollapse)
        {
            string nodeText = modelNode.DisplayName;

            if (modelNode.Comment != "")
            {
                nodeText += " (" + modelNode.Comment + ")";
            }

            bool createCollapsed    = false;
            bool createLazilyLoaded = false;

            if (level < 5)
            {
                if (OnNodeCreated != null)
                {
                    var args = new NodeCreatedEventArgs()
                    {
                        NodeObject = VisualizerNode.FromObject(modelNode)
                    };
                    OnNodeCreated(this, args);
                    createCollapsed    = args.CreateCollapsed.GetValueOrDefault(createCollapsed);
                    createLazilyLoaded = args.CreateLazilyLoaded.GetValueOrDefault(createLazilyLoaded);
                }
                if (createLazilyLoaded && !view.TreeSupportsLoadingOnExpansion)
                {
                    createLazilyLoaded = false;
                }
            }

            var viewNode = view.CreateNode(nodeText, modelNode, collectionToAddViewNode);

            if (createLazilyLoaded)
            {
                view.CreateNode(lazyLoadTag, lazyLoadTag, viewNode.ChildrenNodesCollection);
            }
            else
            {
                foreach (var child in modelNode.Children)
                {
                    CreateViewNode(view, viewNode.ChildrenNodesCollection, child, level + 1, nodesToCollapse);
                }
            }
            if (createCollapsed)
            {
                nodesToCollapse.Add(viewNode);
            }
            return(viewNode);
        }
Esempio n. 2
0
        bool IPresenter.TrySelectObject(ILogSource source, TextLogEventTrigger creationTrigger, Func <IVisualizerNode, int> disambiguationFunction)
        {
            EnsureTreeView();

            Func <IInspectedObject, bool> predecate = obj =>
            {
                return(obj.Owner.Outputs.Any(o => o.LogSource == source) &&
                       obj.StateChangeHistory.Any(change => change.Trigger.CompareTo(creationTrigger) == 0));
            };

            var candidates = EnumRoots().SelectMany(EnumTree).Where(predecate).ToList();

            if (candidates.Count > 0)
            {
                IInspectedObject obj;
                if (candidates.Count == 1 || disambiguationFunction == null)
                {
                    obj = candidates[0];
                }
                else
                {
                    obj = candidates
                          .Select(c => new { Obj = c, Rating = disambiguationFunction(VisualizerNode.FromObject(c)) })
                          .OrderByDescending(x => x.Rating)
                          .First().Obj;
                }
                var n = FindOrCreateNode(obj);
                if (n != null)
                {
                    view.SelectedNodes = new[] { n.Value };
                    view.ScrollSelectedNodesInView();
                    return(true);
                }
            }
            return(false);
        }