Browse Source

Layouter for section is only called once

pull/14/head
peterforstmeier 15 years ago
parent
commit
91ef018b16
  1. 20
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseSection.cs
  2. 36
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs
  3. 3
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs

20
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseSection.cs

@ -19,7 +19,7 @@ namespace ICSharpCode.Reports.Core @@ -19,7 +19,7 @@ namespace ICSharpCode.Reports.Core
public class BaseSection : BaseReportItem,ISimpleContainer
{
private bool pageBreakAfter;
// private bool pageBreakAfter;
private ReportItemCollection items;
public event EventHandler<SectionEventArgs> SectionPrinting;
@ -120,13 +120,6 @@ namespace ICSharpCode.Reports.Core @@ -120,13 +120,6 @@ namespace ICSharpCode.Reports.Core
public int SectionMargin {get;set;}
public override System.Drawing.Point Location
{
get { return base.Location; }
set { base.Location = value; }
}
public ReportItemCollection Items
{
get {
@ -138,16 +131,7 @@ namespace ICSharpCode.Reports.Core @@ -138,16 +131,7 @@ namespace ICSharpCode.Reports.Core
}
public virtual bool PageBreakAfter
{
get {
return pageBreakAfter;
}
set {
pageBreakAfter = value;
}
}
public virtual bool PageBreakAfter {get;set;}
#endregion

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

@ -16,9 +16,9 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -16,9 +16,9 @@ namespace ICSharpCode.Reports.Core.Exporter
public class BasePager:IReportCreator
{
private PagesCollection pages;
private Graphics graphics;
// private Graphics graphics;
private readonly object pageLock = new object();
private ILayouter layouter;
// private ILayouter layouter;
public event EventHandler<PageCreatedEventArgs> PageCreated;
public event EventHandler<SectionRenderEventArgs> SectionRendering;
@ -38,8 +38,8 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -38,8 +38,8 @@ namespace ICSharpCode.Reports.Core.Exporter
throw new ArgumentNullException ("layouter");
}
this.ReportModel = reportModel;
this.layouter = layouter;
this.graphics = CreateGraphicObject.FromSize(this.ReportModel.ReportSettings.PageSize);
this.Layouter = layouter;
this.Graphics = CreateGraphicObject.FromSize(this.ReportModel.ReportSettings.PageSize);
}
#endregion
@ -98,6 +98,13 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -98,6 +98,13 @@ namespace ICSharpCode.Reports.Core.Exporter
Point offset = new Point(section.Location.X,section.SectionOffset);
// Call layouter only once per section
Rectangle desiredRectangle = Layouter.Layout(this.Graphics,section);
Rectangle sectionRectangle = new Rectangle(section.Location,section.Size);
if (!sectionRectangle.Contains(desiredRectangle)) {
section.Size = new Size(section.Size.Width,desiredRectangle.Size.Height + GlobalValues.ControlMargins.Top + GlobalValues.ControlMargins.Bottom);
}
foreach (BaseReportItem item in section.Items) {
ISimpleContainer container = item as ISimpleContainer;
@ -106,7 +113,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -106,7 +113,7 @@ namespace ICSharpCode.Reports.Core.Exporter
ExportContainer exportContainer = StandardPrinter.ConvertToContainer(container,offset);
StandardPrinter.AdjustBackColor (container);
StandardPrinter.AdjustBackColor (container);
ExporterCollection clist = StandardPrinter.ConvertPlainCollection(container.Items,offset);
@ -115,11 +122,11 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -115,11 +122,11 @@ namespace ICSharpCode.Reports.Core.Exporter
} else {
Rectangle desiredRectangle = layouter.Layout(this.graphics,section);
Rectangle sectionRectangle = new Rectangle(section.Location,section.Size);
if (!sectionRectangle.Contains(desiredRectangle)) {
section.Size = new Size(section.Size.Width,desiredRectangle.Size.Height + GlobalValues.ControlMargins.Top + GlobalValues.ControlMargins.Bottom);
}
// Rectangle desiredRectangle = layouter.Layout(this.graphics,section);
// Rectangle sectionRectangle = new Rectangle(section.Location,section.Size);
// if (!sectionRectangle.Contains(desiredRectangle)) {
// section.Size = new Size(section.Size.Width,desiredRectangle.Size.Height + GlobalValues.ControlMargins.Top + GlobalValues.ControlMargins.Bottom);
// }
list = StandardPrinter.ConvertPlainCollection(section.Items,offset);
}
}
@ -266,14 +273,9 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -266,14 +273,9 @@ namespace ICSharpCode.Reports.Core.Exporter
#region Property's
protected Graphics Graphics {
get { return graphics; }
}
protected Graphics Graphics {get; private set;}
public ILayouter Layouter {
get { return layouter; }
}
public ILayouter Layouter {get; private set;}
public IReportModel ReportModel {get;set;}

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

@ -74,7 +74,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -74,7 +74,7 @@ namespace ICSharpCode.Reports.Core.Exporter
if (PrintHelper.IsTextOnlyRow(simpleContainer) ) {
headerRow = simpleContainer;
base.PrepareContainerForConverting(section,headerRow);
base.CurrentPosition = BaseConvert(exporterCollection,headerRow,base.DefaultLeftPosition,base.CurrentPosition);
}
@ -90,6 +90,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -90,6 +90,7 @@ namespace ICSharpCode.Reports.Core.Exporter
base.Evaluator.SinglePage.IDataNavigator = childNavigator;
// Convert Grouping Header
base.CurrentPosition = ConvertGroupHeader(exporterCollection,section,base.CurrentPosition);
childNavigator.Reset();

Loading…
Cancel
Save