From a6ef0adebc261b66f457418be731880a28622024 Mon Sep 17 00:00:00 2001 From: Peter Forstmeier Date: Sun, 2 Jun 2013 20:14:10 +0200 Subject: [PATCH] Detailsection, Test's to arrange Sections --- .../Src/BaseClasses/Page.cs | 6 ++ .../Src/Interfaces/Export/IExportColumn.cs | 1 + .../Src/PageBuilder/BasePageBuilder.cs | 20 ++++++- .../PageBuilder/ExportColumns/ExportColumn.cs | 6 ++ .../Src/PageBuilder/FormPageBuilder.cs | 57 +++++++++---------- .../src/PageBuilder/BaseConvertFixture.cs | 2 +- .../src/PageBuilder/PageLayoutFixture.cs | 19 +++---- 7 files changed, 66 insertions(+), 45 deletions(-) diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/Page.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/Page.cs index 3feacafeba..b15c026634 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/Page.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/Page.cs @@ -115,5 +115,11 @@ namespace ICSharpCode.Reporting.BaseClasses public bool CanGrow {get;set;} public bool CanShrink {get;set;} + + public Rectangle DisplayRectangle { + get { + return new Rectangle(Location,Size); + } + } } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportColumn.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportColumn.cs index 7f5af7049f..8bed181a92 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportColumn.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportColumn.cs @@ -22,5 +22,6 @@ namespace ICSharpCode.Reporting.Interfaces.Export IArrangeStrategy GetArrangeStrategy(); Size DesiredSize {get;set;} IExportColumn Parent {get;set;} + Rectangle DisplayRectangle {get;} } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs index 1ddd47bd2e..45890030e4 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs @@ -12,8 +12,10 @@ using System.Collections.ObjectModel; using System.Drawing; using ICSharpCode.Reporting.BaseClasses; +using ICSharpCode.Reporting.Globals; using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.PageBuilder.Converter; namespace ICSharpCode.Reporting.PageBuilder { @@ -22,7 +24,7 @@ namespace ICSharpCode.Reporting.PageBuilder /// public class BasePageBuilder:IReportCreator { - + Graphics graphics; public BasePageBuilder(IReportModel reportModel) { @@ -31,6 +33,7 @@ namespace ICSharpCode.Reporting.PageBuilder } ReportModel = reportModel; Pages = new Collection(); + graphics = CreateGraphics.FromSize(reportModel.ReportSettings.PageSize); } @@ -39,6 +42,21 @@ namespace ICSharpCode.Reporting.PageBuilder return new Page(pi,ReportModel.ReportSettings.PageSize); } + protected IExportContainer CreateSection(IReportContainer section,Point location) + { + var containerConverter = new ContainerConverter(graphics, section, location); + var header = containerConverter.Convert(); + return header; + } + + + protected void AddSectionToPage(IExportContainer header) + { + header.Parent = CurrentPage; + CurrentPage.ExportedItems.Add(header); + } + + IPageInfo CreatePageInfo() { var pi = new PageInfo(); diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs index 0349793fe5..0b8ec77f96 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs @@ -45,5 +45,11 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns public bool CanGrow {get;set;} + + public Rectangle DisplayRectangle { + get { + return new Rectangle(Location,Size); + } + } } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs index ae666080bb..b8331e69fa 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs @@ -9,13 +9,10 @@ using System; using System.Drawing; using System.Linq; -using ICSharpCode.Reporting.BaseClasses; -using ICSharpCode.Reporting.Exporter; + using ICSharpCode.Reporting.Globals; using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces.Export; -using ICSharpCode.Reporting.PageBuilder.Converter; -using ICSharpCode.Reporting.PageBuilder.ExportColumns; namespace ICSharpCode.Reporting.PageBuilder { @@ -24,11 +21,12 @@ namespace ICSharpCode.Reporting.PageBuilder /// public class FormPageBuilder:BasePageBuilder { - Graphics graphics; + + Point detailStart; public FormPageBuilder(IReportModel reportModel):base(reportModel) { - graphics = CreateGraphics.FromSize(reportModel.ReportSettings.PageSize); + } @@ -42,26 +40,27 @@ namespace ICSharpCode.Reporting.PageBuilder void BuildReportHeader() { if (Pages.Count == 0) { - var containerConverter = new ContainerConverter(graphics,ReportModel.ReportHeader,CurrentLocation); - var header = containerConverter.Convert(); - header.Parent = CurrentPage; - CurrentPage.ExportedItems.Add(header); + IExportContainer header = CreateSection(ReportModel.ReportHeader,CurrentLocation); var r = new Rectangle(header.Location.X,header.Location.Y,header.Size.Width,header.Size.Height); - CurrentLocation = new Point (ReportModel.ReportSettings.LeftMargin,r.Bottom + 5); + CurrentLocation = new Point (ReportModel.ReportSettings.LeftMargin,r.Bottom + 1); + AddSectionToPage(header); } } void BuildPageHeader() { - var containerConverter = new ContainerConverter(graphics,ReportModel.PageHeader,CurrentLocation); - var header = containerConverter.Convert(); - header.Parent = CurrentPage; - CurrentPage.ExportedItems.Add(header); + IExportContainer header = CreateSection(ReportModel.PageHeader,CurrentLocation); + detailStart = new Point(ReportModel.ReportSettings.LeftMargin,header.Location.Y + header.Size.Height +1); + AddSectionToPage(header); } void BuilDetail() { Console.WriteLine("FormPageBuilder - Build DetailSection {0} - {1} - {2}",ReportModel.ReportSettings.PageSize.Width,ReportModel.ReportSettings.LeftMargin,ReportModel.ReportSettings.RightMargin); + CurrentLocation = detailStart; + IExportContainer header = CreateSection(ReportModel.DetailSection,CurrentLocation); + header.Parent = CurrentPage; + CurrentPage.ExportedItems.Insert(2,header); } @@ -70,26 +69,21 @@ namespace ICSharpCode.Reporting.PageBuilder Console.WriteLine("FormPageBuilder - Build PageFooter {0} - {1}",ReportModel.ReportSettings.PageSize.Height,ReportModel.ReportSettings.BottomMargin); CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin, ReportModel.ReportSettings.PageSize.Height - ReportModel.ReportSettings.BottomMargin - ReportModel.PageFooter.Size.Height); - - var containerConverter = new ContainerConverter(graphics,ReportModel.PageFooter,CurrentLocation); - var header =containerConverter.Convert(); - header.Parent = CurrentPage; - CurrentPage.ExportedItems.Add(header); + + IExportContainer header = CreateSection(ReportModel.PageFooter,CurrentLocation); + AddSectionToPage(header); } - + void BuildReportFooter() { Console.WriteLine("FormPageBuilder - Build ReportFooter {0} - {1}",ReportModel.ReportSettings.PageSize.Height,ReportModel.ReportSettings.BottomMargin); -// CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin, -// ReportModel.ReportSettings.PageSize.Height - ReportModel.ReportSettings.BottomMargin - ReportModel.PageFooter.Size.Height); - var x = CurrentPage.ExportedItems.Last(); + var lastSection = CurrentPage.ExportedItems.Last(); CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin, - x.Location.Y + x.Size.Height + 1); - var containerConverter = new ContainerConverter(graphics,ReportModel.ReportFooter,CurrentLocation); - var header =containerConverter.Convert(); - header.Parent = CurrentPage; - CurrentPage.ExportedItems.Add(header); + lastSection.Location.Y - lastSection.Size.Height - 1); + + IExportContainer header = CreateSection(ReportModel.ReportFooter,CurrentLocation); + AddSectionToPage(header); } @@ -99,12 +93,13 @@ namespace ICSharpCode.Reporting.PageBuilder CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin,ReportModel.ReportSettings.TopMargin); this.BuildReportHeader(); BuildPageHeader(); - BuilDetail(); BuildPageFooter(); + BuilDetail(); BuildReportFooter(); base.AddPage(CurrentPage); + Console.WriteLine("------{0}---------",ReportModel.ReportSettings.PageSize); } - + } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/BaseConvertFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/BaseConvertFixture.cs index 36f5f0b025..7b1f09bbb0 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/BaseConvertFixture.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/BaseConvertFixture.cs @@ -25,7 +25,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder public void CurrentPageContainFiveItems() { reportCreator.BuildExportList(); var page = reportCreator.Pages[0]; - Assert.That(page.ExportedItems.Count, Is.EqualTo(4)); + Assert.That(page.ExportedItems.Count, Is.EqualTo(5)); } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs index 70e704e00e..6a4b8a8d02 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs @@ -32,7 +32,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder var y = from s in x where s.GetType() == typeof(ExportContainer) select s; - Assert.That(y.ToList().Count,Is.EqualTo(4)); + Assert.That(y.ToList().Count,Is.EqualTo(5)); Console.WriteLine("-------ShowDebug---------"); var ex = new DebugExporter(reportCreator.Pages); ex.Run(); @@ -43,18 +43,13 @@ namespace ICSharpCode.Reporting.Test.PageBuilder { Point p = Point.Empty; reportCreator.BuildExportList(); - foreach (IPage element in reportCreator.Pages) { - var first = true; - foreach (var item in element.ExportedItems) { - if (! first) { - var p2 = new Point(item.Location.X,item.Location.Y); - Console.WriteLine("{0} - {1}",p2,item.Name); - Assert.That(p2.Y,Is.GreaterThan(p.Y)); - } else { - first = false; - } - p = new Point(item.Location.X,item.Location.Y + item.Size.Height); + foreach (var item in reportCreator.Pages[0].ExportedItems) { + var p2 = new Point(item.Location.X,item.Location.Y); + Console.WriteLine("{0} - {1} - {2}- {3}",p2,item.Size.Height,item.Name,item.DisplayRectangle); + if (item.Name != "ReportFooter") { + Assert.That(p2.Y,Is.GreaterThan(p.Y),item.Name); } + p = new Point(item.Location.X,item.Location.Y + item.Size.Height); } }