/// <summary> /// Constructor. /// </summary> public MModelPropertyDefinitor(string TechName, string Name, string Summary, Type DeclaringType, EEntityMembership Membership, bool?ReferencesOwner, EPropertyKind Kind, bool IsDirectlyEditable, bool IsAdvanced, bool IsRequired) : base(TechName, Name, Summary, DeclaringType, Membership, IsRequired, IsAdvanced) { this.ReferencesOwner = ReferencesOwner; this.Kind = Kind; this.IsDirectlyEditable = IsDirectlyEditable; }
/// <summary> /// Constructor for Store-Box based properties. /// </summary> public ModelPropertyDefinitor(string TechName, EEntityMembership Membership, bool?ReferencesOwner, EPropertyKind Kind, Func <TModelClass, StoreBox <TValue> > StoreBoxGetter, Action <TModelClass, StoreBox <TValue> > StoreBoxSetter, bool IsDirectlyEditable = true, bool IsAdvanced = false, string Name = "", string Summary = "", TValue InitialValue = default(TValue), Func <TValue, Tuple <bool, string> > Validator = null, bool IsRequired = false) : this(TechName, Membership, ReferencesOwner, Kind, (ins) => { var Store = StoreBoxGetter(ins); if (Store == null) { return(default(TValue)); } return(Store.Value); }, (ins, val) => { var Store = StoreBoxGetter(ins); if (Store == null) { return; } Store.Value = val; }, IsDirectlyEditable, IsAdvanced, Name, Summary, InitialValue, Validator, IsRequired) { this.StoreBoxGetter = StoreBoxGetter; this.StoreBoxSetter = StoreBoxSetter; }
/// <summary> /// Constructor for standard properties. /// </summary> public ModelPropertyDefinitor(string TechName, EEntityMembership Membership, bool?ReferencesOwner, EPropertyKind Kind, Func <TModelClass, TValue> BaseGetter, Action <TModelClass, TValue> BaseSetter, bool IsDirectlyEditable = true, bool IsAdvanced = false, string Name = "", string Summary = "", TValue InitialValue = default(TValue), Func <TValue, Tuple <bool, string> > Validator = null, bool IsRequired = false) : base(TechName, Name, Summary, typeof(TValue), Membership, ReferencesOwner, Kind, IsDirectlyEditable, IsAdvanced, IsRequired) { // Dummy properties has no setters. if (BaseGetter == null || BaseSetter == null) { return; } this.Getter = BaseGetter; this.Setter = ((ins, def, val) => { BaseSetter(ins, val); return(true); }); // sole post-interceptor AlterSetterForPostInterception("NotifyChanges", SetterPostInterceptor_NotifyChanges); // second pre-interceptor if (IsEditControlled) { AlterSetterForPreInterception("SavePreviousValue", EntityEditEngine.PropertySetterPreInterceptor); } /*T else * Console.WriteLine("No undoable/redoable: Class=[{0}], Property=[{1}]", typeof(TModelClass).Name, TechName); */ // first pre-interceptor AlterSetterForPreInterception("IgnoreUnchanged", SetterPreInterceptor_IgnoreUnchanged); this.InitialValue = InitialValue; this.Validator = Validator; }
/// <summary> /// Returns the standard estimated size, in characters, for the supplied property-kind. /// </summary> public static int GetEstimatedCharactersFor(EPropertyKind Kind) { return(Kind == EPropertyKind.Name ? 16 : (Kind == EPropertyKind.Description ? 32 : 8)); }