Browse Source

ReportFooter

pull/2/head
peterforstmeier 16 years ago
parent
commit
fb08d66856
  1. 4
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs
  2. 9
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs
  3. 59
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs
  4. 35
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs
  5. 14
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs
  6. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IItemConverter.cs

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

@ -94,10 +94,6 @@ namespace ICSharpCode.Reports.Core.Exporter
ExporterCollection list = new ExporterCollection(); ExporterCollection list = new ExporterCollection();
// if (section.DrawBorder == true) {
// section.Items.Insert(0,CreateDebugItem(section));
// }
if (section.Items.Count > 0) { if (section.Items.Count > 0) {
Point offset = new Point(section.Location.X,section.SectionOffset); Point offset = new Point(section.Location.X,section.SectionOffset);

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

@ -112,12 +112,8 @@ namespace ICSharpCode.Reports.Core.Exporter
protected Point ConvertGroupChilds(ExporterCollection mylist, BaseSection section, ISimpleContainer simpleContainer, int defaultLeftPos, Point currentPosition) protected Point ConvertGroupChilds(ExporterCollection mylist, BaseSection section, ISimpleContainer simpleContainer, int defaultLeftPos, Point currentPosition)
{ {
Console.WriteLine("---start --ConvertStandardRow {0} - section {1}",simpleContainer.Size,section.Size);
PrepareContainerForConverting(section,simpleContainer); PrepareContainerForConverting(section,simpleContainer);
Point curPos = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition); Point curPos = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition);
Console.WriteLine("---end --ConvertStandardRow detail {0} - section {1}",simpleContainer.Size,section.Size);
// Console.WriteLine();
// Console.WriteLine();
AfterConverting (section,mylist); AfterConverting (section,mylist);
return curPos; return curPos;
} }
@ -156,7 +152,9 @@ namespace ICSharpCode.Reports.Core.Exporter
return new ExporterCollection();; return new ExporterCollection();;
} }
public Point CurrentPosition {get;set;}
#endregion
public Rectangle ParentRectangle { public Rectangle ParentRectangle {
get { return parentRectangle; } get { return parentRectangle; }
} }
@ -181,7 +179,7 @@ namespace ICSharpCode.Reports.Core.Exporter
} }
public Graphics Graphics {get;set;} public Graphics Graphics {get;set;}
#endregion
protected void SaveSectionSize(Size size) protected void SaveSectionSize(Size size)
@ -214,7 +212,6 @@ namespace ICSharpCode.Reports.Core.Exporter
protected void AfterConverting (BaseSection section,ExporterCollection convertedList) protected void AfterConverting (BaseSection section,ExporterCollection convertedList)
{ {
StandardPrinter.EvaluateRow(Evaluator,convertedList); StandardPrinter.EvaluateRow(Evaluator,convertedList);
section.Items[0].Size = RestoreSize;
} }

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

@ -23,6 +23,7 @@ namespace ICSharpCode.Reports.Core.Exporter
{ {
} }
public override ExporterCollection Convert(BaseReportItem parent, BaseReportItem item) public override ExporterCollection Convert(BaseReportItem parent, BaseReportItem item)
{ {
if (parent == null) { if (parent == null) {
@ -54,7 +55,7 @@ namespace ICSharpCode.Reports.Core.Exporter
private ExporterCollection ConvertDataRow (ISimpleContainer simpleContainer) private ExporterCollection ConvertDataRow (ISimpleContainer simpleContainer)
{ {
ExporterCollection exporterCollection = new ExporterCollection(); ExporterCollection exporterCollection = new ExporterCollection();
Point currentPosition = new Point(base.SectionBounds.DetailStart.X,base.SectionBounds.DetailStart.Y); base.CurrentPosition = new Point(base.SectionBounds.DetailStart.X,base.SectionBounds.DetailStart.Y);
BaseSection section = parent as BaseSection; BaseSection section = parent as BaseSection;
int defaultLeftPos = parent.Location.X; int defaultLeftPos = parent.Location.X;
@ -62,10 +63,19 @@ namespace ICSharpCode.Reports.Core.Exporter
Size groupSize = Size.Empty; Size groupSize = Size.Empty;
Size childSize = Size.Empty; Size childSize = Size.Empty;
Console.WriteLine("-------------------START");
Console.WriteLine ("section {0}",section.Size);
Console.WriteLine();
if (section.Items.IsGrouped) if (section.Items.IsGrouped)
{ {
groupSize = section.Items[0].Size; groupSize = section.Items[0].Size;
childSize = section.Items[1].Size; childSize = section.Items[1].Size;
Console.WriteLine ("group {0}",section.Items[0].Size);
Console.WriteLine ("detail {0}",section.Items[1].Size);
} }
Rectangle pageBreakRect = Rectangle.Empty; Rectangle pageBreakRect = Rectangle.Empty;
@ -83,7 +93,7 @@ namespace ICSharpCode.Reports.Core.Exporter
base.Evaluator.SinglePage.IDataNavigator = childNavigator; base.Evaluator.SinglePage.IDataNavigator = childNavigator;
currentPosition = ConvertGroupHeader(exporterCollection,section,defaultLeftPos,currentPosition); base.CurrentPosition = ConvertGroupHeader(exporterCollection,section,defaultLeftPos,base.CurrentPosition);
section.Size = base.RestoreSize; section.Size = base.RestoreSize;
section.Items[0].Size = groupSize; section.Items[0].Size = groupSize;
@ -92,12 +102,12 @@ namespace ICSharpCode.Reports.Core.Exporter
childNavigator.Reset(); childNavigator.Reset();
childNavigator.MoveNext(); childNavigator.MoveNext();
// Console.WriteLine("-------------------after group"); Console.WriteLine("-------------------after group");
//
// Console.WriteLine ("section {0}",section.Size); Console.WriteLine ("section {0}",section.Size);
// Console.WriteLine ("group {0}",section.Items[0].Size); Console.WriteLine ("group {0}",section.Items[0].Size);
// Console.WriteLine ("detail {0}",section.Items[1].Size); Console.WriteLine ("detail {0}",section.Items[1].Size);
// Console.WriteLine(); Console.WriteLine();
//Convert children //Convert children
if (childNavigator != null) { if (childNavigator != null) {
@ -105,11 +115,10 @@ namespace ICSharpCode.Reports.Core.Exporter
do do
{ {
Console.WriteLine("-----------------childs"); Console.WriteLine("-----------------childs");
Console.WriteLine ("section {0}",section.Size);
// Console.WriteLine ("section {0}",section.Size); Console.WriteLine ("group {0}",section.Items[0].Size);
// Console.WriteLine ("group {0}",section.Items[0].Size); Console.WriteLine ("detail {0}",section.Items[1].Size);
// Console.WriteLine ("detail {0}",section.Items[1].Size); Console.WriteLine();
// Console.WriteLine();
section.Size = base.RestoreSize; section.Size = base.RestoreSize;
section.Items[0].Size = groupSize; section.Items[0].Size = groupSize;
section.Items[1].Size = childSize; section.Items[1].Size = childSize;
@ -117,12 +126,12 @@ namespace ICSharpCode.Reports.Core.Exporter
childNavigator.Fill(simpleContainer.Items); childNavigator.Fill(simpleContainer.Items);
currentPosition = ConvertGroupChilds (exporterCollection,section, base.CurrentPosition = ConvertGroupChilds (exporterCollection,section,
simpleContainer,defaultLeftPos,currentPosition); simpleContainer,defaultLeftPos,base.CurrentPosition);
pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[1],currentPosition); pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[1],base.CurrentPosition);
section.Items[1].Size = base.RestoreSize; // section.Items[1].Size = base.RestoreSize;
if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds )) { if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds )) {
currentPosition = ForcePageBreak (exporterCollection,section); base.CurrentPosition = ForcePageBreak (exporterCollection,section);
} }
} }
while ( childNavigator.MoveNext()); while ( childNavigator.MoveNext());
@ -131,7 +140,7 @@ namespace ICSharpCode.Reports.Core.Exporter
if ( base.DataNavigator.HasMoreData) if ( base.DataNavigator.HasMoreData)
{ {
currentPosition = ForcePageBreak (exporterCollection,section); base.CurrentPosition = ForcePageBreak (exporterCollection,section);
} }
} }
@ -141,14 +150,19 @@ namespace ICSharpCode.Reports.Core.Exporter
else else
{ {
// No Grouping at all // No Grouping at all
currentPosition = ConvertStandardRow (exporterCollection,section,simpleContainer,defaultLeftPos,currentPosition); Size dd = section.Items[0].Size;
Console.WriteLine("---------NoGrouping");
Console.WriteLine ("section {0}",section.Size);
Console.WriteLine ("row {0}",dd);
base.CurrentPosition = ConvertStandardRow (exporterCollection,section,simpleContainer,defaultLeftPos,base.CurrentPosition);
section.Size = base.RestoreSize; section.Size = base.RestoreSize;
section.Items[0].Size = dd;
} }
pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[0],currentPosition); pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[0],base.CurrentPosition);
if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds)) { if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds)) {
currentPosition= ForcePageBreak (exporterCollection,section); base.CurrentPosition = ForcePageBreak (exporterCollection,section);
} }
ShouldDrawBorder (section,exporterCollection); ShouldDrawBorder (section,exporterCollection);
@ -159,6 +173,7 @@ namespace ICSharpCode.Reports.Core.Exporter
section.Location.Y + section.Size.Height, section.Location.Y + section.Size.Height,
SectionBounds.ReportFooterRectangle.Width, SectionBounds.ReportFooterRectangle.Width,
SectionBounds.ReportFooterRectangle.Height); SectionBounds.ReportFooterRectangle.Height);
return exporterCollection; return exporterCollection;
} }

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

@ -49,12 +49,11 @@ namespace ICSharpCode.Reports.Core.Exporter
BaseSection section = table.Parent as BaseSection; BaseSection section = table.Parent as BaseSection;
Point currentPosition = new Point(PrintHelper.DrawingAreaRelativeToParent(this.table.Parent,this.table).Location.X, base.CurrentPosition = new Point(PrintHelper.DrawingAreaRelativeToParent(this.table.Parent,this.table).Location.X,
base.SectionBounds.DetailStart.Y); base.SectionBounds.DetailStart.Y);
int defaultLeftPos = base.CurrentPosition.X;
int defaultLeftPos = currentPosition.X; Point dataAreaStart = new Point(table.Items[0].Location.X,table.Items[0].Location.Y + base.CurrentPosition.Y);
Point dataAreaStart = new Point(table.Items[0].Location.X,table.Items[0].Location.Y + currentPosition.Y);
ISimpleContainer headerRow = null; ISimpleContainer headerRow = null;
Rectangle pageBreakRect = Rectangle.Empty; Rectangle pageBreakRect = Rectangle.Empty;
@ -73,7 +72,7 @@ namespace ICSharpCode.Reports.Core.Exporter
if (PrintHelper.IsTextOnlyRow(simpleContainer) ) { if (PrintHelper.IsTextOnlyRow(simpleContainer) ) {
headerRow = simpleContainer; headerRow = simpleContainer;
currentPosition = BaseConverter.BaseConvert(exporterCollection,headerRow,defaultLeftPos,currentPosition); base.CurrentPosition = BaseConverter.BaseConvert(exporterCollection,headerRow,defaultLeftPos,base.CurrentPosition);
} }
BaseGroupedRow row = table.Items[1] as BaseGroupedRow; BaseGroupedRow row = table.Items[1] as BaseGroupedRow;
@ -89,7 +88,7 @@ namespace ICSharpCode.Reports.Core.Exporter
base.Evaluator.SinglePage.IDataNavigator = childNavigator; base.Evaluator.SinglePage.IDataNavigator = childNavigator;
// Convert Grouping Header // Convert Grouping Header
currentPosition = ConvertGroupHeader(exporterCollection,section,defaultLeftPos,currentPosition); base.CurrentPosition = ConvertGroupHeader(exporterCollection,section,defaultLeftPos,base.CurrentPosition);
childNavigator.Reset(); childNavigator.Reset();
childNavigator.MoveNext(); childNavigator.MoveNext();
@ -103,15 +102,15 @@ namespace ICSharpCode.Reports.Core.Exporter
childNavigator.Fill(simpleContainer.Items); childNavigator.Fill(simpleContainer.Items);
currentPosition = ConvertGroupChilds (exporterCollection, base.CurrentPosition = ConvertGroupChilds (exporterCollection,
section, section,
simpleContainer,defaultLeftPos,currentPosition); simpleContainer,defaultLeftPos,base.CurrentPosition);
pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)simpleContainer,currentPosition); pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)simpleContainer,base.CurrentPosition);
if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds)) if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds))
{ {
currentPosition = base.ForcePageBreak(exporterCollection,section); base.CurrentPosition = base.ForcePageBreak(exporterCollection,section);
currentPosition = ConvertStandardRow (exporterCollection,section,headerRow,defaultLeftPos,currentPosition); base.CurrentPosition = ConvertStandardRow (exporterCollection,section,headerRow,defaultLeftPos,base.CurrentPosition);
} }
} }
while ( childNavigator.MoveNext()); while ( childNavigator.MoveNext());
@ -120,8 +119,8 @@ namespace ICSharpCode.Reports.Core.Exporter
{ {
if ( base.DataNavigator.HasMoreData) if ( base.DataNavigator.HasMoreData)
{ {
currentPosition = base.ForcePageBreak(exporterCollection,section); base.CurrentPosition = base.ForcePageBreak(exporterCollection,section);
currentPosition = ConvertStandardRow (exporterCollection,section,headerRow,defaultLeftPos,currentPosition); base.CurrentPosition = ConvertStandardRow (exporterCollection,section,headerRow,defaultLeftPos,base.CurrentPosition);
} }
} }
@ -143,15 +142,15 @@ namespace ICSharpCode.Reports.Core.Exporter
PrintHelper.AdjustSectionLocation(section); PrintHelper.AdjustSectionLocation(section);
pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)simpleContainer,currentPosition); pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)simpleContainer,base.CurrentPosition);
if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds)) if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds))
{ {
currentPosition = base.ForcePageBreak(exporterCollection,section); base.CurrentPosition = base.ForcePageBreak(exporterCollection,section);
currentPosition = ConvertStandardRow (exporterCollection,section,headerRow,defaultLeftPos,currentPosition); base.CurrentPosition = ConvertStandardRow (exporterCollection,section,headerRow,defaultLeftPos,base.CurrentPosition);
} }
currentPosition = ConvertStandardRow (exporterCollection,section,simpleContainer,defaultLeftPos,currentPosition); base.CurrentPosition = ConvertStandardRow (exporterCollection,section,simpleContainer,defaultLeftPos,base.CurrentPosition);
simpleContainer.Size = base.RestoreSize; simpleContainer.Size = base.RestoreSize;
} }
@ -160,7 +159,7 @@ namespace ICSharpCode.Reports.Core.Exporter
base.DataNavigator.Reset(); base.DataNavigator.Reset();
base.DataNavigator.MoveNext(); base.DataNavigator.MoveNext();
SectionBounds.ReportFooterRectangle = new Rectangle(SectionBounds.ReportFooterRectangle.Left, SectionBounds.ReportFooterRectangle = new Rectangle(SectionBounds.ReportFooterRectangle.Left,
currentPosition.Y, base.CurrentPosition.Y,
SectionBounds.ReportFooterRectangle.Width, SectionBounds.ReportFooterRectangle.Width,
SectionBounds.ReportFooterRectangle.Height); SectionBounds.ReportFooterRectangle.Height);
} }

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

@ -104,7 +104,8 @@ namespace ICSharpCode.Reports.Core.Exporter
} }
protected void BuildDetail (BaseSection section,IDataNavigator dataNavigator)
protected Point BuildDetail (BaseSection section,IDataNavigator dataNavigator)
{ {
ExporterCollection convertedList = new ExporterCollection(); ExporterCollection convertedList = new ExporterCollection();
@ -124,8 +125,10 @@ namespace ICSharpCode.Reports.Core.Exporter
convertedList = baseConverter.Convert(section,item); convertedList = baseConverter.Convert(section,item);
base.SinglePage.Items.AddRange(convertedList); base.SinglePage.Items.AddRange(convertedList);
return baseConverter.CurrentPosition;
} }
} }
return Point.Empty;
} }
@ -145,10 +148,15 @@ namespace ICSharpCode.Reports.Core.Exporter
BaseSection section = base.ReportModel.DetailSection; BaseSection section = base.ReportModel.DetailSection;
section.SectionOffset = base.SinglePage.SectionBounds.DetailStart.Y; section.SectionOffset = base.SinglePage.SectionBounds.DetailStart.Y;
this.BuildDetail (section,dataNavigator); var p = this.BuildDetail (section,dataNavigator);
var r = new Rectangle (SectionBounds.ReportFooterRectangle.Left,p.Y,
SectionBounds.ReportFooterRectangle.Size.Width,
SectionBounds.ReportFooterRectangle.Size.Height);
this.BuildReportFooter(r);
this.BuildReportFooter(SectionBounds.ReportFooterRectangle);
this.BuildPageFooter(); this.BuildPageFooter();
//this is the last Page //this is the last Page
this.AddPage(base.SinglePage); this.AddPage(base.SinglePage);
base.FinishRendering(this.dataNavigator); base.FinishRendering(this.dataNavigator);

1
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IItemConverter.cs

@ -35,5 +35,6 @@ namespace ICSharpCode.Reports.Core.Interfaces
public interface IBaseConverter:IRenderer public interface IBaseConverter:IRenderer
{ {
ExporterCollection Convert (BaseReportItem parent,BaseReportItem item); ExporterCollection Convert (BaseReportItem parent,BaseReportItem item);
Point CurrentPosition {get;set;}
} }
} }

Loading…
Cancel
Save