Browse Source

PageBreak

reports
Peter Forstmeier 13 years ago
parent
commit
db3c3c58ce
  1. 14
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  2. 13
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs
  3. 82
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs
  4. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs

14
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs

@ -101,9 +101,21 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -101,9 +101,21 @@ namespace ICSharpCode.Reporting.PageBuilder
}
protected bool PageFull(System.Collections.Generic.List<IExportColumn> columns)
protected bool old_PageFull(System.Collections.Generic.List<IExportColumn> columns)
{
var rectToPrint = new Rectangle(columns[0].Location,columns[0].Size);
Console.WriteLine("{0} - {1}",CurrentLocation,rectToPrint.ToString());
if (rectToPrint.Bottom > DetailEnds.Y) {
Console.WriteLine("----------PB---");
return true;
}
return false;
}
protected bool PageFull(IExportContainer row) {
var rectToPrint = new Rectangle(row.Location,row.DesiredSize);
if (rectToPrint.Bottom > DetailEnds.Y) {
return true;
}

13
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs

@ -36,7 +36,6 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter @@ -36,7 +36,6 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
{
var exportContainer = (ExportContainer)reportContainer.CreateExportColumn();
exportContainer.Location = CurrentLocation;
// exportContainer.DesiredSize = Measure(exportContainer);
return exportContainer;
}
@ -44,7 +43,7 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter @@ -44,7 +43,7 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
public List<IExportColumn> CreateConvertedList(IReportContainer reportContainer,
IExportContainer exportContainer,
Point position){
Console.WriteLine("CreateConvertedList {0}",reportContainer.Name);
var itemsList = new List<IExportColumn>();
foreach (var item in reportContainer.Items) {
var exportColumn = ExportColumnFactory.CreateItem(item);
@ -58,7 +57,7 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter @@ -58,7 +57,7 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
public List<IExportColumn> CreateConvertedList(IReportContainer reportContainer
,IExportContainer exportContainer){
// Console.WriteLine("CreateConvertedList {0}",reportContainer.Name);
Console.WriteLine("CreateConvertedList {0}",reportContainer.Name);
var itemsList = new List<IExportColumn>();
foreach (var element in reportContainer.Items) {
var exportColumn = ExportColumnFactory.CreateItem(element);
@ -71,14 +70,6 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter @@ -71,14 +70,6 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
return itemsList;
}
/*
public void ArrangeContainer(IExportContainer exportContainer)
{
Console.WriteLine("ArrangeContainer {0}",exportContainer.Name);
var exportArrange = exportContainer.GetArrangeStrategy();
exportArrange.Arrange(exportContainer);
}
*/
internal IReportContainer Container { get; private set; }

82
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs

@ -62,7 +62,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -62,7 +62,7 @@ namespace ICSharpCode.Reporting.PageBuilder
do {
collectionSource.Fill(CurrentSection.Items);
var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection,detail,position);
if (PageFull(convertedItems)) {
if (old_PageFull(convertedItems)) {
detail.ExportedItems.AddRange(convertedItems);
CurrentPage.ExportedItems.Insert(2,detail);
Pages.Add(CurrentPage);
@ -93,7 +93,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -93,7 +93,7 @@ namespace ICSharpCode.Reporting.PageBuilder
}
void BuildDetail()
void aa_1_BuildDetail()
{
CurrentSection = ReportModel.DetailSection;
@ -110,11 +110,34 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -110,11 +110,34 @@ namespace ICSharpCode.Reporting.PageBuilder
var row = CreateContainerIfNotExist(CurrentSection,detail, position);
collectionSource.Fill(CurrentSection.Items);
//var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection,row);
var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection,row,position);
MeasureAndArrangeContainer(converter,row);
row.ExportedItems.AddRange(convertedItems);
if (PageFull(convertedItems)) {
/*
var rr = new Rectangle(row.Location,row.DesiredSize);
if (rr.Bottom >DetailEnds.Y) {
Console.WriteLine("new pagebreak {0} - {1}",rr.ToString(),DetailEnds.Y);
InsertDetailAtPosition(detail);
Pages.Add(CurrentPage);
CurrentPage = CreateNewPage();
WriteStandardSections();
position = ResetPosition();
detail = CreateDetail(DetailStart);
CurrentLocation = DetailStart;
row = CreateContainerIfNotExist(CurrentSection,detail,position);
// var recreate = converter.CreateConvertedList(ReportModel.DetailSection,row,position);
var recreate = converter.CreateConvertedList(ReportModel.DetailSection,row);
MeasureAndArrangeContainer(converter,row);
row.ExportedItems.AddRange(recreate);
}
*/
if (old_PageFull(convertedItems)) {
InsertDetailAtPosition(detail);
Pages.Add(CurrentPage);
CurrentPage = CreateNewPage();
@ -125,9 +148,11 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -125,9 +148,11 @@ namespace ICSharpCode.Reporting.PageBuilder
row = CreateContainerIfNotExist(CurrentSection,detail,position);
var recreate = converter.CreateConvertedList(ReportModel.DetailSection,row,position);
// var recreate = converter.CreateConvertedList(ReportModel.DetailSection,row);
MeasureAndArrangeContainer(converter,row);
row.ExportedItems.AddRange(recreate);
}
detail.ExportedItems.Add(row);
position = new Point(CurrentSection.Location.Y,position.Y + CurrentSection.Size.Height);
}
@ -144,6 +169,57 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -144,6 +169,57 @@ namespace ICSharpCode.Reporting.PageBuilder
}
void BuildDetail()
{
var converter = new ContainerConverter(base.Graphics, CurrentLocation);
var position = DetailStart;
CurrentSection = ReportModel.DetailSection;
var collectionSource = new CollectionSource(List,ElementType,ReportModel.ReportSettings);
IExportContainer detail = null;
if(collectionSource.Count > 0) {
collectionSource.Bind();
detail = CreateDetail(DetailStart);
do {
var row = CreateContainerIfNotExist(CurrentSection,detail, position);
collectionSource.Fill(CurrentSection.Items);
var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection,row);
MeasureAndArrangeContainer(converter,row);
row.ExportedItems.AddRange(convertedItems);
if (PageFull(row)) {
InsertDetailAtPosition(detail);
Pages.Add(CurrentPage);
CurrentPage = CreateNewPage();
WriteStandardSections();
position = ResetPosition();
detail = CreateDetail(DetailStart);
CurrentLocation = DetailStart;
row = CreateContainerIfNotExist(CurrentSection,detail,position);
var recreate = converter.CreateConvertedList(ReportModel.DetailSection,row);
MeasureAndArrangeContainer(converter,row);
row.ExportedItems.AddRange(recreate);
}
detail.ExportedItems.Add(row);
position = new Point(CurrentSection.Location.Y,position.Y + CurrentSection.Size.Height);
}
while (collectionSource.MoveNext());
InsertDetailAtPosition(detail);
} else {
detail = CreateContainerForSection(DetailStart);
InsertDetailAtPosition(detail);
base.BuildReportFooter();
}
}
IExportContainer CreateContainerIfNotExist(IReportContainer container, IExportContainer parent, Point position)
{

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs

@ -8,7 +8,6 @@ @@ -8,7 +8,6 @@
*/
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;

Loading…
Cancel
Save