Esempio n. 1
0
        public ItemNodePresenter([NotNull] INodePresenterFactoryInternal factory, IPropertyProviderViewModel propertyProvider, [NotNull] INodePresenter parent, [NotNull] IObjectNode container, Index index)
            : base(factory, propertyProvider, parent)
        {
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }
            if (parent == null)
            {
                throw new ArgumentNullException(nameof(parent));
            }
            Container       = container ?? throw new ArgumentNullException(nameof(container));
            Descriptor      = TypeDescriptorFactory.Default.Find(container.Descriptor.GetInnerCollectionType());
            OwnerCollection = parent;
            Type            = (container.Descriptor as CollectionDescriptor)?.ElementType ?? (container.Descriptor as DictionaryDescriptor)?.ValueType;
            Index           = index;
            Name            = index.ToString();
            Order           = index.IsInt ? (int?)index.Int : null; // So items are sorted by index instead of string
            CombineKey      = Name;
            DisplayName     = Index.IsInt ? "Item " + Index : Index.ToString();

            container.ItemChanging += OnItemChanging;
            container.ItemChanged  += OnItemChanged;
            AttachCommands();
        }
Esempio n. 2
0
        public VirtualNodePresenter([NotNull] INodePresenterFactoryInternal factory, IPropertyProviderViewModel propertyProvider, [NotNull] INodePresenter parent, string name, [NotNull] Type type, int?order, [NotNull] Func <object> getter, Action <object> setter)
            : base(factory, propertyProvider, parent)
        {
            this.getter = getter;
            this.setter = setter;
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }
            if (parent == null)
            {
                throw new ArgumentNullException(nameof(parent));
            }
            if (getter == null)
            {
                throw new ArgumentNullException(nameof(getter));
            }
            Name        = name;
            CombineKey  = Name;
            DisplayName = Name;
            Type        = type;
            Order       = order;
            Descriptor  = TypeDescriptorFactory.Default.Find(type);

            AttachCommands();
        }
Esempio n. 3
0
 public AssetVirtualNodePresenter([NotNull] INodePresenterFactoryInternal factory, IPropertyProviderViewModel propertyProvider, [NotNull] INodePresenter parent, string name, Type type, int?order, [NotNull] Func <object> getter, Action <object> setter, Func <bool> hasBase = null, Func <bool> isInerited = null, Func <bool> isOverridden = null)
     : base(factory, propertyProvider, parent, name, type, order, getter, setter)
 {
     this.hasBase      = hasBase;
     this.isInerited   = isInerited;
     this.isOverridden = isOverridden;
 }
Esempio n. 4
0
        public MemberNodePresenter([NotNull] INodePresenterFactoryInternal factory, IPropertyProviderViewModel propertyProvider, [NotNull] INodePresenter parent, [NotNull] IMemberNode member)
            : base(factory, propertyProvider, parent)
        {
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }
            if (parent == null)
            {
                throw new ArgumentNullException(nameof(parent));
            }
            Member      = member ?? throw new ArgumentNullException(nameof(member));
            Name        = member.Name;
            CombineKey  = Name;
            DisplayName = Name;
            IsReadOnly  = !Member.MemberDescriptor.HasSet;
            memberAttributes.AddRange(TypeDescriptorFactory.Default.AttributeRegistry.GetAttributes(member.MemberDescriptor.MemberInfo));

            member.ValueChanging += OnMemberChanging;
            member.ValueChanged  += OnMemberChanged;

            if (member.Target != null)
            {
                member.Target.ItemChanging += OnItemChanging;
                member.Target.ItemChanged  += OnItemChanged;
            }
            var displayAttribute = memberAttributes.OfType <DisplayAttribute>().FirstOrDefault();

            Order = displayAttribute?.Order ?? member.MemberDescriptor.Order;

            AttachCommands();
        }
Esempio n. 5
0
        public RootNodePresenter([NotNull] INodePresenterFactoryInternal factory, IPropertyProviderViewModel propertyProvider, [NotNull] IObjectNode rootNode)
            : base(factory, propertyProvider, null)
        {
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }
            RootNode    = rootNode ?? throw new ArgumentNullException(nameof(rootNode));
            Name        = "Root";
            DisplayName = string.Empty;

            foreach (var command in factory.AvailableCommands)
            {
                if (command.CanAttach(this))
                {
                    Commands.Add(command);
                }
            }

            rootNode.ItemChanging += OnItemChanging;
            rootNode.ItemChanged  += OnItemChanged;
            AttachCommands();
        }
Esempio n. 6
0
 public AssetRootNodePresenter([NotNull] INodePresenterFactoryInternal factory, IPropertyProviderViewModel propertyProvider, [NotNull] IAssetObjectNode rootNode)
     : base(factory, propertyProvider, rootNode)
 {
 }
Esempio n. 7
0
 public AssetMemberNodePresenter([NotNull] INodePresenterFactoryInternal factory, IPropertyProviderViewModel propertyProvider, [NotNull] INodePresenter parent, [NotNull] IAssetMemberNode member)
     : base(factory, propertyProvider, parent, member)
 {
 }
Esempio n. 8
0
 public AssetItemNodePresenter([NotNull] INodePresenterFactoryInternal factory, IPropertyProviderViewModel propertyProvider, [NotNull] INodePresenter parent, [NotNull] IAssetObjectNode container, Index index)
     : base(factory, propertyProvider, parent, container, index)
 {
 }
Esempio n. 9
0
 protected NodePresenterBase([NotNull] INodePresenterFactoryInternal factory, [CanBeNull] IPropertyProviderViewModel propertyProvider, [CanBeNull] INodePresenter parent)
 {
     this.factory     = factory ?? throw new ArgumentNullException(nameof(factory));
     Parent           = parent;
     PropertyProvider = propertyProvider;
 }