Browse Source

Detailsection, Test's to arrange Sections

reports
Peter Forstmeier 12 years ago
parent
commit
a6ef0adebc
  1. 6
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/Page.cs
  2. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportColumn.cs
  3. 20
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  4. 6
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs
  5. 51
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs
  6. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/BaseConvertFixture.cs
  7. 15
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs

6
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/Page.cs

@ -115,5 +115,11 @@ namespace ICSharpCode.Reporting.BaseClasses @@ -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);
}
}
}
}

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportColumn.cs

@ -22,5 +22,6 @@ namespace ICSharpCode.Reporting.Interfaces.Export @@ -22,5 +22,6 @@ namespace ICSharpCode.Reporting.Interfaces.Export
IArrangeStrategy GetArrangeStrategy();
Size DesiredSize {get;set;}
IExportColumn Parent {get;set;}
Rectangle DisplayRectangle {get;}
}
}

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

@ -12,8 +12,10 @@ using System.Collections.ObjectModel; @@ -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 @@ -22,7 +24,7 @@ namespace ICSharpCode.Reporting.PageBuilder
/// </summary>
public class BasePageBuilder:IReportCreator
{
Graphics graphics;
public BasePageBuilder(IReportModel reportModel)
{
@ -31,6 +33,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -31,6 +33,7 @@ namespace ICSharpCode.Reporting.PageBuilder
}
ReportModel = reportModel;
Pages = new Collection<IPage>();
graphics = CreateGraphics.FromSize(reportModel.ReportSettings.PageSize);
}
@ -39,6 +42,21 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -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();

6
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs

@ -45,5 +45,11 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns @@ -45,5 +45,11 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
public bool CanGrow {get;set;}
public Rectangle DisplayRectangle {
get {
return new Rectangle(Location,Size);
}
}
}
}

51
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs

@ -9,13 +9,10 @@ @@ -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 @@ -24,11 +21,12 @@ namespace ICSharpCode.Reporting.PageBuilder
/// </summary>
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 @@ -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);
}
@ -71,25 +70,20 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -71,25 +70,20 @@ namespace ICSharpCode.Reporting.PageBuilder
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,10 +93,11 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -99,10 +93,11 @@ 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);
}

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/BaseConvertFixture.cs

@ -25,7 +25,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder @@ -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));
}

15
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs

@ -32,7 +32,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder @@ -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,20 +43,15 @@ namespace ICSharpCode.Reporting.Test.PageBuilder @@ -43,20 +43,15 @@ 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) {
foreach (var item in reportCreator.Pages[0].ExportedItems) {
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;
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);
}
}
}
[SetUp]

Loading…
Cancel
Save