Browse Source

Remove double use of ReportModel in DataPageBuilder.cs and Converters/BaseConverter.cs

pull/15/head^2
peterforstmeier 14 years ago
parent
commit
f92fc980aa
  1. 59
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SectionBounds.cs
  2. 5
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/BaseListStrategy.cs
  3. 9
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs
  4. 27
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs
  5. 9
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/ConverterFactory.cs
  6. 32
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs
  7. 8
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs
  8. 16
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs
  9. 10
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Printing/SectionBoundFixture.cs

59
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SectionBounds.cs

@ -20,7 +20,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses @@ -20,7 +20,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses
Rectangle ReportFooterRectangle {get;set;}
Rectangle DetailSectionRectangle{get;set;}
Point DetailStart {get;}
Point DetailEnds {get;}
Rectangle DetailArea {get;}
Size PageSize {get;set;}
bool Landscape{get;}
@ -34,8 +33,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses @@ -34,8 +33,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses
Rectangle pageFooterRectangle;
Rectangle reportFooterRectangle;
Rectangle marginBounds;
Rectangle detailArea;
bool firstPage;
bool landscape;
@ -93,8 +90,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses @@ -93,8 +90,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses
{
Size size = Size.Empty;
if (section.Items.Count > 0) {
// size = new Size(this.marginBounds.Width, section.Size.Height + 3 * GlobalValues.GapBetweenContainer);
// size = new Size(this.marginBounds.Width, section.Size.Height + GlobalValues.GapBetweenContainer);
size = new Size(this.marginBounds.Width, section.Size.Height);
} else {
size = new Size(this.marginBounds.Width, 0);
@ -110,32 +105,13 @@ namespace ICSharpCode.Reports.Core.BaseClasses @@ -110,32 +105,13 @@ namespace ICSharpCode.Reports.Core.BaseClasses
throw new ArgumentNullException("section");
}
// section.SectionOffset = this.reportHeaderRectangle.Bottom + 3 * GlobalValues.GapBetweenContainer;
section.SectionOffset = this.reportHeaderRectangle.Bottom + GlobalValues.GapBetweenContainer;
Size s = CalculateSize(section);
/*
this.pageHeaderRectangle = new Rectangle (this.reportHeaderRectangle.Left,
section.SectionOffset,
this.marginBounds.Width,
section.Size.Height + 3 * GlobalValues.GapBetweenContainer);
*/
// this.pageHeaderRectangle = new Rectangle (this.reportHeaderRectangle.Left,
// section.SectionOffset,
// this.marginBounds.Width,
// section.Size.Height);
this.pageHeaderRectangle = new Rectangle (this.reportHeaderRectangle.Left,
section.SectionOffset,
this.marginBounds.Width,
s.Height);
// Console.WriteLine("---------------");
// Console.WriteLine("\tMeasureReprtHeader {0}",reportHeaderRectangle);
// Console.WriteLine("\tMeasurePageHeader {0}",pageHeaderRectangle);
// Console.WriteLine("\tDetailStart {0}",DetailStart);
// Console.WriteLine("---------------");
}
@ -159,13 +135,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses @@ -159,13 +135,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses
if (section == null) {
throw new ArgumentNullException("section");
}
// The reportFooter is set On Top of PageFooter
// this.reportFooterRectangle = new Rectangle (this.printableArea.Left,
// this.PageFooterRectangle.Top - section.Size.Height ,
// this.marginBounds.Width,
// section.Size.Height);
this.reportFooterRectangle = new Rectangle (this.printableArea.Left,
this.PageFooterRectangle.Top - section.Size.Height - GlobalValues.GapBetweenContainer,
this.marginBounds.Width,
@ -173,18 +142,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses @@ -173,18 +142,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses
section.SectionOffset = this.reportFooterRectangle.Top;
}
//Test
/*
public void MeasureDetailArea ()
{
this.detailArea = new Rectangle (this.DetailStart.X,
this.DetailStart.Y,
this.pageHeaderRectangle.Width,
(this.pageFooterRectangle.Top -1) - (this.pageHeaderRectangle.Bottom + 1));
}
*/
#endregion
#region Properties
@ -239,24 +196,11 @@ namespace ICSharpCode.Reports.Core.BaseClasses @@ -239,24 +196,11 @@ namespace ICSharpCode.Reports.Core.BaseClasses
public Point DetailStart
{
get {
// return new Point(this.pageHeaderRectangle.Left,
// this.pageHeaderRectangle.Bottom + 3 * );
return new Point(this.pageHeaderRectangle.Left,
this.pageHeaderRectangle.Bottom + GlobalValues.GapBetweenContainer );
}
}
//Test
public Point DetailEnds
{
get {
// return new Point(this.pageFooterRectangle.Left,this.pageFooterRectangle.Top - 3 * GlobalValues.GapBetweenContainer);
return new Point(this.pageFooterRectangle.Left,this.pageFooterRectangle.Top - GlobalValues.GapBetweenContainer);
}
}
/// <summary>
/// This rectangle starts directly after PageHeader and ends bevore PageFooter
/// </summary>
@ -266,7 +210,8 @@ namespace ICSharpCode.Reports.Core.BaseClasses @@ -266,7 +210,8 @@ namespace ICSharpCode.Reports.Core.BaseClasses
public Rectangle DetailArea
{
get {
return this.detailArea;
return new Rectangle (new Point (pageHeaderRectangle.X,pageHeaderRectangle.Bottom + GlobalValues.GapBetweenContainer),
new Size(pageFooterRectangle.Location.X,pageFooterRectangle.Top));
}
}

5
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/BaseListStrategy.cs

@ -97,7 +97,7 @@ namespace ICSharpCode.Reports.Core { @@ -97,7 +97,7 @@ namespace ICSharpCode.Reports.Core {
CreateGroupedChildren(childList,element);
compVal = groupValue;
}
ShowIndexList(IndexList);
// ShowIndexList(IndexList);
}
@ -135,11 +135,9 @@ namespace ICSharpCode.Reports.Core { @@ -135,11 +135,9 @@ namespace ICSharpCode.Reports.Core {
foreach (BaseComparer element in list) {
string s = String.Format("{0} ",element.ObjectArray[0]);
GroupComparer gc = element as GroupComparer;
if ( gc != null) {
s = s + "GroupHeader";
if (gc.IndexList != null) {
s = s + String.Format(" <{0}> Childs",gc.IndexList.Count);
}
System.Console.WriteLine(s);
@ -150,6 +148,7 @@ namespace ICSharpCode.Reports.Core { @@ -150,6 +148,7 @@ namespace ICSharpCode.Reports.Core {
}
}
#endregion
public virtual void Reset()

9
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs

@ -81,7 +81,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -81,7 +81,7 @@ namespace ICSharpCode.Reports.Core.Exporter
PrintHelper.AdjustSectionLocation(section);
var convertedSection = new ExporterCollection();
Offset = new Point(section.Location.X,section.SectionOffset);
Point startOffset = Offset;
Point startOffset = Offset;
if (section.Items.Count > 0) {
section.Items.SortByLocation();
@ -362,6 +362,13 @@ foreach (var element in section.Items) @@ -362,6 +362,13 @@ foreach (var element in section.Items)
#endregion
protected void DebugShowSections ()
{
Console.WriteLine("\treportheader {0}",SectionBounds.ReportHeaderRectangle);
Console.WriteLine("\tpageheader {0}",SectionBounds.PageHeaderRectangle);
Console.WriteLine("\tdetail {0}",SectionBounds.DetailArea);
}
#region Property's
protected Point Offset {get;set;}

27
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs

@ -30,7 +30,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -30,7 +30,7 @@ namespace ICSharpCode.Reports.Core.Exporter
public event EventHandler<RowRenderEventArgs> RowRendering;
public BaseConverter(IDataNavigator dataNavigator,ExporterPage singlePage)
public BaseConverter(IReportModel reportModel,IDataNavigator dataNavigator,ExporterPage singlePage)
{
if (dataNavigator == null) {
throw new ArgumentNullException("dataNavigator");
@ -38,11 +38,10 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -38,11 +38,10 @@ namespace ICSharpCode.Reports.Core.Exporter
if (singlePage == null) {
throw new ArgumentNullException("singlePage");
}
this.ReportModel = reportModel;
this.SinglePage = singlePage;
this.DataNavigator = dataNavigator;
SectionBounds = this.SinglePage.SectionBounds;
this.Layouter = (ILayouter)ServiceContainer.GetService(typeof(ILayouter));
this.Evaluator = EvaluationHelper.CreateEvaluator(this.SinglePage,this.DataNavigator);
}
@ -53,8 +52,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -53,8 +52,7 @@ namespace ICSharpCode.Reports.Core.Exporter
protected void BuildNewPage(ExporterCollection myList,BaseSection section)
{
FirePageFull(myList);
section.SectionOffset = SinglePage.SectionBounds.PageHeaderRectangle.Location.Y;
// Console.WriteLine("BuildNewPage with {0} - {1}",SinglePage.SectionBounds.PageHeaderRectangle.Location,section.SectionOffset);
section.SectionOffset = SinglePage.SectionBounds.PageHeaderRectangle.Location.Y;
myList.Clear();
}
@ -90,7 +88,6 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -90,7 +88,6 @@ namespace ICSharpCode.Reports.Core.Exporter
protected void FireGroupFooterRendering (GroupFooter groupFooter)
{
// Console.WriteLine("\tFireGroupFooterRendering");
GroupFooterEventArgs gfea = new GroupFooterEventArgs(groupFooter);
EventHelper.Raise<GroupFooterEventArgs>(GroupFooterRendering,this,gfea);
}
@ -124,6 +121,12 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -124,6 +121,12 @@ namespace ICSharpCode.Reports.Core.Exporter
return null;
}
protected void DebugShowSections ()
{
Console.WriteLine("\treportheader {0}",SectionBounds.ReportHeaderRectangle);
Console.WriteLine("\tpageheader {0}",SectionBounds.PageHeaderRectangle);
Console.WriteLine("\tdetail {0}",SectionBounds.DetailArea);
}
#region Grouping
@ -188,8 +191,14 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -188,8 +191,14 @@ namespace ICSharpCode.Reports.Core.Exporter
public ISinglePage SinglePage {get;private set;}
public SectionBounds SectionBounds {get; private set;}
public SectionBounds SectionBounds
{
get
{
return SinglePage.SectionBounds;
}
}
public IDataNavigator DataNavigator {get;private set;}
public ILayouter Layouter {get; private set;}
@ -198,6 +207,8 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -198,6 +207,8 @@ namespace ICSharpCode.Reports.Core.Exporter
protected IExpressionEvaluatorFacade Evaluator{get;private set;}
protected IReportModel ReportModel {get; private set;}
protected int DefaultLeftPosition {get;set;}
protected void SaveSectionSize(Size size)

9
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/ConverterFactory.cs

@ -14,16 +14,17 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -14,16 +14,17 @@ namespace ICSharpCode.Reports.Core.Exporter
public static class ConverterFactory
{
public static IBaseConverter CreateConverter (BaseReportItem itemToConvert,IDataNavigator dataNavigator,
ExporterPage singlePage)
public static IBaseConverter CreateConverter (BaseReportItem itemToConvert,IReportModel reportModel,
IDataNavigator dataNavigator,ExporterPage singlePage)
{
Type t = itemToConvert.GetType();
if (t.Equals(typeof(BaseTableItem))) {
return new GroupedTableConverter(dataNavigator,singlePage);
return new GroupedTableConverter(reportModel,dataNavigator,singlePage);
}
if (t.Equals(typeof(BaseRowItem))) {
return new GroupedRowConverter (dataNavigator,singlePage);
return new GroupedRowConverter (reportModel,dataNavigator,singlePage);
}
return null;

32
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs

@ -20,8 +20,8 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -20,8 +20,8 @@ namespace ICSharpCode.Reports.Core.Exporter
private BaseReportItem parent;
public GroupedRowConverter(IDataNavigator dataNavigator,
ExporterPage singlePage):base(dataNavigator,singlePage)
public GroupedRowConverter(IReportModel reportModel,IDataNavigator dataNavigator,
ExporterPage singlePage):base(reportModel,dataNavigator,singlePage)
{
}
@ -71,8 +71,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -71,8 +71,7 @@ namespace ICSharpCode.Reports.Core.Exporter
groupSize = section.Items[0].Size;
childSize = section.Items[1].Size;
}
// Console.WriteLine("start with section at {0}",section.SectionOffset);
// Console.WriteLine();
do {
base.SaveSectionSize(section.Size);
PrintHelper.AdjustSectionLocation (section);
@ -164,23 +163,16 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -164,23 +163,16 @@ namespace ICSharpCode.Reports.Core.Exporter
private Point CalculateStartPosition(BaseSection section)
{
/*
Console.WriteLine();
Console.WriteLine(" CalculateStartPosition");
Console.WriteLine("{0}",base.SectionBounds.DetailStart);
Console.WriteLine("{0} ",SectionBounds.DetailArea);
Console.WriteLine("{0} ",base.SectionBounds.ReportHeaderRectangle);
Console.WriteLine("{0} ",base.SectionBounds.PageHeaderRectangle);
// return new Point (base.SectionBounds.PageHeaderRectangle.X,SectionBounds.DetailStart.Y);
// return new Point (base.SectionBounds.PageHeaderRectangle.X,SectionBounds.DetailStart.Y);
// return new Point (base.SectionBounds.PageHeaderRectangle.X,SectionBounds.DetailArea.Top);
// return new Point (base.SectionBounds.PageHeaderRectangle.X,base.SectionBounds.PageHeaderRectangle.Bottom);
var pp = new Point (base.SectionBounds.PageHeaderRectangle.X,base.SectionBounds.PageHeaderRectangle.Bottom);
Console.WriteLine ("Bottom {0}",pp);
Console.WriteLine("secoffset {0}",section.SectionOffset);
*/
return new Point (base.SectionBounds.PageHeaderRectangle.X,section.SectionOffset);
Console.WriteLine ("CalculateStartPosition {0}", base.SectionBounds.DetailStart);
var r = base.ReportModel;
base.SectionBounds.MeasureReportHeader(r.ReportHeader);
base.SectionBounds.MeasurePageHeader(r.PageHeader);
// Console.WriteLine("\treportheader {0}",base.SectionBounds.ReportHeaderRectangle);
// Console.WriteLine("\tpageheader {0}",base.SectionBounds.PageHeaderRectangle);
// Console.WriteLine("\tdetail {0}",base.SectionBounds.DetailArea);
// Console.WriteLine("\tret value {0}",base.SectionBounds.PageHeaderRectangle.Bottom );
return new Point(base.SectionBounds.DetailStart.X,base.SectionBounds.PageHeaderRectangle.Bottom + 1);
}

8
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs

@ -21,8 +21,8 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -21,8 +21,8 @@ namespace ICSharpCode.Reports.Core.Exporter
private ITableContainer table;
public GroupedTableConverter(IDataNavigator dataNavigator,
ExporterPage singlePage):base(dataNavigator,singlePage)
public GroupedTableConverter(IReportModel reportModel,IDataNavigator dataNavigator,
ExporterPage singlePage):base(reportModel,dataNavigator,singlePage)
{
}
@ -102,12 +102,10 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -102,12 +102,10 @@ namespace ICSharpCode.Reports.Core.Exporter
do
{
StandardPrinter.AdjustBackColor(simpleContainer);
// StandardPrinter.AdjustBackColor(simpleContainer,GlobalValues.DefaultBackColor);
simpleContainer = table.Items[2] as ISimpleContainer;
containerSize = simpleContainer.Size;
FillRow(simpleContainer,childNavigator);
// PrepareContainerForConverting(section,simpleContainer);
FillRow(simpleContainer,childNavigator);
FireRowRendering(simpleContainer,childNavigator);
PrepareContainerForConverting(section,simpleContainer);
base.CurrentPosition = ConvertStandardRow(exporterCollection,simpleContainer);

16
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs

@ -68,18 +68,24 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -68,18 +68,24 @@ namespace ICSharpCode.Reports.Core.Exporter
{
base.ReportModel.ReportHeader.SectionOffset = base.SinglePage.SectionBounds.ReportHeaderRectangle.Top;
ConvertSectionInternal (base.ReportModel.ReportHeader);
base.SectionBounds.MeasurePageHeader(base.ReportModel.ReportHeader);
} else
{
base.ReportModel.ReportHeader.Size = Size.Empty;
}
base.SectionBounds.MeasurePageHeader(base.ReportModel.ReportHeader);
}
protected override void BuildPageHeader ()
{
// base.DebugShowSections();
base.SectionBounds.MeasurePageHeader(base.ReportModel.ReportHeader);
base.SectionBounds.MeasurePageHeader(base.ReportModel.PageHeader);
// Console.WriteLine("----------------");
ConvertSectionInternal (base.ReportModel.PageHeader);
base.ReportModel.PageHeader.Size = new Size(base.ReportModel.PageHeader.Size.Width,base.Offset.Y - base.ReportModel.PageHeader.SectionOffset);
base.SectionBounds.MeasurePageHeader(base.ReportModel.PageHeader);
// base.DebugShowSections();
}
@ -129,10 +135,12 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -129,10 +135,12 @@ namespace ICSharpCode.Reports.Core.Exporter
protected Point BuildDetail (BaseSection section,IDataNavigator dataNavigator)
{
// Console.WriteLine ("detail at {0}",SectionBounds.DetailArea);
// Console.WriteLine ("detail start at {0}",SectionBounds.DetailStart);
ExporterCollection convertedList = new ExporterCollection();
foreach (BaseReportItem item in section.Items)
{
IBaseConverter baseConverter = ConverterFactory.CreateConverter(item,dataNavigator,
IBaseConverter baseConverter = ConverterFactory.CreateConverter(item,base.ReportModel,dataNavigator,
this.SinglePage);
if (baseConverter != null) {

10
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Printing/SectionBoundFixture.cs

@ -204,17 +204,7 @@ namespace ICSharpCode.Reports.Core.Test.Printing @@ -204,17 +204,7 @@ namespace ICSharpCode.Reports.Core.Test.Printing
Assert.That(sectionBounds.DetailStart,Is.EqualTo(p));
}
[Test]
public void DetailEnds_One_Above_PageFootter ()
{
SectionBounds sectionBounds = new SectionBounds(new ReportSettings(),true);
BaseSection pageFootter = CreateSection();
sectionBounds.MeasurePageFooter(pageFootter);
Point p = new Point(sectionBounds.PageFooterRectangle.Left,sectionBounds.PageFooterRectangle.Top -1);
Assert.That(sectionBounds.DetailEnds,Is.EqualTo(p));
}
public override void Setup()
{

Loading…
Cancel
Save