From 429b701d4f4fdf45ab98fee5124e7aa165aaea0f Mon Sep 17 00:00:00 2001 From: Peter Forstmeier Date: Wed, 11 Sep 2013 20:15:37 +0200 Subject: [PATCH] Better PageBreak, including UnitTest's --- .../Src/PageBuilder/BasePageBuilder.cs | 2 +- .../Src/PageBuilder/DataPageBuilder.cs | 28 ++++++------- .../src/Reportingfactory/PushModelFixture.cs | 39 ++++++++++++------- 3 files changed, 38 insertions(+), 31 deletions(-) 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 223eae1286..545841e6a5 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs @@ -49,7 +49,7 @@ namespace ICSharpCode.Reporting.PageBuilder { if (Pages.Count == 0) { var header = CreateSection(ReportModel.ReportHeader,CurrentLocation); - var r = new Rectangle(header.Location.X,header.Location.Y,header.Size.Width,header.Size.Height); + var r = new Rectangle(header.Location.X, header.Location.Y, header.Size.Width, header.Size.Height); CurrentLocation = new Point (ReportModel.ReportSettings.LeftMargin,r.Bottom + 1); AddSectionToPage(header); } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs index e1d6c35d49..05e45807ba 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs @@ -45,7 +45,7 @@ namespace ICSharpCode.Reporting.PageBuilder void BuildDetail() { - List rows = new List(); + var rows = new List(); var converter = new ContainerConverter(base.Graphics, CurrentLocation); var position = DetailStart; @@ -55,18 +55,16 @@ namespace ICSharpCode.Reporting.PageBuilder if(collectionSource.Count > 0) { collectionSource.Bind(); CurrentLocation = DetailStart; - + do { var row = CreateContainerForSection(position); row.Parent = CurrentPage; collectionSource.Fill(CurrentSection.Items); var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection.Items); converter.SetParent(row,convertedItems); -MeasureAndArrangeContainer(row); -// if (PageFull(convertedItems)) { - if (PageFull(row)) { - row.ExportedItems.AddRange(convertedItems); - rows.Add(row); + MeasureAndArrangeContainer(row); + + if (PageFull(row)) { InsertRange(rows); MeasureAndArrangeContainer(row); rows.Clear(); @@ -77,20 +75,18 @@ MeasureAndArrangeContainer(row); CurrentPage = CreateNewPage(); WriteStandardSections(); CurrentLocation = DetailStart; - } else { - row.ExportedItems.AddRange(convertedItems); - rows.Add(row); -// MeasureAndArrangeContainer(row); - position = new Point(CurrentSection.Location.X,position.Y + row.DesiredSize.Height + 5); + + position = DetailStart; + row.Location = position; } + + row.ExportedItems.AddRange(convertedItems); + rows.Add(row); + position = new Point(CurrentSection.Location.X,position.Y + row.DesiredSize.Height + 1); } while (collectionSource.MoveNext()); InsertRange(rows); - - } else { -// detail = CreateContainerForSection(DetailStart); -// InsertDetailAtPosition(detail); } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs index 77ae7d0978..22790f5276 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs @@ -39,8 +39,9 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory [Test] public void CanInitDataPageBuilder() { - var dpb = new DataPageBuilder (new ReportModel(),typeof(string),new System.Collections.Generic.List()); -// dpb.DataSource(new ReportModel(),new System.Collections.Generic.List()); + var dpb = new DataPageBuilder (new ReportModel(), + typeof(string), + new System.Collections.Generic.List()); Assert.That(dpb,Is.Not.Null); } @@ -83,24 +84,34 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory ex.Run(); } - /* + [Test] -// [Ignore] - public void LastPageContains_4_Section() - { + public void ReportContains_2_Pages () { reportCreator.BuildExportList(); - var exporteditems = reportCreator.Pages[1].ExportedItems; - var sections = from s in exporteditems - where s.GetType() == typeof(ExportContainer) - select s; - Assert.That(sections.ToList().Count,Is.EqualTo(4)); + Assert.That(reportCreator.Pages.Count,Is.EqualTo(2)); } - */ + [Test] - public void ReportContains_2_Pages () { + public void LastElementInPageIsPageFooter() { reportCreator.BuildExportList(); - Assert.That(reportCreator.Pages.Count,Is.EqualTo(2)); + + var firstPage = reportCreator.Pages[1].ExportedItems; + var firstElement = firstPage.Last(); + Assert.That(firstElement.Name,Is.EqualTo("ReportFooter")); + + var lastPage = reportCreator.Pages[1].ExportedItems; + var lastElement = lastPage.Last(); + Assert.That(lastElement.Name,Is.EqualTo("ReportFooter")); + } + + + [Test] + public void FirstElementOnScoundPageIsReportHeader() { + reportCreator.BuildExportList(); + var exporteditems = reportCreator.Pages[1].ExportedItems; + var result = exporteditems[0]; + Assert.That(result.Name,Is.EqualTo("ReportPageHeader")); }