public ExpandableExtensionConverter(IORMPropertyExtension extension, PropertyDescriptor descriptor)
 {
     this.myExtensionElement     = extension;
     this.myExtensionElementType = extension.GetType();
     this.myOriginalDescriptor   = descriptor;
     this.myContextWrapper       = new ContextWrapper(descriptor, myExtensionElement);
 }
 /// <summary>
 /// Adds the properties from the extension <see cref="ModelElement"/>s of the
 /// <see cref="IORMExtendableElement"/> specified by <paramref name="extendableElement"/>
 /// to the <see cref="PropertyDescriptorCollection"/> specified by <paramref name="properties"/>.
 /// </summary>
 /// <param name="extendableElement">The <see cref="IORMExtendableElement"/> from which the extension properties should be retrieved.</param>
 /// <param name="properties">The <see cref="PropertyDescriptorCollection"/> to which the extension properties should be added.</param>
 /// <param name="displayedWithComponentType">The <see cref="Type"/> of the element the extensions will be displayed with.</param>
 public static void GetExtensionProperties(IORMExtendableElement extendableElement, PropertyDescriptorCollection properties, Type displayedWithComponentType)
 {
     if (extendableElement == null)
     {
         throw new ArgumentNullException("extendableElement");
     }
     if (properties == null)
     {
         throw new ArgumentNullException("properties");
     }
     foreach (ModelElement extension in extendableElement.ExtensionCollection)
     {
         IORMPropertyExtension        customPropertyExtension = extension as IORMPropertyExtension;
         ORMExtensionPropertySettings settings = (customPropertyExtension != null) ? customPropertyExtension.ExtensionPropertySettings : ORMExtensionPropertySettings.MergeAsTopLevelProperty;
         if (0 != (settings & ORMExtensionPropertySettings.MergeAsExpandableProperty))
         {
             PropertyDescriptor descriptor = ExpandableExtensionPropertyDescriptor.CreateExtensionDescriptor(customPropertyExtension);
             properties.Add(displayedWithComponentType != null ? EditorUtility.RedirectPropertyDescriptor(extension, descriptor, displayedWithComponentType) : descriptor);
         }
         if (0 != (settings & ORMExtensionPropertySettings.MergeAsTopLevelProperty))
         {
             foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(extension))
             {
                 properties.Add(displayedWithComponentType != null ? EditorUtility.RedirectPropertyDescriptor(extension, descriptor, displayedWithComponentType) : descriptor);
             }
         }
     }
 }
 private ExpandableExtensionPropertyDescriptor(IORMPropertyExtension extensionElement, TypeConverter converter, bool readOnly, PropertyDescriptor descriptor)
     : base(extensionElement.ToString(), null)
 {
     this.myExtensionElement   = extensionElement;
     this.myConverter          = converter;
     this.myReadOnly           = readOnly;
     this.myOriginalDescriptor = descriptor;
 }
Beispiel #4
0
			private ExpandableExtensionPropertyDescriptor(IORMPropertyExtension extensionElement, TypeConverter converter, bool readOnly, PropertyDescriptor descriptor)
				: base(extensionElement.ToString(), null)
			{
				this.myExtensionElement = extensionElement;
				this.myConverter = converter;
				this.myReadOnly = readOnly;
				this.myOriginalDescriptor = descriptor;
			}
Beispiel #5
0
			public static ExpandableExtensionPropertyDescriptor CreateExtensionDescriptor(IORMPropertyExtension extensionElement)
			{
				ModelElement element = extensionElement as ModelElement;
				DomainPropertyInfo extensionExpandableTopLevelPropertyInfo = element.Store.DomainDataDirectory.FindDomainProperty(extensionElement.ExtensionExpandableTopLevelPropertyId);

				// If ExtensionExpandableTopLevelPropertyGuid is invalid or Guid.Empty, FindDomainProperty returns null.
				bool readOnly = (extensionExpandableTopLevelPropertyInfo == null);

				PropertyDescriptor descriptor;
				ExpandableObjectConverter expandableConverter;

				if (!readOnly)
				{
					descriptor = DomainTypeDescriptor.CreatePropertyDescriptor(element, extensionExpandableTopLevelPropertyInfo);
					expandableConverter = new ExpandableExtensionConverter(extensionElement, descriptor);
				}
				else
				{
					descriptor = null;
					expandableConverter = new ExpandableObjectConverter();
				}

				return new ExpandableExtensionPropertyDescriptor(extensionElement, expandableConverter, readOnly, descriptor);
			}
Beispiel #6
0
				public ExpandableExtensionConverter(IORMPropertyExtension extension, PropertyDescriptor descriptor)
				{
					this.myExtensionElement = extension;
					this.myExtensionElementType = extension.GetType();
					this.myOriginalDescriptor = descriptor;
					this.myContextWrapper = new ContextWrapper(descriptor, myExtensionElement);
				}
Beispiel #7
0
					public ContextWrapper(PropertyDescriptor descriptor, IORMPropertyExtension extensionElement)
					{
						myOriginalDescriptor = descriptor;
						myExtensionElement = extensionElement;
					}
            public static ExpandableExtensionPropertyDescriptor CreateExtensionDescriptor(IORMPropertyExtension extensionElement)
            {
                ModelElement       element = extensionElement as ModelElement;
                DomainPropertyInfo extensionExpandableTopLevelPropertyInfo = element.Store.DomainDataDirectory.FindDomainProperty(extensionElement.ExtensionExpandableTopLevelPropertyId);

                // If ExtensionExpandableTopLevelPropertyGuid is invalid or Guid.Empty, FindDomainProperty returns null.
                bool readOnly = (extensionExpandableTopLevelPropertyInfo == null);

                PropertyDescriptor        descriptor;
                ExpandableObjectConverter expandableConverter;

                if (!readOnly)
                {
                    descriptor          = DomainTypeDescriptor.CreatePropertyDescriptor(element, extensionExpandableTopLevelPropertyInfo);
                    expandableConverter = new ExpandableExtensionConverter(extensionElement, descriptor);
                }
                else
                {
                    descriptor          = null;
                    expandableConverter = new ExpandableObjectConverter();
                }

                return(new ExpandableExtensionPropertyDescriptor(extensionElement, expandableConverter, readOnly, descriptor));
            }
 public ContextWrapper(PropertyDescriptor descriptor, IORMPropertyExtension extensionElement)
 {
     myOriginalDescriptor = descriptor;
     myExtensionElement   = extensionElement;
 }