diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
index 7b1f15e1bf..0351c2a900 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
@@ -124,6 +124,7 @@
+
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 45890030e4..deeb9bd393 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
@@ -10,6 +10,7 @@ using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Drawing;
+using System.Linq;
using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.Reporting.Globals;
@@ -42,6 +43,66 @@ namespace ICSharpCode.Reporting.PageBuilder
return new Page(pi,ReportModel.ReportSettings.PageSize);
}
+ #region create Sections
+
+ protected void BuildReportHeader()
+ {
+ 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);
+ CurrentLocation = new Point (ReportModel.ReportSettings.LeftMargin,r.Bottom + 1);
+ AddSectionToPage(header);
+ }
+ }
+
+
+ protected void BuildPageHeader()
+ {
+
+ var pageHeader = CreateSection(ReportModel.PageHeader,CurrentLocation);
+ DetailStart = new Point(ReportModel.ReportSettings.LeftMargin,pageHeader.Location.Y + pageHeader.Size.Height +1);
+ AddSectionToPage(pageHeader);
+ }
+
+
+ protected void BuildPageFooter()
+ {
+ 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 pageFooter = CreateSection(ReportModel.PageFooter,CurrentLocation);
+ AddSectionToPage(pageFooter);
+ }
+
+
+ protected void BuildReportFooter()
+ {
+ Console.WriteLine("FormPageBuilder - Build ReportFooter {0} - {1}",ReportModel.ReportSettings.PageSize.Height,ReportModel.ReportSettings.BottomMargin);
+ var lastSection = CurrentPage.ExportedItems.Last();
+ CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin,
+ lastSection.Location.Y - lastSection.Size.Height - 1);
+
+ var reportFooter = CreateSection(ReportModel.ReportFooter,CurrentLocation);
+ AddSectionToPage(reportFooter);
+ }
+
+ #endregion
+
+ protected virtual void WritePages()
+ {
+ CurrentPage = InitNewPage();
+ CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin,ReportModel.ReportSettings.TopMargin);
+ this.BuildReportHeader();
+ BuildPageHeader();
+ BuildPageFooter();
+// BuilDetail();
+ BuildReportFooter();
+// base.AddPage(CurrentPage);
+// Console.WriteLine("------{0}---------",ReportModel.ReportSettings.PageSize);
+ }
+
+
protected IExportContainer CreateSection(IReportContainer section,Point location)
{
var containerConverter = new ContainerConverter(graphics, section, location);
@@ -86,6 +147,8 @@ namespace ICSharpCode.Reporting.PageBuilder
protected IPage CurrentPage {get; set;}
+ protected Point DetailStart {get;private set;}
+
public Collection Pages {get; private set;}
}
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs
new file mode 100644
index 0000000000..ef69d3666f
--- /dev/null
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs
@@ -0,0 +1,56 @@
+/*
+ * Created by SharpDevelop.
+ * User: Peter Forstmeier
+ * Date: 06.06.2013
+ * Time: 20:27
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+using System;
+using System.Collections.Generic;
+using ICSharpCode.Reporting.Items;
+
+namespace ICSharpCode.Reporting.PageBuilder
+{
+ ///
+ /// Description of DataPageBuilder.
+ ///
+ public class DataPageBuilder:BasePageBuilder
+ {
+ public DataPageBuilder(ReportModel reportModel, IEnumerable