main
 1using System.Windows;
 2using gorilla.infrastructure.container;
 3using solidware.financials.windows.ui.presenters;
 4using solidware.financials.windows.ui.views;
 5using solidware.financials.windows.ui.views.controls;
 6using solidware.financials.windows.ui.views.dialogs;
 7using solidware.financials.windows.ui.views.icons;
 8using utility;
 9
10namespace solidware.financials.windows.ui.bootstrappers
11{
12    public class ComposeShell : NeedStartup
13    {
14        RegionManager region_manager;
15        ApplicationController controller;
16        DialogLauncher launcher;
17
18        public ComposeShell(RegionManager region_manager, ApplicationController controller, DialogLauncher launcher)
19        {
20            this.region_manager = region_manager;
21            this.launcher = launcher;
22            this.controller = controller;
23        }
24
25        public void run()
26        {
27            region_manager.region<MainMenu>(x =>
28            {
29                x.add("_Application").add("E_xit", () => Resolve.the<Shell>().Close());
30                x.add("_Family").add("_Add Member", launch<AddFamilyMemberPresenter, AddFamilyMemberDialog>).apply_icon(UIIcon.Plus).parent();
31                x.add("_Income").add("_Add Income", launch<AddNewIncomeViewModel, AddNewIncomeDialog>).apply_icon(UIIcon.Plus);
32                //x.add("_Deductions").add("_Add RRSP", () => { }) ;
33                //x.add("_Credits").add("_Add Credit", () => { }) ;
34                //x.add("_Benefits").add("_Add Benefit", () => { }) ;
35                x.add("_Window").add("_Taxes", () => controller.add_tab<TaxSummaryPresenter, TaxSummaryTab>()).apply_icon(UIIcon.Category);
36                x.add("_Help").add("_Taxes", launch<DisplayCanadianTaxInformationViewModel, DisplayCanadianTaxInformationDialog>).apply_icon(UIIcon.Help);
37            });
38
39            controller.load_region<StatusBarPresenter, StatusBarRegion>();
40            controller.load_region<ButtonBarPresenter, ButtonBar>();
41            controller.load_region<StockWatchPresenter, StockWatch>();
42            region_manager.region<ButtonBar>(x =>
43            {
44                x.AddCommand("Add Family Member", launch<AddFamilyMemberPresenter, AddFamilyMemberDialog>, UIIcon.Plus);
45                x.AddCommand("Add Income", launch<AddNewIncomeViewModel, AddNewIncomeDialog>, UIIcon.Plus);
46            });
47        }
48
49        void launch<Presenter, Dialog>() where Presenter : DialogPresenter where Dialog : FrameworkElement, Dialog<Presenter>, new()
50        {
51            launcher.launch<Presenter, Dialog>();
52        }
53    }
54}