main
 1using System.Collections.Generic;
 2using System.Collections.ObjectModel;
 3using gorilla.utility;
 4using solidware.financials.infrastructure;
 5using solidware.financials.infrastructure.eventing;
 6using solidware.financials.messages;
 7using solidware.financials.windows.ui.events;
 8using solidware.financials.windows.ui.model;
 9
10namespace solidware.financials.windows.ui.presenters
11{
12    public class ButtonBarPresenter : ObservablePresenter<ButtonBarPresenter>, Presenter, EventSubscriber<AddedNewFamilyMember>
13    {
14        PersonDetails selected_member;
15        EventAggregator event_aggregator;
16        Mapper mapper;
17        ServiceBus bus;
18
19        public ButtonBarPresenter(EventAggregator event_aggregator, Mapper mapper, ServiceBus bus)
20        {
21            this.bus = bus;
22            this.mapper = mapper;
23            this.event_aggregator = event_aggregator;
24            family_members = new ObservableCollection<PersonDetails>();
25        }
26
27        public ICollection<PersonDetails> family_members { get; set; }
28
29        public PersonDetails SelectedMember
30        {
31            get { return selected_member; }
32            set
33            {
34                selected_member = value;
35                update(x => x.SelectedMember);
36                event_aggregator.publish(new SelectedFamilyMember {id = value.id});
37            }
38        }
39
40        public void present()
41        {
42            bus.publish<FindAllFamily>();
43        }
44
45        public void notify(AddedNewFamilyMember message)
46        {
47            var person = mapper.map_from<AddedNewFamilyMember, PersonDetails>(message);
48            if (null == selected_member) SelectedMember = person;
49            family_members.Add(person);
50            update(x => x.family_members);
51        }
52    }
53
54}