From bf916321c964812522d4ade186ca9f06db270b0a Mon Sep 17 00:00:00 2001 From: Peter Forstmeier Date: Sat, 15 Jun 2013 22:29:54 +0200 Subject: [PATCH] ContainerConverter --- .../ICSharpCode.Reporting.csproj | 1 - .../Src/PageBuilder/BasePageBuilder.cs | 8 ++- .../Converter/ContainerConverter.cs | 52 ++++++++++--------- .../Converter/DataContainerConverter.cs | 51 ------------------ .../Converter/IContainerConverter.cs | 8 +-- .../Src/PageBuilder/DataPageBuilder.cs | 34 +++++++----- .../PageBuilder/ContainerConverterFixture.cs | 29 ++++------- 7 files changed, 68 insertions(+), 115 deletions(-) delete mode 100644 src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/DataContainerConverter.cs diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj index 3ba32fd760..3e8ec3e53e 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj @@ -123,7 +123,6 @@ - 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 4d5ed84bc9..46d38b2624 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs @@ -101,8 +101,12 @@ namespace ICSharpCode.Reporting.PageBuilder protected IExportContainer CreateSection(IReportContainer container,Point location) { - var containerConverter = new ContainerConverter(Graphics, container, location); - var convertedContainer = containerConverter.Convert(); + var containerConverter = new ContainerConverter(Graphics, location); + var convertedContainer = containerConverter.Convert(container); + var list = containerConverter.CreateConvertedList(container,convertedContainer); + convertedContainer.ExportedItems.AddRange(list); + containerConverter.Measure(convertedContainer); + containerConverter.ArrangeContainer(convertedContainer); return convertedContainer; } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs index a079d82254..2821e06bd7 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs @@ -22,63 +22,65 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter /// internal class ContainerConverter : IContainerConverter { - - public ContainerConverter(Graphics graphics, IReportContainer reportContainer, Point currentLocation) + public ContainerConverter(Graphics graphics, Point currentLocation) { if (graphics == null) { throw new ArgumentNullException("graphics"); } - if (reportContainer == null) { - throw new ArgumentNullException("reportContainer"); - } - Graphics = graphics; - Container = reportContainer; CurrentLocation = currentLocation; } - public virtual IExportContainer Convert() + public virtual IExportContainer Convert(IReportContainer reportContainer) { - var exportContainer = CreateExportContainer(); - var itemsList = CreateConvertedList(exportContainer,Point.Empty); - exportContainer.ExportedItems.AddRange(itemsList); - ArrangeContainer(exportContainer); - return exportContainer; - } - - - protected ExportContainer CreateExportContainer() - { - var exportContainer = (ExportContainer)Container.CreateExportColumn(); + Console.WriteLine(); + Console.WriteLine("Convert {0}",reportContainer.Name); + var exportContainer = (ExportContainer)reportContainer.CreateExportColumn(); exportContainer.Location = CurrentLocation; exportContainer.DesiredSize = Measure(exportContainer); return exportContainer; } - protected List CreateConvertedList(IExportContainer exportContainer,Point position) + public List CreateConvertedList(IReportContainer reportContainer,IExportContainer exportContainer,Point position) { + Console.WriteLine("CreateConvertedList {0}",reportContainer.Name); var itemsList = new List(); - foreach (var element in Container.Items) { + foreach (var element in reportContainer.Items) { var exportColumn = ExportColumnFactory.CreateItem(element); exportColumn.Parent = exportContainer; exportColumn.Location = new Point(element.Location.X,element.Location.Y + position.Y); - exportColumn.DesiredSize = Measure(exportColumn); itemsList.Add(exportColumn); } return itemsList; } - - Size Measure(IExportColumn element) + public List CreateConvertedList(IReportContainer reportContainer,IExportContainer exportContainer) + { + Console.WriteLine("CreateConvertedList {0}",reportContainer.Name); + var itemsList = new List(); + foreach (var element in reportContainer.Items) { + var exportColumn = ExportColumnFactory.CreateItem(element); + exportColumn.Parent = exportContainer; +// exportColumn.Location = new Point(element.Location.X,element.Location.Y + exportContainer.Location.Y); +// exportColumn.Location = new Point(element.Location.X,element.Location.Y + position.Y); +// exportColumn.DesiredSize = Measure(exportColumn); + itemsList.Add(exportColumn); + } + return itemsList; + } + + public Size Measure(IExportColumn element) { + Console.WriteLine("Measure {0}",element.Name); var measureStrategy = element.MeasurementStrategy(); return measureStrategy.Measure(element, Graphics); } - protected void ArrangeContainer(IExportContainer exportContainer) + public void ArrangeContainer(IExportContainer exportContainer) { + Console.WriteLine("ArrangeContainer {0}",exportContainer.Name); var exportArrange = exportContainer.GetArrangeStrategy(); exportArrange.Arrange(exportContainer); } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/DataContainerConverter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/DataContainerConverter.cs deleted file mode 100644 index 17ef4af281..0000000000 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/DataContainerConverter.cs +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Created by SharpDevelop. - * User: Peter Forstmeier - * Date: 13.06.2013 - * Time: 11:55 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Linq; -using ICSharpCode.Reporting.DataManager.Listhandling; -using ICSharpCode.Reporting.Factories; -using ICSharpCode.Reporting.Interfaces; -using ICSharpCode.Reporting.Interfaces.Export; -using ICSharpCode.Reporting.Items; -using ICSharpCode.Reporting.PageBuilder.ExportColumns; - -namespace ICSharpCode.Reporting.PageBuilder.Converter -{ - /// - /// Description of DataContainerConverter. - /// - - internal class DataContainerConverter:ContainerConverter - { - - CollectionSource collectionSource; - - public DataContainerConverter(Graphics graphics, IReportContainer reportContainer, - Point currentLocation,CollectionSource collectionSource):base(graphics,reportContainer,currentLocation) - { - if (graphics == null) { - throw new ArgumentNullException("graphics"); - } - if (reportContainer == null) { - throw new ArgumentNullException("reportContainer"); - } - this.collectionSource = collectionSource; - } - - - public List Convert(IExportContainer container,Point position){ - var itemsList = CreateConvertedList(container,position); - ArrangeContainer(container); - return itemsList; - } - } -} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/IContainerConverter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/IContainerConverter.cs index 4b0114cfc3..18bd8a55f6 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/IContainerConverter.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/IContainerConverter.cs @@ -10,15 +10,17 @@ using System; using System.Collections.Generic; using System.Drawing; -using ICSharpCode.Reporting.Factories; using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces.Export; -using ICSharpCode.Reporting.PageBuilder.ExportColumns; namespace ICSharpCode.Reporting.PageBuilder.Converter { internal interface IContainerConverter { - IExportContainer Convert(); + IExportContainer Convert(IReportContainer reportContainer); + List CreateConvertedList(IReportContainer reportContainer,IExportContainer exportContainer); + List CreateConvertedList(IReportContainer reportContainer,IExportContainer exportContainer,Point position); + Size Measure(IExportColumn element); + void ArrangeContainer(IExportContainer exportContainer); } } 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 ba6f1cf7bb..ad31f50ab9 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs @@ -33,7 +33,6 @@ namespace ICSharpCode.Reporting.PageBuilder public override void BuildExportList() { - var m = base.ReportModel; base.BuildExportList(); CurrentPage = CreateNewPage (); WriteStandardSections(); @@ -52,25 +51,22 @@ namespace ICSharpCode.Reporting.PageBuilder collectionSource.Bind(); CurrentLocation = DetailStart; - var converter = new DataContainerConverter(base.Graphics,ReportModel.DetailSection, - CurrentLocation, - collectionSource); - + var position = ResetPosition(); + var converter = new ContainerConverter(base.Graphics, CurrentLocation); +// var converter = new ContainerConverter(base.Graphics, position); detail = CreateContainerForSection(DetailStart); - var position = Point.Empty; + do { collectionSource.Fill(Container.Items); - var convertedItems = converter.Convert(detail,position); + var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection,detail,position); if (PageFull(convertedItems)) { detail.ExportedItems.AddRange(convertedItems); CurrentPage.ExportedItems.Insert(2,detail); Pages.Add(CurrentPage); - var aa = detail.GetArrangeStrategy(); - aa.Arrange(detail); - - - position = Point.Empty; + MeasureAndArrangeContainer(converter,detail); + + position = ResetPosition(); CurrentPage = CreateNewPage(); WriteStandardSections(); CurrentLocation = DetailStart; @@ -78,6 +74,7 @@ namespace ICSharpCode.Reporting.PageBuilder } else { detail.ExportedItems.AddRange(convertedItems); + MeasureAndArrangeContainer(converter,detail); position = new Point(Container.Location.Y,position.Y + Container.Size.Height); } } @@ -93,6 +90,15 @@ namespace ICSharpCode.Reporting.PageBuilder } } + Point ResetPosition () { + return Point.Empty; + } + void MeasureAndArrangeContainer(ContainerConverter converter,IExportContainer detail) + { + converter.Measure(detail); + converter.ArrangeContainer(detail); + } + IExportContainer CreateContainerForSection(Point location ) { @@ -102,9 +108,9 @@ namespace ICSharpCode.Reporting.PageBuilder } - bool PageFull(System.Collections.Generic.List column) + bool PageFull(System.Collections.Generic.List columns) { - var rect = new Rectangle(column[0].Location,column[0].Size); + var rect = new Rectangle(columns[0].Location,columns[0].Size); if (rect.Contains(new Point(100,500))) { return true; } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerConverterFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerConverterFixture.cs index 90808df8b0..0912faacfc 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerConverterFixture.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerConverterFixture.cs @@ -8,13 +8,11 @@ */ using System; using System.Drawing; -using ICSharpCode.Reporting.DataManager.Listhandling; using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.Items; using ICSharpCode.Reporting.PageBuilder.Converter; using NUnit.Framework; -using ICSharpCode.Reporting.Test.DataSource; namespace ICSharpCode.Reporting.Test.PageBuilder { @@ -26,8 +24,8 @@ namespace ICSharpCode.Reporting.Test.PageBuilder [Test] public void ConverterReturnExportContainer() { - var converter = new ContainerConverter(graphics,container,new Point(30,30)); - var result = converter.Convert(); + var converter = new ContainerConverter(graphics,new Point(30,30)); + var result = converter.Convert(container); Assert.That(result,Is.InstanceOf(typeof(IExportContainer))); } @@ -35,8 +33,10 @@ namespace ICSharpCode.Reporting.Test.PageBuilder [Test] public void ConverterReturnExportContainerwithTwoItems() { - var converter = new ContainerConverter(graphics,container,new Point(30,30)); - var result = converter.Convert(); + var converter = new ContainerConverter(graphics,new Point(30,30)); + var result = converter.Convert(container); + var list = converter.CreateConvertedList(container,result,new Point(30,30)); + result.ExportedItems.AddRange(list); Assert.That(result.ExportedItems.Count,Is.EqualTo(2)); } @@ -44,30 +44,21 @@ namespace ICSharpCode.Reporting.Test.PageBuilder [Test] public void LocationIsAdjusted() { var location = new Point(30,30); - var converter = new ContainerConverter(graphics,container,location); - var result = converter.Convert(); + var converter = new ContainerConverter(graphics,location); + var result = converter.Convert(container); Assert.That(result.Location,Is.EqualTo(location)); } [Test] public void ParentInChildsIsSet () { - var converter = new ContainerConverter(graphics,container,container.Location); - var result = converter.Convert(); + var converter = new ContainerConverter(graphics,container.Location); + var result = converter.Convert(container); foreach (var element in result.ExportedItems) { Assert.That(element.Parent,Is.Not.Null); } } - [Test] - public void bla () { - var contributorList = new ContributorsList(); - var list = contributorList.ContributorCollection; - var cs = new CollectionSource(list,typeof(Contributor),new ReportSettings()); - var converter = new DataContainerConverter(graphics,container,container.Location,cs); - converter.Convert(); - } - [TestFixtureSetUp] public void Init() {