NotNull <TObj, TClass, T>(this NotifyConfigurator <TClass, T> c, Func <TClass, TObj> notnull)
     where TClass : class, INotifyPropertyChangedWithHelper
     where T : class, IChildObject
 //            where TObj : class
 {
     return(c.When(e => !Equals(notnull(e), default(TObj))));
 }
        Foreign <TClass, T>(this NotifyConfigurator <TClass, PropertyHolder <T> > c,
                            Expression <Func <TClass, int?> > idGetter
                            )
            where TClass : NotifierBase, IEntity, IDataServiceProvider
            where T : Entity
        {
            var getter = idGetter.Compile();



            return(c
                   .AddTriggerExpression(idGetter)
                   .On(e => e.DataService)
                   .NotNull(e => e.DataService)
                   .Set(e =>
            {
                //TODO : have an async setter

                var id = getter(e);
                if (id == null)
                {
                    return default(T);
                }

                var task = Task.Run(() => e.DataService.FetchOneAsync <T>(id.Value));
                task.Wait();
                var result = task.Result;
                return result;
            })
                   );
        }
 Trig <TClass, TMember, T>(this NotifyConfigurator <TClass, TMember> c)
     where T : ITriggerable
     where TClass : class, INotifyPropertyChangedWithHelper
     where TMember : PropertyHolder <T>
 {
     return(c.Do((target, property) => property.Get().OnTriggered()));
 }
Exemple #4
0
 public static NotifyConfigurator <TClass, T> CanExecute <TClass, T>(this NotifyConfigurator <TClass, T> c,
                                                                     Func <TClass, bool> setter)
     where TClass : class, INotifyPropertyChangedWithHelper
     where T : CommandPropertyHolder
 {
     return(c
            .Do((target, cmd) => cmd.SetCanExecute(() => setter(target))));
 }
Exemple #5
0
 public static NotifyConfigurator <TClass, T> Action <TClass, T>(this NotifyConfigurator <TClass, T> c,
                                                                 Action <TClass, object> action)
     where TClass : class, INotifyPropertyChangedWithHelper
     where T : CommandPropertyHolder
 {
     return(c
            .Do((target, cmd) => cmd.SetAction(o => action(target, o))));
 }
Exemple #6
0
 public static NotifyConfigurator <TClass, TFilter> Link <TClass, TFilter>(this NotifyConfigurator <TClass, TFilter> c,
                                                                           Func <TClass, INotifyCollectionChanged> expression)
     where TClass : class, INotifyPropertyChangedWithHelper
     where TFilter : class, IObservableFilter
 {
     return(c
            .Do((target, filter) => filter.Link(() => expression(target))));
 }
        OnNotNull <TObj, TClass, T>(this NotifyConfigurator <TClass, T> c, Expression <Func <TClass, TObj> > expr)
            where TClass : class, INotifyPropertyChangedWithHelper
            where T : class, IChildObject
        {
            var f = expr.Compile();

            return(c.AddTriggerExpression(expr).NotNull(f));
        }
Exemple #8
0
 public static NotifyConfigurator <TClass, T> Action <TClass, T>(this NotifyConfigurator <TClass, T> c,
                                                                 Func <TClass, Task> action)
     where TClass : class, INotifyPropertyChangedWithHelper
     where T : CommandPropertyHolder
 {
     return(c
            .On().Do((target, cmd) => cmd.SetAction(() => action(target))));
 }
        Set <TClass, TMember, T>(this NotifyConfigurator <TClass, TMember> c, Func <TClass, T> setter)
            where TClass : class, INotifyPropertyChangedWithHelper
            where TMember : PropertyHolder <T>
        {
            if (c.CurrentTrigger.TriggerOnList.Count == 0)
            {
                var action = c.GetDoWhenAction((target, property) => property.PropertyValue.Set(setter(target)));
                c.Init(action);
                return(c.On().Do((target, property) =>
                {
                    property.SetProperty(new PropertyValueLazy <T>(property, o => setter((TClass)o)));
                }));
            }

            return(c.Do((target, property) => property.PropertyValue.Set(setter(target))));
        }
        Set <TClass, TMember, T>(this NotifyConfigurator <TClass, TMember> c, Func <TClass, Task <T> > setter)
            where TClass : class, INotifyPropertyChangedWithHelper
            where TMember : PropertyHolder <T>
        {
            if (c.CurrentTrigger.TriggerOnList.Count == 0)
            {
                return(c.On().Do((target, property) => property.SetProperty(new PropertyValueLazy <T>(property, o =>
                {
                    var t = setter((TClass)o);
                    t.Wait();
                    return t.Result;
                }))));
            }

            return(c.Do(async(target, property) =>
            {
                property.PropertyValue.Set(await setter(target));
            }));
        }
Exemple #11
0
 ToolTip <TClass, TMember>(this NotifyConfigurator <TClass, TMember> c, string toolTip)
     where TClass : class, INotifyPropertyChangedWithHelper
     where TMember : CommandPropertyHolder
 {
     return(c.Do((target, member) => member.IconPath = toolTip));
 }
Exemple #12
0
 CheckCanExecute <TClass, TMember>(this NotifyConfigurator <TClass, TMember> c)
     where TClass : class, INotifyPropertyChangedWithHelper
     where TMember : CommandPropertyHolder
 {
     return(c.Do((target, member) => member.SetCanExecute()));
 }
 OneWayBind <TClass, TMember, T>(this NotifyConfigurator <TClass, TMember> c, Expression <Func <TClass, T> > expr)
     where TClass : class, INotifyPropertyChangedWithHelper
     where TMember : PropertyHolder <T>
 {
     return(c.Set(expr.Compile()).AddTriggerExpression(expr).Update());
 }
        public static NotifyConfigurator <TClass, PropertyHolder <TClass, T> > Foreign <TClass, T>(this NotifyConfigurator <TClass, PropertyHolder <TClass, T> > c,
                                                                                                   Expression <Func <TClass, int?> > idGetter
                                                                                                   )
            where TClass : NotifierBase, IEntity
            where T : Entity <T>
        {
            var getter = idGetter.Compile();

            return(c
                   .TriggerExpression(idGetter)
                   .Set(e => e.Context.Db.FetchOne <T>(getter(e) ?? default)));
        }
        public static NotifyConfigurator <TClass, PropertyHolder <TClass, ObservableQuery <T> > > Foreign <TClass, T>(this NotifyConfigurator <TClass, PropertyHolder <TClass, ObservableQuery <T> > > c,
                                                                                                                      Expression <Func <T, int?> > idGetter
                                                                                                                      )
            where TClass : Entity <TClass> //NotifierBase,IEntity
            where T : Entity <T>
        {
            var getter = idGetter.Compile();

            return(c
                   //    .TriggerExpression(idGetter)
                   //    .Do((a, p) => p.Get().OnTriggered())
                   //    .Do((a, p) => p.Get());
                   .Set(e => new ObservableQuery <T>(e.Context.Db)
            {
            }
                        .AddFilter(f => getter(f) == e.Id).FluentUpdate()));
        }
 Set <TClass, TMember, T>(this NotifyConfigurator <TClass, TMember> c, Action <TClass, T> action)
     where TClass : class, INotifyPropertyChangedWithHelper
     where TMember : PropertyHolder <T>
 {
     return(c.Do((target, property) => action(target, property.Get())));
 }
 On <TClass, T>(this NotifyConfigurator <TClass, T> c, Expression <Func <TClass, object> > expr)
     where TClass : class, INotifyPropertyChangedWithHelper
     where T : class, IChildObject
 {
     return(c.AddTriggerExpression(expr));
 }
Exemple #18
0
 public static NotifyConfigurator <TClass, ObservableFilterPropertyHolder <T> > AddFilter <TClass, T>(this NotifyConfigurator <TClass, ObservableFilterPropertyHolder <T> > c,
                                                                                                      Func <T, bool> expression)
     where TClass : class, INotifyPropertyChangedWithHelper
 {
     return(c
            .Do((target, filter) => filter.AddFilter(expression)));
 }
        public static NotifyConfigurator <TClass, PropertyHolder <ObservableQuery <T> > > Foreign <TClass, T>(this NotifyConfigurator <TClass, PropertyHolder <ObservableQuery <T> > > c,
                                                                                                              Expression <Func <T, int?> > idGetter
                                                                                                              )
            where TClass : Entity, IDataServiceProvider //NotifierBase,IEntity
            where T : Entity
        {
            var getter = idGetter.Compile();

            return(c
                   .Set(e => new ObservableQuery <T>(e.DataService)
                        .AddFilter(() => f => getter(f) == e.Id).FluentUpdate()));
        }
 Default <TClass, TMember, T>(this NotifyConfigurator <TClass, TMember> c, T @default)
     where TClass : class, INotifyPropertyChangedWithHelper
     where TMember : PropertyHolder <T>
 {
     return(c.Set(target => @default));
 }