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. 57
      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. 19
      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
public bool CanGrow {get;set;} public bool CanGrow {get;set;}
public bool CanShrink {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
IArrangeStrategy GetArrangeStrategy(); IArrangeStrategy GetArrangeStrategy();
Size DesiredSize {get;set;} Size DesiredSize {get;set;}
IExportColumn Parent {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;
using System.Drawing; using System.Drawing;
using ICSharpCode.Reporting.BaseClasses; using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.Reporting.Globals;
using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.Converter;
namespace ICSharpCode.Reporting.PageBuilder namespace ICSharpCode.Reporting.PageBuilder
{ {
@ -22,7 +24,7 @@ namespace ICSharpCode.Reporting.PageBuilder
/// </summary> /// </summary>
public class BasePageBuilder:IReportCreator public class BasePageBuilder:IReportCreator
{ {
Graphics graphics;
public BasePageBuilder(IReportModel reportModel) public BasePageBuilder(IReportModel reportModel)
{ {
@ -31,6 +33,7 @@ namespace ICSharpCode.Reporting.PageBuilder
} }
ReportModel = reportModel; ReportModel = reportModel;
Pages = new Collection<IPage>(); Pages = new Collection<IPage>();
graphics = CreateGraphics.FromSize(reportModel.ReportSettings.PageSize);
} }
@ -39,6 +42,21 @@ namespace ICSharpCode.Reporting.PageBuilder
return new Page(pi,ReportModel.ReportSettings.PageSize); 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() IPageInfo CreatePageInfo()
{ {
var pi = new PageInfo(); 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
public bool CanGrow {get;set;} public bool CanGrow {get;set;}
public Rectangle DisplayRectangle {
get {
return new Rectangle(Location,Size);
}
}
} }
} }

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

@ -9,13 +9,10 @@
using System; using System;
using System.Drawing; using System.Drawing;
using System.Linq; using System.Linq;
using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Globals; using ICSharpCode.Reporting.Globals;
using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.Converter;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.PageBuilder namespace ICSharpCode.Reporting.PageBuilder
{ {
@ -24,11 +21,12 @@ namespace ICSharpCode.Reporting.PageBuilder
/// </summary> /// </summary>
public class FormPageBuilder:BasePageBuilder public class FormPageBuilder:BasePageBuilder
{ {
Graphics graphics;
Point detailStart;
public FormPageBuilder(IReportModel reportModel):base(reportModel) public FormPageBuilder(IReportModel reportModel):base(reportModel)
{ {
graphics = CreateGraphics.FromSize(reportModel.ReportSettings.PageSize);
} }
@ -42,26 +40,27 @@ namespace ICSharpCode.Reporting.PageBuilder
void BuildReportHeader() void BuildReportHeader()
{ {
if (Pages.Count == 0) { if (Pages.Count == 0) {
var containerConverter = new ContainerConverter(graphics,ReportModel.ReportHeader,CurrentLocation); IExportContainer header = CreateSection(ReportModel.ReportHeader,CurrentLocation);
var header = containerConverter.Convert();
header.Parent = CurrentPage;
CurrentPage.ExportedItems.Add(header);
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 + 5); CurrentLocation = new Point (ReportModel.ReportSettings.LeftMargin,r.Bottom + 1);
AddSectionToPage(header);
} }
} }
void BuildPageHeader() void BuildPageHeader()
{ {
var containerConverter = new ContainerConverter(graphics,ReportModel.PageHeader,CurrentLocation); IExportContainer header = CreateSection(ReportModel.PageHeader,CurrentLocation);
var header = containerConverter.Convert(); detailStart = new Point(ReportModel.ReportSettings.LeftMargin,header.Location.Y + header.Size.Height +1);
header.Parent = CurrentPage; AddSectionToPage(header);
CurrentPage.ExportedItems.Add(header);
} }
void BuilDetail() void BuilDetail()
{ {
Console.WriteLine("FormPageBuilder - Build DetailSection {0} - {1} - {2}",ReportModel.ReportSettings.PageSize.Width,ReportModel.ReportSettings.LeftMargin,ReportModel.ReportSettings.RightMargin); 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);
} }
@ -70,26 +69,21 @@ namespace ICSharpCode.Reporting.PageBuilder
Console.WriteLine("FormPageBuilder - Build PageFooter {0} - {1}",ReportModel.ReportSettings.PageSize.Height,ReportModel.ReportSettings.BottomMargin); Console.WriteLine("FormPageBuilder - Build PageFooter {0} - {1}",ReportModel.ReportSettings.PageSize.Height,ReportModel.ReportSettings.BottomMargin);
CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin, CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin,
ReportModel.ReportSettings.PageSize.Height - ReportModel.ReportSettings.BottomMargin - ReportModel.PageFooter.Size.Height); ReportModel.ReportSettings.PageSize.Height - ReportModel.ReportSettings.BottomMargin - ReportModel.PageFooter.Size.Height);
var containerConverter = new ContainerConverter(graphics,ReportModel.PageFooter,CurrentLocation); IExportContainer header = CreateSection(ReportModel.PageFooter,CurrentLocation);
var header =containerConverter.Convert(); AddSectionToPage(header);
header.Parent = CurrentPage;
CurrentPage.ExportedItems.Add(header);
} }
void BuildReportFooter() void BuildReportFooter()
{ {
Console.WriteLine("FormPageBuilder - Build ReportFooter {0} - {1}",ReportModel.ReportSettings.PageSize.Height,ReportModel.ReportSettings.BottomMargin); Console.WriteLine("FormPageBuilder - Build ReportFooter {0} - {1}",ReportModel.ReportSettings.PageSize.Height,ReportModel.ReportSettings.BottomMargin);
// CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin, var lastSection = CurrentPage.ExportedItems.Last();
// ReportModel.ReportSettings.PageSize.Height - ReportModel.ReportSettings.BottomMargin - ReportModel.PageFooter.Size.Height);
var x = CurrentPage.ExportedItems.Last();
CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin, CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin,
x.Location.Y + x.Size.Height + 1); lastSection.Location.Y - lastSection.Size.Height - 1);
var containerConverter = new ContainerConverter(graphics,ReportModel.ReportFooter,CurrentLocation);
var header =containerConverter.Convert(); IExportContainer header = CreateSection(ReportModel.ReportFooter,CurrentLocation);
header.Parent = CurrentPage; AddSectionToPage(header);
CurrentPage.ExportedItems.Add(header);
} }
@ -99,12 +93,13 @@ namespace ICSharpCode.Reporting.PageBuilder
CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin,ReportModel.ReportSettings.TopMargin); CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin,ReportModel.ReportSettings.TopMargin);
this.BuildReportHeader(); this.BuildReportHeader();
BuildPageHeader(); BuildPageHeader();
BuilDetail();
BuildPageFooter(); BuildPageFooter();
BuilDetail();
BuildReportFooter(); BuildReportFooter();
base.AddPage(CurrentPage); 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
public void CurrentPageContainFiveItems() { public void CurrentPageContainFiveItems() {
reportCreator.BuildExportList(); reportCreator.BuildExportList();
var page = reportCreator.Pages[0]; var page = reportCreator.Pages[0];
Assert.That(page.ExportedItems.Count, Is.EqualTo(4)); Assert.That(page.ExportedItems.Count, Is.EqualTo(5));
} }

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

@ -32,7 +32,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
var y = from s in x var y = from s in x
where s.GetType() == typeof(ExportContainer) where s.GetType() == typeof(ExportContainer)
select s; select s;
Assert.That(y.ToList().Count,Is.EqualTo(4)); Assert.That(y.ToList().Count,Is.EqualTo(5));
Console.WriteLine("-------ShowDebug---------"); Console.WriteLine("-------ShowDebug---------");
var ex = new DebugExporter(reportCreator.Pages); var ex = new DebugExporter(reportCreator.Pages);
ex.Run(); ex.Run();
@ -43,18 +43,13 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
{ {
Point p = Point.Empty; Point p = Point.Empty;
reportCreator.BuildExportList(); reportCreator.BuildExportList();
foreach (IPage element in reportCreator.Pages) { foreach (var item in reportCreator.Pages[0].ExportedItems) {
var first = true; var p2 = new Point(item.Location.X,item.Location.Y);
foreach (var item in element.ExportedItems) { Console.WriteLine("{0} - {1} - {2}- {3}",p2,item.Size.Height,item.Name,item.DisplayRectangle);
if (! first) { if (item.Name != "ReportFooter") {
var p2 = new Point(item.Location.X,item.Location.Y); Assert.That(p2.Y,Is.GreaterThan(p.Y),item.Name);
Console.WriteLine("{0} - {1}",p2,item.Name);
Assert.That(p2.Y,Is.GreaterThan(p.Y));
} else {
first = false;
}
p = new Point(item.Location.X,item.Location.Y + item.Size.Height);
} }
p = new Point(item.Location.X,item.Location.Y + item.Size.Height);
} }
} }

Loading…
Cancel
Save