Esempio n. 1
0
 public ReflectedMinMaxEditableProperty(String name, ReflectedVariable variable, DoubleBackedNumber minValue, DoubleBackedNumber maxValue, DoubleBackedNumber increment)
     : base(name, variable)
 {
     this.MinValue  = minValue;
     this.MaxValue  = maxValue;
     this.Increment = increment;
 }
 /// <summary>
 /// This is the test function. It will return true if the member should
 /// be accepted.
 /// </summary>
 /// <param name="wrapper">The MemberWrapper with info about the field/property being scanned.</param>
 /// <returns>True if the member should be included in the results. False to omit it.</returns>
 public bool allowMember(MemberWrapper wrapper)
 {
     if (wrapper.getCustomAttributes(typeof(EditableAttribute), true).Any())
     {
         Type wrappedType = wrapper.getWrappedType();
         return(ReflectedVariable.canCreateVariable(wrappedType) || wrappedType.GetInterface(BEHAVIOR_OBJECT_INTERFACE) != null);
     }
     return(false);
 }
Esempio n. 3
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="target">The target object.</param>
        /// <param name="scanner">The MemberScanner to use to learn about target.</param>
        public ReflectedObjectEditableProperty(Object target, MemberScanner scanner)
        {
            this.target        = target;
            this.memberScanner = scanner;
            IEnumerable <MemberWrapper> matches = memberScanner.getMatchingMembers(target.GetType());

            variableList = new List <ReflectedVariable>();
            foreach (MemberWrapper wrapper in matches)
            {
                if (ReflectedVariable.canCreateVariable(wrapper.getWrappedType()))
                {
                    variableList.Add(ReflectedVariable.createVariable(wrapper, target));
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="name">A name for this interface.</param>
        /// <param name="collection">The collection that has the elements this interface will hold.</param>
        /// <param name="scanner">A MemberScanner to discover the properties of T with.</param>
        public ReflectedCollectionEditInterface(String name, IEnumerable <T> collection, MemberScanner scanner)
        {
            this.memberScanner = scanner;
            this.name          = name;
            IEnumerable <MemberWrapper> matches = memberScanner.getMatchingMembers(typeof(T));

            foreach (MemberWrapper wrapper in matches)
            {
                if (ReflectedVariable.canCreateVariable(wrapper.getWrappedType()))
                {
                    propertyInfo.addColumn(new EditablePropertyColumn(wrapper.getWrappedName(), false));
                }
            }
            foreach (T item in collection)
            {
                addItem(item);
            }
        }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="name">The name of the wrapped variable.</param>
 /// <param name="variable">The ReflectedVariable to be edited.</param>
 public ReflectedEditableProperty(String name, ReflectedVariable variable)
 {
     this.name     = name;
     this.variable = variable;
 }
Esempio n. 6
0
        /// <summary>
        /// Add properties to an existing EditInterface.
        /// </summary>
        /// <param name="scanner"></param>
        /// <param name="target"></param>
        /// <param name="edit"></param>
        private static void addProperties(MemberScanner scanner, Object target, Type startType, EditInterface edit, ReflectedEditablePropertyProvider customPropProvider)
        {
            IEnumerable <MemberWrapper> members = scanner.getMatchingMembers(startType);

            foreach (MemberWrapper memberWrapper in members)
            {
                if (!customPropProvider.addProperties(memberWrapper, target, edit))
                {
                    EditableAttribute editable = findEditableAttribute(memberWrapper);
                    bool addAsProperty         = (editable != null && editable.ForceAsProperty) || ReflectedVariable.canCreateVariable(memberWrapper.getWrappedType());
                    if (addAsProperty)
                    {
                        edit.addEditableProperty(editable.createEditableProperty(memberWrapper, target));
                    }
                    else
                    {
                        Object subObject = memberWrapper.getValue(target, null);
                        if (subObject is EditInterfaceOverride)
                        {
                            EditInterfaceOverride custom = (EditInterfaceOverride)subObject;
                            edit.addSubInterface(custom.getEditInterface(memberWrapper.getWrappedName(), scanner));
                        }
                        else if (subObject != null)
                        {
                            edit.addSubInterface(createEditInterface(subObject, scanner, memberWrapper.getWrappedName() + " - " + memberWrapper.getWrappedType(), null));
                        }
                    }
                }
            }
        }
Esempio n. 7
0
 public virtual EditableProperty createEditableProperty(MemberWrapper memberWrapper, Object target)
 {
     return(new ReflectedEditableProperty(PrettyName != null ? PrettyName : memberWrapper.getWrappedName(), ReflectedVariable.createVariable(memberWrapper, target))
     {
         Advanced = Advanced
     });
 }
Esempio n. 8
0
 public override EditableProperty createEditableProperty(MemberWrapper memberWrapper, Object target)
 {
     return(new ReflectedMinMaxEditableProperty(PrettyName != null ? PrettyName : memberWrapper.getWrappedName(), ReflectedVariable.createVariable(memberWrapper, target), MinValue, MaxValue, Increment)
     {
         Advanced = Advanced,
     });
 }