Commit 93341bc

mo <email@solidware.ca>
2011-04-02 22:08:41
tried to figure out how to add document tabs at runtime but it aint working.
1 parent 1b31f96
product/desktop.ui/bootstrappers/ComposeShell.cs
@@ -32,6 +32,7 @@ namespace solidware.financials.windows.ui.bootstrappers
                 //x.add("_Deductions").add("_Add RRSP", () => { }) ;
                 //x.add("_Credits").add("_Add Credit", () => { }) ;
                 //x.add("_Benefits").add("_Add Benefit", () => { }) ;
+                //x.add("_Window").add("_Taxes", () => controller.add_tab<TaxSummaryPresenter, TaxSummaryTab>()).apply_icon(UIIcon.Category);
                 x.add("_Help").add("_Taxes", launch<DisplayCanadianTaxInformationViewModel, DisplayCanadianTaxInformationDialog>).apply_icon(UIIcon.Help);
             });
 
product/desktop.ui/views/Shell.xaml
@@ -1,82 +1,59 @@
-<Window x:Class="solidware.financials.windows.ui.views.Shell"
-  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:ad="clr-namespace:AvalonDock;assembly=AvalonDock" xmlns:views="clr-namespace:solidware.financials.windows.ui.views" Title="Family Finances - (ALPHA)" MinWidth="1024" MinHeight="768" WindowStartupLocation="CenterScreen" WindowState="Maximized">
-  <Grid>
-    <Grid.RowDefinitions>
-      <RowDefinition Height="24"/>
-      <RowDefinition Height="32"/>
-      <RowDefinition Height="*"/>
-      <RowDefinition Height="24"/>
-    </Grid.RowDefinitions>
-    <views:MainMenu x:Name="Menu"></views:MainMenu>
-    <views:ButtonBar x:Name="ButtonBar" Grid.Row="1"></views:ButtonBar>
-    <ad:DockingManager x:Name="DockManager" Grid.Row="2">
-      <ad:ResizingPanel Orientation="Vertical">
-        <ad:ResizingPanel Orientation="Horizontal">
-          <ad:DockablePane ad:ResizingPanel.ResizeWidth="150">
-            <ad:DockableContent x:Name="historyContent" Title="History">
-              <TreeView>
-                <TreeViewItem Header="2011">
-                    <TreeViewItem Header="January"></TreeViewItem>
-                    <TreeViewItem Header="February"></TreeViewItem>
-                    <TreeViewItem Header="March"></TreeViewItem>
-                    <TreeViewItem Header="April"></TreeViewItem>
-                    <TreeViewItem Header="May"></TreeViewItem>
-                    <TreeViewItem Header="June"></TreeViewItem>
-                    <TreeViewItem Header="July"></TreeViewItem>
-                    <TreeViewItem Header="August"></TreeViewItem>
-                    <TreeViewItem Header="September"></TreeViewItem>
-                    <TreeViewItem Header="October"></TreeViewItem>
-                    <TreeViewItem Header="November"></TreeViewItem>
-                    <TreeViewItem Header="December"></TreeViewItem>
-                </TreeViewItem>
-                <TreeViewItem Header="2010">
-                    <TreeViewItem Header="January"></TreeViewItem>
-                    <TreeViewItem Header="February"></TreeViewItem>
-                    <TreeViewItem Header="March"></TreeViewItem>
-                    <TreeViewItem Header="April"></TreeViewItem>
-                    <TreeViewItem Header="May"></TreeViewItem>
-                    <TreeViewItem Header="June"></TreeViewItem>
-                    <TreeViewItem Header="July"></TreeViewItem>
-                    <TreeViewItem Header="August"></TreeViewItem>
-                    <TreeViewItem Header="September"></TreeViewItem>
-                    <TreeViewItem Header="October"></TreeViewItem>
-                    <TreeViewItem Header="November"></TreeViewItem>
-                    <TreeViewItem Header="December"></TreeViewItem>
-                </TreeViewItem>
-            </TreeView>
-            </ad:DockableContent>
-            <ad:DockableContent x:Name="stocksContent" Title="Stocks">
-              <ListBox>
-                <ListBoxItem Content="ARX.TO"/>
-                <ListBoxItem Content="TD.TO"/>
-              </ListBox>
-            </ad:DockableContent>
-          </ad:DockablePane>
-          <ad:DocumentPane Name="Tabs"></ad:DocumentPane>
-        </ad:ResizingPanel>
-        <!--<ad:DockablePane ad:ResizingPanel.ResizeHeight="100">
-          <ad:DockableContent Title="Errors" x:Name="errorsContent">
-            <ListView>
-              <ListView.View>
-                <GridView>
-                  <GridView.Columns>
-                    <GridViewColumn Header="Error"/>
-                    <GridViewColumn Header="Page"/>
-                    <GridViewColumn Header="File"/>
-                    <GridViewColumn Header="Row"/>
-                  </GridView.Columns>
-                </GridView>
-              </ListView.View>
-            </ListView>
-          </ad:DockableContent>
-          <ad:DockableContent Title="Output" x:Name="output">
-            <TextBox IsReadOnly="True" AcceptsReturn="True"/>
-          </ad:DockableContent>
-        </ad:DockablePane>-->
-      </ad:ResizingPanel>
-    </ad:DockingManager>
-    <views:StatusBarRegion x:Name="StatusBar" Grid.Row="3"></views:StatusBarRegion>
-    <views:TrayIcon x:Name="TaskBarIcon" />
-    </Grid>
-</Window>
+<Window x:Class="solidware.financials.windows.ui.views.Shell" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:ad="clr-namespace:AvalonDock;assembly=AvalonDock" xmlns:views="clr-namespace:solidware.financials.windows.ui.views" Title="Family Finances - (ALPHA)" MinWidth="1024" MinHeight="768" WindowStartupLocation="CenterScreen" WindowState="Maximized">
+	<Grid>
+		<Grid.RowDefinitions>
+			<RowDefinition Height="24" />
+			<RowDefinition Height="32" />
+			<RowDefinition Height="*" />
+			<RowDefinition Height="24" />
+		</Grid.RowDefinitions>
+		<views:MainMenu x:Name="Menu"></views:MainMenu>
+		<views:ButtonBar x:Name="ButtonBar" Grid.Row="1"></views:ButtonBar>
+		<ad:DockingManager x:Name="DockManager" Grid.Row="2">
+			<ad:ResizingPanel Name="ResizingPanel" Orientation="Horizontal">
+				<ad:DockablePane ad:ResizingPanel.ResizeWidth="150">
+					<ad:DockableContent x:Name="historyContent" Title="History">
+						<TreeView>
+							<TreeViewItem Header="2011">
+								<TreeViewItem Header="January"></TreeViewItem>
+								<TreeViewItem Header="February"></TreeViewItem>
+								<TreeViewItem Header="March"></TreeViewItem>
+								<TreeViewItem Header="April"></TreeViewItem>
+								<TreeViewItem Header="May"></TreeViewItem>
+								<TreeViewItem Header="June"></TreeViewItem>
+								<TreeViewItem Header="July"></TreeViewItem>
+								<TreeViewItem Header="August"></TreeViewItem>
+								<TreeViewItem Header="September"></TreeViewItem>
+								<TreeViewItem Header="October"></TreeViewItem>
+								<TreeViewItem Header="November"></TreeViewItem>
+								<TreeViewItem Header="December"></TreeViewItem>
+							</TreeViewItem>
+							<TreeViewItem Header="2010">
+								<TreeViewItem Header="January"></TreeViewItem>
+								<TreeViewItem Header="February"></TreeViewItem>
+								<TreeViewItem Header="March"></TreeViewItem>
+								<TreeViewItem Header="April"></TreeViewItem>
+								<TreeViewItem Header="May"></TreeViewItem>
+								<TreeViewItem Header="June"></TreeViewItem>
+								<TreeViewItem Header="July"></TreeViewItem>
+								<TreeViewItem Header="August"></TreeViewItem>
+								<TreeViewItem Header="September"></TreeViewItem>
+								<TreeViewItem Header="October"></TreeViewItem>
+								<TreeViewItem Header="November"></TreeViewItem>
+								<TreeViewItem Header="December"></TreeViewItem>
+							</TreeViewItem>
+						</TreeView>
+					</ad:DockableContent>
+					<ad:DockableContent x:Name="stocksContent" Title="Stocks">
+						<ListBox>
+							<ListBoxItem Content="ARX.TO" />
+							<ListBoxItem Content="TD.TO" />
+						</ListBox>
+					</ad:DockableContent>
+				</ad:DockablePane>
+				<ad:DocumentPane Name="Tabs"></ad:DocumentPane>
+			</ad:ResizingPanel>
+		</ad:DockingManager>
+		<views:StatusBarRegion x:Name="StatusBar" Grid.Row="3"></views:StatusBarRegion>
+		<views:TrayIcon x:Name="TaskBarIcon" />
+	</Grid>
+</Window>
\ No newline at end of file
product/desktop.ui/views/Shell.xaml.cs
@@ -20,6 +20,7 @@ namespace solidware.financials.windows.ui.views
                           {Menu.GetType(), Menu},
                           {DockManager.GetType(), DockManager},
                           {Tabs.GetType(), Tabs},
+                          {ResizingPanel.GetType(), ResizingPanel},
                           {ButtonBar.GetType(), ButtonBar},
                           {TaskBarIcon.GetType(), TaskBarIcon},
                       };
@@ -42,6 +43,11 @@ namespace solidware.financials.windows.ui.views
             configure(regions[typeof (Region)].downcast_to<Region>());
         }
 
+        public void region<Region>(Configuration<Region> configuration) where Region : UIElement
+        {
+            region<Region>(x => configuration.configure(x));
+        }
+
         void ensure_that_the_region_exists<Region>()
         {
             if (!regions.ContainsKey(typeof (Region)))
product/desktop.ui/views/ShellWIndow.xaml.cs
@@ -29,6 +29,11 @@ namespace solidware.financials.windows.ui.views
             configure(regions[typeof (Region)].downcast_to<Region>());
         }
 
+        public void region<Region>(Configuration<Region> configuration) where Region : UIElement
+        {
+            region<Region>(x => configuration.configure(x));
+        }
+
         void ensure_that_the_region_exists<Region>()
         {
             if (!regions.ContainsKey(typeof (Region)))
product/desktop.ui/RegionManager.cs
@@ -1,10 +1,12 @@
 using System;
 using System.Windows;
+using gorilla.utility;
 
 namespace solidware.financials.windows.ui
 {
     public interface RegionManager
     {
-        void region<Control>(Action<Control> configure) where Control : UIElement;
+        void region<Region>(Action<Region> configure) where Region : UIElement;
+        void region<Region>(Configuration<Region> configure) where Region : UIElement;
     }
 }
\ No newline at end of file
product/desktop.ui/solidware.financials.csproj
@@ -149,6 +149,7 @@
     <Compile Include="SimpleCommand.cs" />
     <Compile Include="Tab.cs" />
     <Compile Include="TabPresenter.cs" />
+    <Compile Include="TabRegionConfiguration.cs" />
     <Compile Include="UICommand.cs" />
     <Compile Include="UICommandBuilder.cs" />
     <Compile Include="UISpecification.cs" />
product/desktop.ui/TabRegionConfiguration.cs
@@ -0,0 +1,41 @@
+using System.Windows;
+using AvalonDock;
+using gorilla.utility;
+
+namespace solidware.financials.windows.ui
+{
+    public class TabRegionConfiguration :
+        //Configuration<ResizingPanel>,
+        Configuration<DocumentPane>
+    {
+        readonly TabPresenter presenter;
+        readonly FrameworkElement view;
+
+        public TabRegionConfiguration(TabPresenter presenter, FrameworkElement view)
+        {
+            this.presenter = presenter;
+            this.view = view;
+        }
+
+        public void configure(ResizingPanel panel)
+        {
+            var pane = new DocumentPane();
+            pane.Items.Add(new DocumentContent
+                           {
+                               Title = presenter.Header,
+                               Content = view,
+                           });
+            panel.Children.Add(pane);
+        }
+
+        public void configure(DocumentPane item)
+        {
+            item.Items.Add(new DocumentContent
+                           {
+                               Title = presenter.Header,
+                               Content = view,
+                               IsCloseable = false
+                           });
+        }
+    }
+}
\ No newline at end of file
product/desktop.ui/WPFApplicationController.cs
@@ -1,6 +1,5 @@
 using System;
 using System.Windows;
-using AvalonDock;
 using solidware.financials.infrastructure.eventing;
 
 namespace solidware.financials.windows.ui
@@ -11,8 +10,7 @@ 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;
@@ -24,11 +22,7 @@ namespace solidware.financials.windows.ui
             var presenter = open<Presenter>();
             var view = new View();
             view.bind_to(presenter);
-            configure_region<DocumentPane>(x => x.Items.Add(new DocumentContent
-            {
-                Title = presenter.Header,
-                Content = view,
-            }));
+            region_manager.region(new TabRegionConfiguration(presenter,view));
         }
 
         public void load_region<TPresenter, Region>() where TPresenter : Presenter where Region : FrameworkElement, View<TPresenter>, new()