Beispiel #1
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));
                        }
                    }
                }
            }
        }
Beispiel #2
0
 /// <summary>
 /// Safe version of addSubInterface. Will check for the calling object to be null first.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="editInterface"></param>
 /// <param name="value"></param>
 public static void safeAddSubInterface <T>(this EditInterface editInterface, T value)
     where T : class
 {
     if (editInterface != null)
     {
         editInterface.addSubInterface <T>(value);
     }
 }
 /// <summary>
 /// Add a subinterface bound to source.
 /// </summary>
 /// <param name="source">The class that provided the subinterface.</param>
 /// <param name="subInterface">The subinterface to bind to source.</param>
 public void addSubInterface(T source, EditInterface subInterface)
 {
     editInterface.addSubInterface(subInterface);
     subInterface.ManagerBinding = source;
     interfaceDictionary.Add(source, subInterface);
     foreach (EditInterfaceCommand command in commandList)
     {
         subInterface.addCommand(command);
     }
 }