Commit 24a180e

mo <email@solidware.ca>
2011-02-22 03:08:58
add tax tab.
1 parent 2f7f173
product/desktop.ui/bootstrappers/Bootstrapper.cs
@@ -1,9 +1,9 @@
-using System;
 using System.Collections.Generic;
 using System.Threading;
 using System.Windows.Threading;
 using Autofac;
 using desktop.ui.eventing;
+using desktop.ui.handlers;
 using desktop.ui.presenters;
 using desktop.ui.views;
 using infrastructure.container;
@@ -28,10 +28,11 @@ namespace desktop.ui.bootstrappers
             //builder.Register<Log4NetLogFactory>().As<LogFactory>().SingleInstance();
             builder.RegisterType<DefaultMapper>().As<Mapper>().SingleInstance();
             //builder.RegisterGeneric(typeof (Mapper<,>));
-            builder.RegisterType<StubServiceBus>().As<ServiceBus>().SingleInstance();
+            builder.RegisterType<InMemoryServiceBus>().As<ServiceBus>().SingleInstance();
 
             register_presentation_infrastructure(builder);
             register_presenters(builder);
+            register_for_message_to_listen_for(builder);
 
             shell_window.Closed += (o, e) => Resolve.the<CommandProcessor>().stop();
             shell_window.Closed += (o, e) => Resolve.the<IEnumerable<NeedsShutdown>>();
@@ -63,23 +64,30 @@ namespace desktop.ui.bootstrappers
 
         static void register_presenters(ContainerBuilder builder)
         {
+            builder.RegisterType<CancelCommand>();
+
             builder.RegisterType<StatusBarPresenter>().SingleInstance();
+
             builder.RegisterType<SelectedFamilyMemberPresenter>().SingleInstance();
+
             builder.RegisterType<AddFamilyMemberPresenter>();
             builder.RegisterType<AddFamilyMemberPresenter.SaveCommand>();
+
             builder.RegisterType<AccountPresenter>();
             builder.RegisterType<AccountPresenter.ImportTransactionCommand>();
-            builder.RegisterType<CancelCommand>();
+
             builder.RegisterType<AddNewDetailAccountPresenter>();
             builder.RegisterType<AddNewDetailAccountPresenter.CreateNewAccount>();
+
+            builder.RegisterType<AddNewIncomeViewModel>();
+            builder.RegisterType<AddNewIncomeViewModel.AddIncomeCommand>();
+
+            builder.RegisterType<TaxSummaryPresenter>();
         }
-    }
 
-    public class DefaultMapper : Mapper
-    {
-        public Output map_from<Input, Output>(Input item)
+        static void register_for_message_to_listen_for(ContainerBuilder builder)
         {
-            throw new NotImplementedException();
+            builder.RegisterType<PublishEventHandler<AddedNewFamilyMember>>().As<Handles<AddedNewFamilyMember>>();
         }
     }
 }
\ No newline at end of file
product/desktop.ui/bootstrappers/ComposeShell.cs
@@ -17,6 +17,7 @@ namespace desktop.ui.bootstrappers
         public void run()
         {
             controller.add_tab<AccountPresenter, AccountTab>();
+            controller.add_tab<TaxSummaryPresenter, TaxSummaryTab>();
 
             region_manager.region<MainMenu>(x =>
             {
@@ -24,9 +25,15 @@ namespace desktop.ui.bootstrappers
                 {
                     controller.launch_dialog<AddFamilyMemberPresenter, AddFamilyMemberDialog>();
                 });
-                x.add("_Accounts").add("_Add Account", () => { 
-                    controller.launch_dialog<AddNewDetailAccountPresenter, AddNewDetailAccountDialog>();
-                });
+                //x.add("_Accounts").add("_Add Account", () => { 
+                    //controller.launch_dialog<AddNewDetailAccountPresenter, AddNewDetailAccountDialog>();
+                //});
+                x.add("_Income").add("_Add Income", () => { 
+                    controller.launch_dialog<AddNewIncomeViewModel, AddNewIncomeDialog>();
+                }) ;
+                //x.add("_Deductions").add("_Add RRSP", () => { }) ;
+                //x.add("_Credits").add("_Add Credit", () => { }) ;
+                //x.add("_Benefits").add("_Add Benefit", () => { }) ;
             });
 
             controller.load_region<StatusBarPresenter, StatusBarRegion>();
product/desktop.ui/bootstrappers/DefaultMapper.cs
@@ -0,0 +1,14 @@
+using System;
+using utility;
+
+namespace desktop.ui.bootstrappers
+{
+    public class DefaultMapper : Mapper
+    {
+        public Output map_from<Input, Output>(Input item)
+        {
+            //return AutoMapper.Mapper.Map<Input, Output>(item);
+            throw new NotImplementedException();
+        }
+    }
+}
\ No newline at end of file
product/desktop.ui/handlers/Handles.cs
@@ -0,0 +1,7 @@
+namespace desktop.ui.handlers
+{
+    public interface Handles<T>
+    {
+        void handle(T item);
+    }
+}
\ No newline at end of file
product/desktop.ui/handlers/PublishEventHandler.cs
@@ -0,0 +1,19 @@
+using desktop.ui.eventing;
+
+namespace desktop.ui.handlers
+{
+    public class PublishEventHandler<T> : Handles<T> where T : Event
+    {
+        EventAggregator event_aggregator;
+
+        public PublishEventHandler(EventAggregator event_aggregator)
+        {
+            this.event_aggregator = event_aggregator;
+        }
+
+        public void handle(T item)
+        {
+            event_aggregator.publish(item);
+        }
+    }
+}
\ No newline at end of file
product/desktop.ui/presenters/AccountPresenter.cs
@@ -27,7 +27,7 @@ namespace desktop.ui.presenters
         {
             ApplicationController controller;
 
-            protected override void run(AccountPresenter presenter)
+            public override void run(AccountPresenter presenter)
             {
                 //controller.launch_dialog<ImportTransactionsPresenter, ImportTransactionDialog>(presenter.SelectedAccount);
             }
product/desktop.ui/presenters/AddFamilyMemberPresenter.cs
@@ -35,7 +35,7 @@ namespace desktop.ui.presenters
                 this.bus = bus;
             }
 
-            protected override void run(AddFamilyMemberPresenter presenter)
+            public override void run(AddFamilyMemberPresenter presenter)
             {
                 bus.publish<FamilyMemberToAdd>(x =>
                 {
product/desktop.ui/presenters/AddNewDetailAccountPresenter.cs
@@ -35,7 +35,7 @@ namespace desktop.ui.presenters
                 this.bus = bus;
             }
 
-            protected override void run(AddNewDetailAccountPresenter presenter)
+            public override void run(AddNewDetailAccountPresenter presenter)
             {
                 bus.publish<CreateNewDetailAccountCommand>(x =>
                 {
product/desktop.ui/presenters/AddNewIncomeViewModel.cs
@@ -0,0 +1,34 @@
+using System;
+
+namespace desktop.ui.presenters
+{
+    public class AddNewIncomeViewModel : DialogPresenter
+    {
+        UICommandBuilder builder;
+
+        public AddNewIncomeViewModel(UICommandBuilder builder)
+        {
+            this.builder = builder;
+        }
+
+        public void present()
+        {
+            Add = builder.build<AddIncomeCommand>(this);
+            Cancel = builder.build<CancelCommand>(this);
+        }
+
+        public decimal amount { get; set; }
+        public IObservableCommand Add { get; set; }
+        public IObservableCommand Cancel { get; set; }
+        public Action close { get; set; }
+
+        public class AddIncomeCommand : UICommand<AddNewIncomeViewModel>
+        {
+            public override void run(AddNewIncomeViewModel presenter)
+            {
+                Console.Out.WriteLine(presenter.amount);
+                presenter.close();
+            }
+        }
+    }
+}
\ No newline at end of file
product/desktop.ui/presenters/SelectedFamilyMemberPresenter.cs
@@ -1,3 +1,4 @@
+using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using desktop.ui.eventing;
@@ -52,5 +53,8 @@ namespace desktop.ui.presenters
 
     public class AddedNewFamilyMember : Event
     {
+        public Guid id { get; set; }
+        public string first_name { get; set; }
+        public string last_name { get; set; }
     }
 }
\ No newline at end of file
product/desktop.ui/presenters/TaxSummaryPresenter.cs
@@ -0,0 +1,21 @@
+namespace desktop.ui.presenters
+{
+    public class TaxSummaryPresenter : TabPresenter
+    {
+        UICommandBuilder builder;
+
+        public TaxSummaryPresenter(UICommandBuilder builder)
+        {
+            this.builder = builder;
+        }
+
+        public void present()
+        {
+        }
+
+        public string Header
+        {
+            get { return "Taxes"; }
+        }
+    }
+}
\ No newline at end of file
product/desktop.ui/views/AddNewIncomeDialog.xaml
@@ -0,0 +1,11 @@
+<Window x:Class="desktop.ui.views.AddNewIncomeDialog"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        Title="Add Income">
+    <StackPanel>
+        <Label>Income Amount:</Label>
+        <TextBox Text="{Binding Path=amount}"></TextBox>
+        <Button Command="{Binding Path=Add}">_Add</Button>
+        <Button Command="{Binding Path=Cancel}">_Cancel</Button>
+    </StackPanel>
+</Window>
product/desktop.ui/views/AddNewIncomeDialog.xaml.cs
@@ -0,0 +1,19 @@
+using System.Windows;
+using desktop.ui.presenters;
+
+namespace desktop.ui.views
+{
+    public partial class AddNewIncomeDialog : Dialog<AddNewIncomeViewModel>
+    {
+        public AddNewIncomeDialog()
+        {
+            InitializeComponent();
+        }
+
+        public void open()
+        {
+            Owner = Application.Current.MainWindow;
+            ShowDialog();
+        }
+    }
+}
\ No newline at end of file
product/desktop.ui/views/TaxSummaryTab.xaml
@@ -0,0 +1,18 @@
+<UserControl x:Class="desktop.ui.views.TaxSummaryTab"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             mc:Ignorable="d" >
+    <StackPanel>
+        <Label>Tax Summary</Label>
+        <Label>Federal Tax Rates for 2011</Label>
+        <TextBlock>
+    * 15% on the first $41,544 of taxable income, +
+    * 22% on the next $41,544 of taxable income (on the portion of taxable income between $41,544 and $83,088), +
+    * 26% on the next $45,712 of taxable income (on the portion of taxable income between $83,088 and $128,800), +
+    * 29% of taxable income over $128,800.
+        </TextBlock>
+        <WebBrowser x:Name="browser"></WebBrowser>
+    </StackPanel>
+</UserControl>
product/desktop.ui/views/TaxSummaryTab.xaml.cs
@@ -0,0 +1,14 @@
+using System;
+using desktop.ui.presenters;
+
+namespace desktop.ui.views
+{
+    public partial class TaxSummaryTab : Tab<TaxSummaryPresenter>
+    {
+        public TaxSummaryTab()
+        {
+            InitializeComponent();
+            browser.Navigate(new Uri("http://www.cra-arc.gc.ca/tx/ndvdls/fq/txrts-eng.html"));
+        }
+    }
+}
\ No newline at end of file
product/desktop.ui/CancelCommand.cs
@@ -2,7 +2,7 @@ namespace desktop.ui
 {
     public class CancelCommand : UICommand<DialogPresenter>
     {
-        protected override void run(DialogPresenter presenter)
+        public override void run(DialogPresenter presenter)
         {
             presenter.close();
         }
product/desktop.ui/desktop.ui.csproj
@@ -61,6 +61,7 @@
     <Compile Include="bootstrappers\Bootstrapper.cs" />
     <Compile Include="bootstrappers\ComposeShell.cs" />
     <Compile Include="bootstrappers\ConfigureMappings.cs" />
+    <Compile Include="bootstrappers\DefaultMapper.cs" />
     <Compile Include="bootstrappers\NeedsShutdown.cs" />
     <Compile Include="bootstrappers\NeedStartup.cs" />
     <Compile Include="CancelCommand.cs" />
@@ -72,6 +73,8 @@
     <Compile Include="eventing\SynchronizedEventAggregator.cs" />
     <Compile Include="events\SelectedFamilyMember.cs" />
     <Compile Include="events\UpdateOnLongRunningProcess.cs" />
+    <Compile Include="handlers\Handles.cs" />
+    <Compile Include="handlers\PublishEventHandler.cs" />
     <Compile Include="IObservableCommand.cs" />
     <Compile Include="Observable.cs" />
     <Compile Include="Presenter.cs" />
@@ -79,15 +82,17 @@
     <Compile Include="presenters\AccountPresenter.cs" />
     <Compile Include="presenters\AddFamilyMemberPresenter.cs" />
     <Compile Include="presenters\AddNewDetailAccountPresenter.cs" />
+    <Compile Include="presenters\AddNewIncomeViewModel.cs" />
     <Compile Include="presenters\PersonDetails.cs" />
     <Compile Include="presenters\SelectedFamilyMemberPresenter.cs" />
+    <Compile Include="presenters\TaxSummaryPresenter.cs" />
     <Compile Include="ServiceBus.cs" />
     <Compile Include="presenters\StatusBarPresenter.cs" />
     <Compile Include="presenters\WpfBindingExtensinos.cs" />
     <Compile Include="presenters\WpfCommandBuilder.cs" />
     <Compile Include="Program.cs" />
     <Compile Include="SimpleCommand.cs" />
-    <Compile Include="StubServiceBus.cs" />
+    <Compile Include="InMemoryServiceBus.cs" />
     <Compile Include="Tab.cs" />
     <Compile Include="TabPresenter.cs" />
     <Compile Include="UICommand.cs" />
@@ -102,6 +107,9 @@
     <Compile Include="views\AddNewDetailAccountDialog.xaml.cs">
       <DependentUpon>AddNewDetailAccountDialog.xaml</DependentUpon>
     </Compile>
+    <Compile Include="views\AddNewIncomeDialog.xaml.cs">
+      <DependentUpon>AddNewIncomeDialog.xaml</DependentUpon>
+    </Compile>
     <Compile Include="views\ErrorWindow.xaml.cs">
       <DependentUpon>ErrorWindow.xaml</DependentUpon>
     </Compile>
@@ -117,6 +125,9 @@
     <Compile Include="views\StatusBarRegion.xaml.cs">
       <DependentUpon>StatusBarRegion.xaml</DependentUpon>
     </Compile>
+    <Compile Include="views\TaxSummaryTab.xaml.cs">
+      <DependentUpon>TaxSummaryTab.xaml</DependentUpon>
+    </Compile>
     <Compile Include="WPFApplication.cs" />
     <Compile Include="WPFApplicationController.cs" />
     <Compile Include="RegionManager.cs" />
@@ -159,6 +170,10 @@
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </Page>
+    <Page Include="views\AddNewIncomeDialog.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="views\ErrorWindow.xaml">
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
@@ -175,6 +190,10 @@
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </Page>
+    <Page Include="views\TaxSummaryTab.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
   </ItemGroup>
   <ItemGroup>
     <Resource Include="views\images\cancel.png" />
product/desktop.ui/InMemoryServiceBus.cs
@@ -0,0 +1,34 @@
+using System;
+using desktop.ui.handlers;
+using infrastructure.container;
+using utility;
+
+namespace desktop.ui
+{
+    public class InMemoryServiceBus : ServiceBus
+    {
+        DependencyRegistry registry;
+
+        public InMemoryServiceBus(DependencyRegistry registry)
+        {
+            this.registry = registry;
+        }
+
+        public void publish<Message>() where Message : new()
+        {
+            publish(new Message());
+        }
+
+        public void publish<Message>(Message item) where Message : new()
+        {
+            registry.get_all<Handles<Message>>().each(x => x.handle(item));
+        }
+
+        public void publish<Message>(Action<Message> configure) where Message : new()
+        {
+            var message = new Message();
+            configure(message);
+            publish(message);
+        }
+    }
+}
\ No newline at end of file
product/desktop.ui/StubServiceBus.cs
@@ -1,19 +0,0 @@
-using System;
-
-namespace desktop.ui
-{
-    public class StubServiceBus : ServiceBus
-    {
-        public void publish<Message>() where Message : new()
-        {
-        }
-
-        public void publish<Message>(Message item) where Message : new()
-        {
-        }
-
-        public void publish<Message>(Action<Message> configure) where Message : new()
-        {
-        }
-    }
-}
\ No newline at end of file
product/desktop.ui/UICommand.cs
@@ -12,6 +12,6 @@ namespace desktop.ui
             run(presenter as T);
         }
 
-        protected abstract void run(T presenter);
+        public abstract void run(T presenter);
     }
 }
\ No newline at end of file
thirdparty/automapper/AutoMapper.dll
Binary file