Browse Source

Print ReportFooter at correct Position

pull/14/head
peterforstmeier 15 years ago
parent
commit
809cd67033
  1. 8
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs
  2. 7
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs
  3. 4
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs
  4. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs
  5. 32
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs

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

@ -16,9 +16,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -16,9 +16,7 @@ namespace ICSharpCode.Reports.Core.Exporter
public class BasePager:IReportCreator
{
private PagesCollection pages;
// private Graphics graphics;
private readonly object pageLock = new object();
// private ILayouter layouter;
public event EventHandler<PageCreatedEventArgs> PageCreated;
public event EventHandler<SectionRenderEventArgs> SectionRendering;
@ -121,12 +119,6 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -121,12 +119,6 @@ namespace ICSharpCode.Reports.Core.Exporter
list.Add(exportContainer);
} 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);
// }
list = StandardPrinter.ConvertPlainCollection(section.Items,offset);
}
}

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

@ -149,7 +149,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -149,7 +149,7 @@ namespace ICSharpCode.Reports.Core.Exporter
{
PrepareContainerForConverting(section,simpleContainer);
FireRowRendering(simpleContainer,currentNavigator);
Point curPos = BaseConvert(mylist,simpleContainer,DefaultLeftPosition,CurrentPosition);
Point curPos = ConvertContainer(mylist,simpleContainer,DefaultLeftPosition,CurrentPosition);
AfterConverting (mylist);
return curPos;
}
@ -263,18 +263,17 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -263,18 +263,17 @@ namespace ICSharpCode.Reports.Core.Exporter
var rowSize = simpleContainer.Size;
FillRow(simpleContainer);
PrepareContainerForConverting(section,simpleContainer);
Point curPos = BaseConvert(mylist,simpleContainer,DefaultLeftPosition,CurrentPosition);
Point curPos = ConvertContainer(mylist,simpleContainer,DefaultLeftPosition,CurrentPosition);
AfterConverting (mylist);
simpleContainer.Size = rowSize;
return curPos;
}
protected static Point BaseConvert(ExporterCollection myList,ISimpleContainer container,int leftPos,Point curPos)
public static Point ConvertContainer(ExporterCollection myList,ISimpleContainer container,int leftPos,Point curPos)
{
ExporterCollection ml = BaseConverter.ConvertItems (container, curPos);
myList.AddRange(ml);
// return new Point (leftPos,curPos.Y + container.Size.Height + (3 *GlobalValues.GapBetweenContainer));
return new Point (leftPos,curPos.Y + container.Size.Height);
}

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

@ -18,8 +18,6 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -18,8 +18,6 @@ namespace ICSharpCode.Reports.Core.Exporter
private BaseReportItem parent;
public GroupedRowConverter(IDataNavigator dataNavigator,
ExporterPage singlePage, ILayouter layouter):base(dataNavigator,singlePage,layouter)
{
@ -44,7 +42,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -44,7 +42,7 @@ namespace ICSharpCode.Reports.Core.Exporter
if (PrintHelper.IsTextOnlyRow(simpleContainer)) {
ExporterCollection myList = new ExporterCollection();
BaseConvert (myList,simpleContainer,parent.Location.X,
ConvertContainer (myList,simpleContainer,parent.Location.X,
new Point(base.SectionBounds.DetailStart.X,base.SectionBounds.DetailStart.Y));
return myList;

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

@ -75,7 +75,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -75,7 +75,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);
base.CurrentPosition = ConvertContainer(exporterCollection,headerRow,base.DefaultLeftPosition,base.CurrentPosition);
}
BaseGroupedRow row = table.Items[1] as BaseGroupedRow;

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

@ -13,6 +13,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -13,6 +13,7 @@ namespace ICSharpCode.Reports.Core.Exporter
{
IDataManager dataManager;
IDataNavigator dataNavigator;
Point positionAfterDetail;
readonly object addLock = new object();
@ -88,8 +89,32 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -88,8 +89,32 @@ namespace ICSharpCode.Reports.Core.Exporter
protected override void BuildReportFooter (Rectangle footerRectangle)
{
base.ReportModel.ReportFooter.SectionOffset = footerRectangle.Top;
ExporterCollection convertedList = base.ConvertSection (base.ReportModel.ReportFooter,this.dataNavigator.CurrentRow);
bool pageBreak = false;
base.ReportModel.ReportFooter.SectionOffset = footerRectangle.Top + GlobalValues.GapBetweenContainer;
if (!PrintHelper.IsRoomForFooter(base.SectionBounds,base.ReportModel.ReportFooter.Location)) {
PageBreak();
base.ReportModel.ReportFooter.SectionOffset = SectionBounds.DetailStart.Y;
pageBreak = true;
}
ExporterCollection convertedList = new ExporterCollection();
var section = base.ReportModel.DetailSection;
var table = section.Items[0] as BaseTableItem;
if (table != null) {
if (pageBreak) {
// Print the HeaderRow
var headerRow = table.Items[0];
var curPos = BaseConverter.ConvertContainer(convertedList,(ISimpleContainer)headerRow,SectionBounds.PageHeaderRectangle.Left,SectionBounds.PageHeaderRectangle.Location);
base.SinglePage.Items.AddRange(convertedList);
base.ReportModel.ReportFooter.SectionOffset = curPos.Y + GlobalValues.GapBetweenContainer;
}
}
//allways print the reportFooter
convertedList = base.ConvertSection (base.ReportModel.ReportFooter,this.dataNavigator.CurrentRow);
base.SinglePage.Items.AddRange(convertedList);
}
@ -114,7 +139,6 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -114,7 +139,6 @@ namespace ICSharpCode.Reports.Core.Exporter
if (baseConverter != null) {
baseConverter.SectionRendering += OnSectionRendering;
baseConverter.GroupHeaderRendering += OnGroupHeaderRendering;
baseConverter.GroupFooterRendering += OnGroupFooterRendering;
@ -162,6 +186,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -162,6 +186,7 @@ namespace ICSharpCode.Reports.Core.Exporter
}
#endregion
private void WritePages ()
{
this.dataNavigator = this.dataManager.GetNavigator;
@ -193,7 +218,6 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -193,7 +218,6 @@ namespace ICSharpCode.Reports.Core.Exporter
}
#region Public Methodes
protected override void AddPage (ExporterPage page)

Loading…
Cancel
Save