Browse Source

CanGrow in PageHeader

pull/15/head^2
peterforstmeier 14 years ago
parent
commit
a59bb8ecea
  1. 7
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SectionBounds.cs
  2. 7
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/NewPageEventArgs.cs
  3. 24
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs
  4. 7
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs
  5. 25
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs
  6. 22
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs

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

@ -23,6 +23,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses @@ -23,6 +23,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses
Rectangle DetailArea {get;}
Size PageSize {get;set;}
bool Landscape{get;}
Point Offset {get;set;}
}
@ -121,7 +122,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses @@ -121,7 +122,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses
section.SectionOffset,
this.marginBounds.Width,
s.Height);
Console.WriteLine("\tSectionBounds pageheader {0} - loca {1}",pageHeaderRectangle,pageHeaderRectangle.Location);
}
@ -206,9 +206,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses @@ -206,9 +206,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses
public Rectangle DetailArea
{
get {
Console.WriteLine("\tSectionBound Detailarea location {0}",new Rectangle (new Point (pageHeaderRectangle.X,pageHeaderRectangle.Bottom + GlobalValues.GapBetweenContainer),
new Size(pageFooterRectangle.Location.X,pageFooterRectangle.Top - GlobalValues.GapBetweenContainer)).Location);
return new Rectangle (new Point (pageHeaderRectangle.X,pageHeaderRectangle.Bottom + GlobalValues.GapBetweenContainer),
new Size(pageFooterRectangle.Location.X,pageFooterRectangle.Top - GlobalValues.GapBetweenContainer));
}
@ -223,6 +220,8 @@ namespace ICSharpCode.Reports.Core.BaseClasses @@ -223,6 +220,8 @@ namespace ICSharpCode.Reports.Core.BaseClasses
public Size PageSize {get;set;}
public Point Offset {get;set;}
#endregion
}
}

7
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/NewPageEventArgs.cs

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.Reports.Core.BaseClasses;
namespace ICSharpCode.Reports.Core.Events
{
@ -10,13 +11,17 @@ namespace ICSharpCode.Reports.Core.Events @@ -10,13 +11,17 @@ namespace ICSharpCode.Reports.Core.Events
private ExporterCollection itemsList;
public NewPageEventArgs(ExporterCollection itemsList)
public NewPageEventArgs(ExporterCollection itemsList,SectionBounds sectionBounds)
{
this.itemsList = itemsList;
SectionBounds = sectionBounds;
}
public ExporterCollection ItemsList {
get { return itemsList; }
}
public SectionBounds SectionBounds {get;set;}
}
}

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

@ -81,10 +81,10 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -81,10 +81,10 @@ namespace ICSharpCode.Reports.Core.Exporter
FireSectionRenderEvent (section ,dataRow);
PrintHelper.AdjustParent(section,section.Items);
PrintHelper.AdjustSectionLocation(section);
var convertedSection = new ExporterCollection();
Offset = new Point(section.Location.X,section.SectionOffset);
Offset = SectionBounds.Offset;
Point startOffset = Offset;
Console.WriteLine ("start ConvertSection {0}- {1}",section.Name,section.Size);
if (section.Items.Count > 0)
{
@ -101,41 +101,35 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -101,41 +101,35 @@ namespace ICSharpCode.Reports.Core.Exporter
gapCalculator.CalculateGapList(section);
int i = 0;
foreach (BaseReportItem item in section.Items)
{
ISimpleContainer simpleContainer = item as ISimpleContainer;
Offset = new Point(Offset.X,Offset.Y + gapCalculator.GapBetweenItems[i] );
if (simpleContainer != null)
{
var containerSize = simpleContainer.Size;
EvaluationHelper.EvaluateReportItems(evaluator,simpleContainer.Items);
var layouter = (ILayouter)ServiceContainer.GetService(typeof(ILayouter));
LayoutHelper.SetLayoutForRow(Graphics,layouter, simpleContainer);
Offset = BaseConverter.ConvertContainer(convertedSection,simpleContainer,Offset.X,Offset);
Rectangle rsec = new Rectangle(section.Location,section.Size);
Rectangle ro = new Rectangle(section.Location,simpleContainer.Size);
if (!rsec.Contains(ro)) {
Console.WriteLine ("Update Size");
section.Size = new Size(section.Size.Width,Offset.Y - startOffset.Y );
}
simpleContainer.Size = containerSize;
}
else
{
var converteditem = ExportHelper.ConvertLineItem(item,Offset);
// Offset = new Point (Offset.X,Offset.Y + item.Size.Height);
convertedSection.Add(converteditem );
}
i ++;
}
Offset = new Point (Offset.X,Offset.Y + gapCalculator.LastGap);
// section.Size = sectionSize;
}
Console.WriteLine ("leave ConvertSection {0}",section.Size);
Console.WriteLine();
SectionBounds.Offset = Offset;
return convertedSection;
}

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

@ -50,7 +50,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -50,7 +50,7 @@ namespace ICSharpCode.Reports.Core.Exporter
#region PageBreak
protected void BuildNewPage(ExporterCollection myList,BaseSection section)
{
{
FirePageFull(myList);
section.SectionOffset = SinglePage.SectionBounds.PageHeaderRectangle.Location.Y;
myList.Clear();
@ -59,7 +59,10 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -59,7 +59,10 @@ namespace ICSharpCode.Reports.Core.Exporter
protected void FirePageFull (ExporterCollection items)
{
EventHelper.Raise<NewPageEventArgs>(PageFull,this,new NewPageEventArgs(items));
var newPage = new NewPageEventArgs (items,SinglePage.SectionBounds);
// EventHelper.Raise<NewPageEventArgs>(PageFull,this,new NewPageEventArgs(items,SinglePage.SectionBounds));
EventHelper.Raise<NewPageEventArgs>(PageFull,this,newPage);
SinglePage.SectionBounds = newPage.SectionBounds;
}

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

@ -57,9 +57,10 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -57,9 +57,10 @@ namespace ICSharpCode.Reports.Core.Exporter
private ExporterCollection ConvertDataRow (ISimpleContainer simpleContainer)
{
ExporterCollection exporterCollection = new ExporterCollection();
base.CurrentPosition = base.SectionBounds.DetailArea.Location;
// base.CurrentPosition = new Point (base.CurrentPosition.X,base.CurrentPosition.Y + 20);
Console.WriteLine("Convertdatarow start {0}",base.CurrentPosition);
// base.CurrentPosition = base.SectionBounds.DetailArea.Location;
base.CurrentPosition = base.SectionBounds.Offset;
// Console.WriteLine("Convertdatarow start {0}",base.CurrentPosition);
BaseSection section = parent as BaseSection;
DefaultLeftPosition = parent.Location.X;
@ -162,13 +163,17 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -162,13 +163,17 @@ namespace ICSharpCode.Reports.Core.Exporter
private Point CalculateStartPosition(BaseSection section)
{
var r = base.ReportModel;
base.SectionBounds.CalculatePageBounds(r);
var rr = new Point(base.SectionBounds.DetailArea.X,base.SectionBounds.PageHeaderRectangle.Bottom + 1);
var p = base.SectionBounds.DetailArea.Location;
Console.WriteLine ("PageBreak {0} - detailareaa {1}",rr,p);
Console.WriteLine("-----------------");
return base.SectionBounds.DetailArea.Location;
// var r = base.ReportModel;
// base.SectionBounds.CalculatePageBounds(r);
// var rr = new Point(base.SectionBounds.DetailArea.X,base.SectionBounds.PageHeaderRectangle.Bottom + 1);
// var p = base.SectionBounds.DetailArea.Location;
// var pp = SectionBounds.Offset;
// Console.WriteLine ("PageBreak {0} - detailareaa {1}",rr,p);
// Console.WriteLine("-----------------");
// Console.WriteLine("");
//// return base.SectionBounds.DetailArea.Location;
// return pp;
return SectionBounds.Offset;
}

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

@ -57,6 +57,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -57,6 +57,7 @@ namespace ICSharpCode.Reports.Core.Exporter
{
this.SinglePage.Items.AddRange(e.ItemsList);
PageBreak();
e.SectionBounds = SinglePage.SectionBounds;
}
@ -64,6 +65,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -64,6 +65,7 @@ namespace ICSharpCode.Reports.Core.Exporter
protected override void BuildReportHeader ()
{
SectionBounds.Offset = new Point(base.SectionBounds.MarginBounds.Left,base.SectionBounds.MarginBounds.Top);
if ((base.Pages.Count == 0) && (base.ReportModel.ReportHeader.Items.Count > 0))
{
base.ReportModel.ReportHeader.SectionOffset = base.SinglePage.SectionBounds.ReportHeaderRectangle.Top;
@ -73,25 +75,18 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -73,25 +75,18 @@ namespace ICSharpCode.Reports.Core.Exporter
base.ReportModel.ReportHeader.Size = Size.Empty;
}
base.SectionBounds.CalculatePageBounds(base.ReportModel);
var p = base.SectionBounds.Offset;
}
protected override void BuildPageHeader ()
{
// base.DebugShowSections();
Console.WriteLine();
Console.WriteLine ("start BuildPageHeader DetailArea.Location {0} - offset {1}",SectionBounds.DetailArea.Location,base.Offset);
base.SectionBounds.CalculatePageBounds(base.ReportModel);
ConvertSectionInternal (base.ReportModel.PageHeader);
Size s = base.ReportModel.PageHeader.Size;
if (SectionBounds.Offset.Y < base.ReportModel.PageHeader.SectionOffset) {
SectionBounds.Offset = new Point(SectionBounds.Offset.X,base.ReportModel.PageHeader.SectionOffset);
}
// base.ReportModel.PageHeader.Size = new Size(base.ReportModel.PageHeader.Size.Width,base.Offset.Y - base.ReportModel.PageHeader.SectionOffset);
s = base.ReportModel.PageHeader.Size;
base.SectionBounds.CalculatePageBounds(base.ReportModel);
Console.WriteLine ("end BuildPageHeader DetailArea.Location {0} - offset {1}",SectionBounds.DetailArea.Location,base.Offset);
// base.DebugShowSections();
Console.WriteLine();
ConvertSectionInternal (base.ReportModel.PageHeader);
}
@ -100,7 +95,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -100,7 +95,7 @@ namespace ICSharpCode.Reports.Core.Exporter
bool pageBreak = false;
base.ReportModel.ReportFooter.SectionOffset = footerRectangle.Top + GlobalValues.GapBetweenContainer;
SectionBounds.Offset = new Point(SectionBounds.Offset.X,footerRectangle.Top + GlobalValues.GapBetweenContainer );
if (!PrintHelper.IsRoomForFooter(base.SectionBounds,base.ReportModel.ReportFooter.Location)) {
PageBreak();
base.ReportModel.ReportFooter.SectionOffset = SectionBounds.DetailArea.Top;
@ -128,6 +123,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -128,6 +123,7 @@ namespace ICSharpCode.Reports.Core.Exporter
protected override void BuildPageFooter ()
{
base.ReportModel.PageFooter.SectionOffset = base.SinglePage.SectionBounds.PageFooterRectangle.Top;
SectionBounds.Offset = new Point(SectionBounds.Offset.X, base.SinglePage.SectionBounds.PageFooterRectangle.Top);
ConvertSectionInternal(base.ReportModel.PageFooter);
}

Loading…
Cancel
Save