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(); }
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(); }
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; }
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(); }
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(); }
public AssetRootNodePresenter([NotNull] INodePresenterFactoryInternal factory, IPropertyProviderViewModel propertyProvider, [NotNull] IAssetObjectNode rootNode) : base(factory, propertyProvider, rootNode) { }
public AssetMemberNodePresenter([NotNull] INodePresenterFactoryInternal factory, IPropertyProviderViewModel propertyProvider, [NotNull] INodePresenter parent, [NotNull] IAssetMemberNode member) : base(factory, propertyProvider, parent, member) { }
public AssetItemNodePresenter([NotNull] INodePresenterFactoryInternal factory, IPropertyProviderViewModel propertyProvider, [NotNull] INodePresenter parent, [NotNull] IAssetObjectNode container, Index index) : base(factory, propertyProvider, parent, container, index) { }
protected NodePresenterBase([NotNull] INodePresenterFactoryInternal factory, [CanBeNull] IPropertyProviderViewModel propertyProvider, [CanBeNull] INodePresenter parent) { this.factory = factory ?? throw new ArgumentNullException(nameof(factory)); Parent = parent; PropertyProvider = propertyProvider; }