protected override void VisitSet <TContainer, TSet, TValue>(Property <TContainer, TSet> property,
                                                                    ref TContainer container, ref TSet value)
        {
            AddToPath(property);
            try
            {
                var path = GetCurrentPath();
                using (var references = VisitorContext.MakeVisitedReferencesScope(this, ref value, path))
                {
                    if (references.VisitedOnCurrentBranch)
                    {
                        VisitorContext.Parent.Add(new CircularReferenceElement <TSet>(VisitorContext.Root, property, value, path, references.GetReferencePath()));
                        return;
                    }

                    var element =
                        GuiFactory.SetFoldout <TContainer, TSet, TValue>(property, path, VisitorContext);
                    VisitorContext.Parent.contentContainer.Add(element);
                    using (VisitorContext.MakeParentScope(element))
                    {
                        element.Reload(property);
                    }
                }
            }
            finally
            {
                RemoveFromPath(property);
            }
        }
Ejemplo n.º 2
0
        void ISetPropertyVisitor.Visit <TContainer, TSet, TValue>(
            Property <TContainer, TSet> property,
            ref TContainer container,
            ref TSet set)
        {
            var path    = Context.CopyCurrentPath();
            var foldout = GuiFactory.SetFoldout <TSet, TValue>(property, path, Context);

            using (Context.MakeParentScope(foldout))
                foldout.Reload(property);
        }
Ejemplo n.º 3
0
        void DefaultSetVisit <TSet, TValue>(IProperty property,
                                            ref TSet value,
                                            PropertyPath path)
            where TSet : ISet <TValue>
        {
            var element = GuiFactory.SetFoldout <TSet, TValue>(property, path, VisitorContext);

            VisitorContext.Parent.contentContainer.Add(element);
            using (VisitorContext.MakeParentScope(element))
            {
                element.Reload(property);
            }
        }