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 @@ -94,10 +94,6 @@ namespace ICSharpCode.Reports.Core.Exporter
ExporterCollection list = new ExporterCollection();
// if (section.DrawBorder == true) {
// section.Items.Insert(0,CreateDebugItem(section));
// }
if (section.Items.Count > 0) {
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 @@ -112,12 +112,8 @@ namespace ICSharpCode.Reports.Core.Exporter
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);
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);
return curPos;
}
@ -156,7 +152,9 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -156,7 +152,9 @@ namespace ICSharpCode.Reports.Core.Exporter
return new ExporterCollection();;
}
public Point CurrentPosition {get;set;}
#endregion
public Rectangle ParentRectangle {
get { return parentRectangle; }
}
@ -181,7 +179,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -181,7 +179,7 @@ namespace ICSharpCode.Reports.Core.Exporter
}
public Graphics Graphics {get;set;}
#endregion
protected void SaveSectionSize(Size size)
@ -214,7 +212,6 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -214,7 +212,6 @@ namespace ICSharpCode.Reports.Core.Exporter
protected void AfterConverting (BaseSection section,ExporterCollection 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 @@ -23,6 +23,7 @@ namespace ICSharpCode.Reports.Core.Exporter
{
}
public override ExporterCollection Convert(BaseReportItem parent, BaseReportItem item)
{
if (parent == null) {
@ -54,7 +55,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -54,7 +55,7 @@ namespace ICSharpCode.Reports.Core.Exporter
private ExporterCollection ConvertDataRow (ISimpleContainer simpleContainer)
{
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;
int defaultLeftPos = parent.Location.X;
@ -62,10 +63,19 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -62,10 +63,19 @@ namespace ICSharpCode.Reports.Core.Exporter
Size groupSize = Size.Empty;
Size childSize = Size.Empty;
Console.WriteLine("-------------------START");
Console.WriteLine ("section {0}",section.Size);
Console.WriteLine();
if (section.Items.IsGrouped)
{
groupSize = section.Items[0].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;
@ -83,7 +93,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -83,7 +93,7 @@ namespace ICSharpCode.Reports.Core.Exporter
base.Evaluator.SinglePage.IDataNavigator = childNavigator;
currentPosition = ConvertGroupHeader(exporterCollection,section,defaultLeftPos,currentPosition);
base.CurrentPosition = ConvertGroupHeader(exporterCollection,section,defaultLeftPos,base.CurrentPosition);
section.Size = base.RestoreSize;
section.Items[0].Size = groupSize;
@ -92,12 +102,12 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -92,12 +102,12 @@ namespace ICSharpCode.Reports.Core.Exporter
childNavigator.Reset();
childNavigator.MoveNext();
// Console.WriteLine("-------------------after group");
//
// Console.WriteLine ("section {0}",section.Size);
// Console.WriteLine ("group {0}",section.Items[0].Size);
// Console.WriteLine ("detail {0}",section.Items[1].Size);
// Console.WriteLine();
Console.WriteLine("-------------------after group");
Console.WriteLine ("section {0}",section.Size);
Console.WriteLine ("group {0}",section.Items[0].Size);
Console.WriteLine ("detail {0}",section.Items[1].Size);
Console.WriteLine();
//Convert children
if (childNavigator != null) {
@ -105,11 +115,10 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -105,11 +115,10 @@ namespace ICSharpCode.Reports.Core.Exporter
do
{
Console.WriteLine("-----------------childs");
// Console.WriteLine ("section {0}",section.Size);
// Console.WriteLine ("group {0}",section.Items[0].Size);
// Console.WriteLine ("detail {0}",section.Items[1].Size);
// Console.WriteLine();
Console.WriteLine ("section {0}",section.Size);
Console.WriteLine ("group {0}",section.Items[0].Size);
Console.WriteLine ("detail {0}",section.Items[1].Size);
Console.WriteLine();
section.Size = base.RestoreSize;
section.Items[0].Size = groupSize;
section.Items[1].Size = childSize;
@ -117,12 +126,12 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -117,12 +126,12 @@ namespace ICSharpCode.Reports.Core.Exporter
childNavigator.Fill(simpleContainer.Items);
currentPosition = ConvertGroupChilds (exporterCollection,section,
simpleContainer,defaultLeftPos,currentPosition);
pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[1],currentPosition);
section.Items[1].Size = base.RestoreSize;
base.CurrentPosition = ConvertGroupChilds (exporterCollection,section,
simpleContainer,defaultLeftPos,base.CurrentPosition);
pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[1],base.CurrentPosition);
// section.Items[1].Size = base.RestoreSize;
if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds )) {
currentPosition = ForcePageBreak (exporterCollection,section);
base.CurrentPosition = ForcePageBreak (exporterCollection,section);
}
}
while ( childNavigator.MoveNext());
@ -131,7 +140,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -131,7 +140,7 @@ namespace ICSharpCode.Reports.Core.Exporter
if ( base.DataNavigator.HasMoreData)
{
currentPosition = ForcePageBreak (exporterCollection,section);
base.CurrentPosition = ForcePageBreak (exporterCollection,section);
}
}
@ -141,14 +150,19 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -141,14 +150,19 @@ namespace ICSharpCode.Reports.Core.Exporter
else
{
// 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.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)) {
currentPosition= ForcePageBreak (exporterCollection,section);
base.CurrentPosition = ForcePageBreak (exporterCollection,section);
}
ShouldDrawBorder (section,exporterCollection);
@ -159,6 +173,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -159,6 +173,7 @@ namespace ICSharpCode.Reports.Core.Exporter
section.Location.Y + section.Size.Height,
SectionBounds.ReportFooterRectangle.Width,
SectionBounds.ReportFooterRectangle.Height);
return exporterCollection;
}

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

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

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

@ -104,7 +104,8 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -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();
@ -124,8 +125,10 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -124,8 +125,10 @@ namespace ICSharpCode.Reports.Core.Exporter
convertedList = baseConverter.Convert(section,item);
base.SinglePage.Items.AddRange(convertedList);
return baseConverter.CurrentPosition;
}
}
return Point.Empty;
}
@ -145,10 +148,15 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -145,10 +148,15 @@ namespace ICSharpCode.Reports.Core.Exporter
BaseSection section = base.ReportModel.DetailSection;
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 is the last Page
this.AddPage(base.SinglePage);
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 @@ -35,5 +35,6 @@ namespace ICSharpCode.Reports.Core.Interfaces
public interface IBaseConverter:IRenderer
{
ExporterCollection Convert (BaseReportItem parent,BaseReportItem item);
Point CurrentPosition {get;set;}
}
}

Loading…
Cancel
Save