예제 #1
0
        /// <summary>
        /// Build the EditInterface for the given type.
        /// </summary>
        /// <param name="name">The name to use.</param>
        /// <param name="target">The target object.</param>
        /// <param name="validateCallback">Validate callback.</param>
        /// <returns>An EditInterface for the specific object.</returns>
        private static EditInterface buildInterface(String name, Validate validateCallback)
        {
            EditInterface        createdInterface = new EditInterface(name, null, null, validateCallback);
            EditablePropertyInfo propertyInfo     = new EditablePropertyInfo();

            propertyInfo.addColumn(new EditablePropertyColumn("Name", true));
            propertyInfo.addColumn(new EditablePropertyColumn("Value", false));
            createdInterface.setPropertyInfo(propertyInfo);
            return(createdInterface);
        }
        private void init(ListlikeAbstractor <T> list, String name, Func <T> createNewCallback, Action <T> removedCallback, Validate validateCallback, MemberScanner memberScanner)
        {
            this.list = list;
            this.createNewCallback = createNewCallback;
            this.removedCallback   = removedCallback;
            this.validateCallback  = validateCallback;

            //If no member scanner passed, set it to the default one
            if (memberScanner == null)
            {
                memberScanner = ReflectedEditInterface.DefaultScanner;
            }

            this.memberScanner = memberScanner;

            EditablePropertyInfo propertyInfo = new EditablePropertyInfo();

            foreach (var item in this.memberScanner.getMatchingMembers(typeof(T)))
            {
                propertyInfo.addColumn(new EditablePropertyColumn(item.getWrappedName(), false));
            }

            addPropertyCallback    = add;
            removePropertyCallback = remove;

            setPropertyInfo(propertyInfo);

            for (int i = 0; i < list.Count; ++i)
            {
                addProperty(i);
            }
        }
예제 #3
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);
            }
        }
예제 #4
0
        private void init(ListlikeAbstractor <T> list, String name, Validate validateCallback, Func <EditUICallback, Browser> getBrowser)
        {
            this.list       = list;
            this.getBrowser = getBrowser;

            EditablePropertyInfo propertyInfo = new EditablePropertyInfo();

            propertyInfo.addColumn(new EditablePropertyColumn("Value", false));

            this.addPropertyCallback    = add;
            this.removePropertyCallback = remove;
            this.validateCallback       = validateCallback;

            setPropertyInfo(propertyInfo);

            for (int i = 0; i < list.Count; ++i)
            {
                addProperty(i);
            }
        }