public void Attach(ICommandObserver observer) { if (_observers.Contains(observer) == false) { _observers.Add(observer); } }
public PersonViewModel(IPropertyProviderFactory propertyProviderFactory, IMessageBus messageBus, IDialogService dialogService, Person model) { _model = model; var pp = propertyProviderFactory.Create <IPersonViewModel>(this); // creating properties _name = pp.CreateProperty(i => i.Name, model.Name); _surname = pp.CreateProperty(i => i.Surname, model.Surname); _age = pp.CreateProperty(i => i.Age, model.Age); _address1 = pp.CreateProperty(i => i.Address1, model.Address1); _address2 = pp.CreateProperty(i => i.Address2, model.Address2); _address3 = pp.CreateProperty(i => i.Address3, model.Address3); _city = pp.CreateProperty(i => i.City, model.City); // creating commands _editCommand = pp.CreateCommand <Unit>(i => i.EditCommand); _saveCommand = pp.CreateCommand <Unit>(i => i.SaveCommand, !string.IsNullOrEmpty(model.Name) && !string.IsNullOrEmpty(model.Surname)); _deleteCommand = pp.CreateCommand <Unit>(i => i.DeleteCommand); _closeCommand = pp.CreateCommand <Unit>(i => i.CloseCommand); // Observing commands ShouldDispose(_name.CombineLatest(_surname, (n, s) => !string.IsNullOrEmpty(n) && !string.IsNullOrEmpty(s)).Subscribe(_saveCommand.SetCanExecute)); ShouldDispose(_saveCommand.OnExecute.Subscribe(_ => { UpdateModel(); _closeSubject.OnNext(true); })); ShouldDispose(_editCommand.OnExecute.Subscribe(_ => dialogService.ShowViewModel("Edit Person", this))); ShouldDispose(_deleteCommand.OnExecute.Subscribe(_ => messageBus.Publish(new DeletePersonMessage(this)))); ShouldDispose(_closeCommand.OnExecute.Subscribe(_ => { ResetData(); _closeSubject.OnNext(false); })); }
public IDoFluidCommand <T> For <T>(ICommandObserver <T> cmd) { var fluidCommand = new FluidCommand <T>(cmd); _disposables.Add(fluidCommand); return(fluidCommand); }
public MainViewModel(IPropertyProviderFactory propertyProviderFactory, IMessageBus messageBus, IDialogService dialogService, IPersonRepository personRepository, IPersonViewModelFactory personViewModelFactory) { var pp = propertyProviderFactory.Create<IMainViewModel>(this); //create properies _isBusy = pp.CreateProperty(i => i.IsBusy, false); // create commands _addNewClientCommand = pp.CreateCommand<Unit>(i => i.AddNewClientCommand); Clients = new ObservableCollection<IPersonViewModel>(); IsBusy = true; ShouldDispose(personRepository.GetAllClients().ObserveOnDispatcher().Subscribe(c => { foreach (var item in c.Select(personViewModelFactory.Create)) { Clients.Add(item); } IsBusy = false; })); ShouldDispose(messageBus.Subscribe<DeletePersonMessage>(m => { var msg = string.Format("Are you sure you want to delete {0} {1}?", m.Person.Name, m.Person.Surname); if (dialogService.ShowWarning("Delte", msg) == MessageBoxResult.OK) { IsBusy = true; ShouldDispose(personRepository.Delete(m.Person.ToModel()) .ObserveOnDispatcher() .Subscribe(_ => { Clients.Remove(m.Person); IsBusy = false; })); } })); ShouldDispose(_addNewClientCommand.OnExecute.Subscribe(_ => { var newClient = personViewModelFactory.Create(new Person()); if (dialogService.ShowViewModel("New Person", newClient as ViewModelBase)) { IsBusy = true; ShouldDispose(personRepository.Save(newClient.ToModel()) .ObserveOnDispatcher() .Subscribe(u => { Clients.Add(newClient); IsBusy = false; })); } })); }
public MainViewModel(IPropertyProviderFactory propertyProviderFactory, IMessageBus messageBus, IDialogService dialogService, IPersonRepository personRepository, IPersonViewModelFactory personViewModelFactory) { var pp = propertyProviderFactory.Create <IMainViewModel>(this); //create properies _isBusy = pp.CreateProperty(i => i.IsBusy, false); // create commands _addNewClientCommand = pp.CreateCommand <Unit>(i => i.AddNewClientCommand); Clients = new ObservableCollection <IPersonViewModel>(); IsBusy = true; ShouldDispose(personRepository.GetAllClients().ObserveOnDispatcher().Subscribe(c => { foreach (var item in c.Select(personViewModelFactory.Create)) { Clients.Add(item); } IsBusy = false; })); ShouldDispose(messageBus.Subscribe <DeletePersonMessage>(m => { var msg = string.Format("Are you sure you want to delete {0} {1}?", m.Person.Name, m.Person.Surname); if (dialogService.ShowWarning("Delte", msg) == MessageBoxResult.OK) { IsBusy = true; ShouldDispose(personRepository.Delete(m.Person.ToModel()) .ObserveOnDispatcher() .Subscribe(_ => { Clients.Remove(m.Person); IsBusy = false; })); } })); ShouldDispose(_addNewClientCommand.OnExecute.Subscribe(_ => { var newClient = personViewModelFactory.Create(new Person()); if (dialogService.ShowViewModel("New Person", newClient as ViewModelBase)) { IsBusy = true; ShouldDispose(personRepository.Save(newClient.ToModel()) .ObserveOnDispatcher() .Subscribe(u => { Clients.Add(newClient); IsBusy = false; })); } })); }
/// <summary> /// Listen for commands of this type. /// </summary> /// <param name="commandId">The command Id to listen for.</param> /// <param name="observer">The action to execute when the command is received.</param> public void Register(int commandId, ICommandObserver observer) { if (this.commandHandlers.ContainsKey(commandId)) { this.commandHandlers[commandId].Add(observer); } else { this.commandHandlers[commandId] = new List <ICommandObserver>(new[] { observer }); } }
public PersonViewModel(IPropertyProviderFactory propertyProviderFactory, IMessageBus messageBus, IDialogService dialogService, Person model) { _model = model; var pp = propertyProviderFactory.Create<IPersonViewModel>(this); // creating properties _name = pp.CreateProperty(i => i.Name, model.Name); _surname = pp.CreateProperty(i => i.Surname, model.Surname); _age = pp.CreateProperty(i => i.Age, model.Age); _address1 = pp.CreateProperty(i => i.Address1, model.Address1); _address2 = pp.CreateProperty(i => i.Address2, model.Address2); _address3 = pp.CreateProperty(i => i.Address3, model.Address3); _city = pp.CreateProperty(i => i.City, model.City); // creating commands _editCommand = pp.CreateCommand<Unit>(i => i.EditCommand); _saveCommand = pp.CreateCommand<Unit>(i => i.SaveCommand, !string.IsNullOrEmpty(model.Name) && !string.IsNullOrEmpty(model.Surname)); _deleteCommand = pp.CreateCommand<Unit>(i => i.DeleteCommand); _closeCommand = pp.CreateCommand<Unit>(i => i.CloseCommand); // Observing commands ShouldDispose(_name.CombineLatest(_surname, (n,s) => !string.IsNullOrEmpty(n) && !string.IsNullOrEmpty(s)).Subscribe(_saveCommand.SetCanExecute)); ShouldDispose(_saveCommand.OnExecute.Subscribe(_ => { UpdateModel(); _closeSubject.OnNext(true); })); ShouldDispose(_editCommand.OnExecute.Subscribe(_ => dialogService.ShowViewModel("Edit Person", this))); ShouldDispose(_deleteCommand.OnExecute.Subscribe(_ => messageBus.Publish(new DeletePersonMessage(this)))); ShouldDispose(_closeCommand.OnExecute.Subscribe(_ => { ResetData(); _closeSubject.OnNext(false); })); }
public void Add(ICommandObserver observer) { observers.Add(observer); }
public FluidCommand(ICommandObserver <T> cmd) { _cmd = cmd; _compositeDisposable = new CompositeDisposable(); }
public void Remove(ICommandObserver observer) { _observers.Remove(observer); }
public void Add(ICommandObserver observer) { _observers.Add(observer); }
public void AddObserver(ICommandObserver observer) { if (observer != null) m_CommandObservers.Add(observer); }