Commit 30925fe

mo <email@solidware.ca>
2011-03-18 05:08:26
refactoring the WPFApplicationController.
1 parent 82d799d
product/desktop.ui/Properties/AssemblyInfo.cs
@@ -49,5 +49,5 @@ using System.Windows;
 // You can specify all the values or you can default the Build and Revision Numbers 
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2011.3.17.2242")]
-[assembly: AssemblyFileVersion("2011.3.17.2242")]
+[assembly: AssemblyVersion("2011.3.17.238")]
+[assembly: AssemblyFileVersion("2011.3.17.238")]
product/desktop.ui/views/AddNewIncomeDialog.xaml
@@ -6,7 +6,7 @@
     <StackPanel>
         <DockPanel>
         <Label>Income Amount ($):</Label>
-        <TextBox Text="{Binding Path=amount}"></TextBox>
+        <TextBox Text="{Binding Path=amount,  UpdateSourceTrigger=PropertyChanged}"></TextBox>
         </DockPanel>
         <DockPanel LastChildFill="False" HorizontalAlignment="Right">
         <Button IsDefault="True" Command="{Binding Path=Add}">_Add</Button>
product/desktop.ui/views/TaxSummaryTab.xaml
@@ -7,6 +7,7 @@
     <StackPanel>
         <StackPanel DataContext="{Binding Path=Selected}">
             <Label>Total Income:</Label>
+            <Label Content="{Binding Path=TotalIncome}"></Label>
             <Label>Federal Tax Rates for 2011</Label>
             <ListView>
                 <ListViewItem> * 15% on the first $41,544 of taxable income, + </ListViewItem>
@@ -14,7 +15,6 @@
                 <ListViewItem> * 26% on the next $45,712 of taxable income (on the portion of taxable income between $83,088 and $128,800), + </ListViewItem>
                 <ListViewItem> * 29% of taxable income over $128,800. </ListViewItem>
             </ListView>
-            <Label Content="{Binding Path=TotalIncome}"></Label>
             <Label>Federal Taxes:</Label>
             <Label Content="{Binding Path=FederalTaxes}"></Label>
             <Label>Provincial Tax Rates for 2011</Label>
product/desktop.ui/WPFApplicationController.cs
@@ -1,3 +1,4 @@
+using System;
 using System.Windows;
 using System.Windows.Controls;
 using solidware.financials.infrastructure.eventing;
@@ -10,42 +11,48 @@ namespace solidware.financials.windows.ui
         PresenterFactory factory;
         EventAggregator event_aggregator;
 
-        public WpfApplicationController(RegionManager region_manager, PresenterFactory factory, EventAggregator event_aggregator)
+        public WpfApplicationController(RegionManager region_manager, PresenterFactory factory,
+                                        EventAggregator event_aggregator)
         {
             this.region_manager = region_manager;
             this.event_aggregator = event_aggregator;
             this.factory = factory;
         }
 
-        public void add_tab<Presenter, View>() where Presenter : TabPresenter where View : FrameworkElement, Tab<Presenter>, new()
+        public void add_tab<Presenter, View>() where Presenter : TabPresenter
+            where View : FrameworkElement, Tab<Presenter>, new()
         {
-            var presenter = factory.create<Presenter>();
-            event_aggregator.subscribe(presenter);
-            presenter.present();
-            region_manager.region<TabControl>(x => x.Items.Add(new TabItem
-                                                               {
-                                                                   Header = presenter.Header,
-                                                                   Content = new View {DataContext = presenter}
-                                                               }));
+            var presenter = open<Presenter>();
+            configure_region<TabControl>(x => x.Items.Add(new TabItem
+            {
+                Header = presenter.Header,
+                Content = new View {DataContext = presenter}
+            }));
         }
 
-        public void launch<Presenter, Dialog>() where Presenter : DialogPresenter where Dialog : FrameworkElement, Dialog<Presenter>, new()
+        public void launch<Presenter, Dialog>() where Presenter : DialogPresenter
+            where Dialog : FrameworkElement, Dialog<Presenter>, new()
         {
-            var presenter = factory.create<Presenter>();
-            var dialog = new Dialog {DataContext = presenter};
-            presenter.present();
-            dialog.open(presenter);
+            new Dialog().open(factory.create<Presenter>());
         }
 
-        public void load_region<TPresenter, Region>() where TPresenter : Presenter where Region : FrameworkElement, View<TPresenter>, new()
+        public void load_region<TPresenter, Region>() where TPresenter : Presenter
+            where Region : FrameworkElement, View<TPresenter>, new()
+        {
+            configure_region<Region>(x => { x.DataContext = open<TPresenter>(); });
+        }
+
+        void configure_region<TRegion>(Action<TRegion> configure) where TRegion : UIElement
+        {
+            region_manager.region(configure);
+        }
+
+        TPresenter open<TPresenter>() where TPresenter : Presenter
         {
             var presenter = factory.create<TPresenter>();
             event_aggregator.subscribe(presenter);
             presenter.present();
-            region_manager.region<Region>(x =>
-            {
-                x.DataContext = presenter;
-            });
+            return presenter;
         }
     }
 }
\ No newline at end of file
product/desktop.ui/WPFDialog.cs
@@ -13,8 +13,10 @@ namespace solidware.financials.windows.ui
 
         public void open(TPresenter presenter)
         {
-            presenter.close = () => Close();
+            DataContext = presenter;
             Owner = Application.Current.MainWindow;
+            presenter.close = () => Close();
+            presenter.present();
             ShowDialog();
         }
     }