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}