Browse Source

layout

pull/15/head^2
peterforstmeier 15 years ago
parent
commit
cc68e009a2
  1. 15
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SectionBounds.cs
  2. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SinglePage.cs
  3. 16
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs
  4. 5
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs
  5. 36
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs
  6. 14
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs
  7. 25
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs
  8. 31
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportHelper.cs

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

@ -101,6 +101,11 @@ namespace ICSharpCode.Reports.Core.BaseClasses @@ -101,6 +101,11 @@ namespace ICSharpCode.Reports.Core.BaseClasses
section.SectionOffset,
this.marginBounds.Width,
section.Size.Height + 3 * GlobalValues.GapBetweenContainer);
Console.WriteLine("\tMeasurePageHeader {0}",pageHeaderRectangle);
Console.WriteLine("\tDetailStart {0}",DetailStart);
}
@ -135,6 +140,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses @@ -135,6 +140,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses
//Test
/*
public void MeasureDetailArea ()
{
this.detailArea = new Rectangle (this.DetailStart.X,
@ -142,7 +148,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses @@ -142,7 +148,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses
this.pageHeaderRectangle.Width,
(this.pageFooterRectangle.Top -1) - (this.pageHeaderRectangle.Bottom + 1));
}
*/
#endregion
@ -198,8 +204,10 @@ namespace ICSharpCode.Reports.Core.BaseClasses @@ -198,8 +204,10 @@ namespace ICSharpCode.Reports.Core.BaseClasses
public Point DetailStart
{
get {
return new Point(this.pageHeaderRectangle.Left,
this.pageHeaderRectangle.Bottom + 3 * GlobalValues.GapBetweenContainer);
// return new Point(this.pageHeaderRectangle.Left,
// this.pageHeaderRectangle.Bottom + 3 * GlobalValues.GapBetweenContainer);
return new Point(this.pageHeaderRectangle.Left,
this.pageHeaderRectangle.Bottom );
}
}
@ -218,6 +226,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses @@ -218,6 +226,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses
/// </summary>
//Test
public Rectangle DetailArea
{
get {

2
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SinglePage.cs

@ -43,7 +43,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses @@ -43,7 +43,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses
this.sectionBounds.MeasureReportFooter(reportModel.ReportFooter);
this.sectionBounds.MeasureDetailArea();
//this.sectionBounds.MeasureDetailArea();
this.sectionBounds.DetailSectionRectangle = new System.Drawing.Rectangle(reportModel.DetailSection.Location.X,sectionBounds.DetailStart.Y,
reportModel.DetailSection.Size.Width,

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

@ -114,20 +114,26 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -114,20 +114,26 @@ namespace ICSharpCode.Reports.Core.Exporter
LayoutHelper.SetLayoutForRow(Graphics,layouter, simpleContainer);
ExportContainer exportContainer = ExportHelper.ConvertToContainer(simpleContainer,Offset);
ExporterCollection exporterCollection = ExportHelper.ConvertPlainCollection(simpleContainer.Items,exportContainer.StyleDecorator.Location);
exportContainer.Items.AddRange(exporterCollection);
Offset = new Point(Offset.X,Offset.Y + exportContainer.StyleDecorator.Size.Height + GlobalValues.GapBetweenContainer);
/*
Offset = ExportHelper.ConvertPlainCollection_2(exportContainer,simpleContainer.Items,Offset);
*/
convertedSection.Add(exportContainer);
Offset = new Point(Offset.X,Offset.Y + exportContainer.StyleDecorator.Size.Height + GlobalValues.GapBetweenContainer);
//Console.WriteLine("{0} - {1}",exportContainer.StyleDecorator.Size,item.Size);
}
else
{
var converteditem = ExportHelper.ConvertLineItem(item,Offset);
Offset = new Point(Offset.X,Offset.Y + converteditem.StyleDecorator.Size.Height + GlobalValues.GapBetweenContainer);
Offset = new Point(Offset.X,Offset.Y + converteditem.StyleDecorator.Size.Height + GlobalValues.GapBetweenContainer);
convertedSection.Add(converteditem);
}
section.Size = new Size(section.Size.Width,Offset.Y - section.SectionOffset);
// section.Size = new Size(section.Size.Width,Offset.Y - section.SectionOffset);
}
}
return convertedSection;

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

@ -52,13 +52,13 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -52,13 +52,13 @@ namespace ICSharpCode.Reports.Core.Exporter
}
#region PageBreak
protected void BuildNewPage(ExporterCollection myList,BaseSection section)
{
FirePageFull(myList);
section.SectionOffset = SinglePage.SectionBounds.PageHeaderRectangle.Location.Y;
// Console.WriteLine("BuildNewPage with {0} - {1}",SinglePage.SectionBounds.PageHeaderRectangle.Location,section.SectionOffset);
myList.Clear();
}
@ -71,6 +71,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -71,6 +71,7 @@ namespace ICSharpCode.Reports.Core.Exporter
#endregion
#region Events
protected void FireRowRendering (ISimpleContainer detailRow,IDataNavigator currentNavigator)
@ -229,7 +230,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -229,7 +230,7 @@ namespace ICSharpCode.Reports.Core.Exporter
mylist.AddRange(ml);
curPos = new Point (DefaultLeftPosition,CurrentPosition.Y + simpleContainer.Size.Height);
curPos = new Point (DefaultLeftPosition,CurrentPosition.Y + simpleContainer.Size.Height + 2 * GlobalValues.GapBetweenContainer);
simpleContainer.Size = rowSize;
return curPos;

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

@ -57,8 +57,10 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -57,8 +57,10 @@ namespace ICSharpCode.Reports.Core.Exporter
private ExporterCollection ConvertDataRow (ISimpleContainer simpleContainer)
{
ExporterCollection exporterCollection = new ExporterCollection();
base.CurrentPosition = new Point(base.SectionBounds.DetailStart.X,base.SectionBounds.DetailStart.Y);
BaseSection section = parent as BaseSection;
DefaultLeftPosition = parent.Location.X;
@ -70,8 +72,9 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -70,8 +72,9 @@ namespace ICSharpCode.Reports.Core.Exporter
groupSize = section.Items[0].Size;
childSize = section.Items[1].Size;
}
do {
// Console.WriteLine("start with section at {0}",section.SectionOffset);
// Console.WriteLine();
do {
base.SaveSectionSize(section.Size);
PrintHelper.AdjustSectionLocation (section);
section.Size = this.SectionBounds.DetailSectionRectangle.Size;
@ -103,7 +106,6 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -103,7 +106,6 @@ namespace ICSharpCode.Reports.Core.Exporter
FillRow(simpleContainer,childNavigator);
FireRowRendering(simpleContainer,childNavigator);
PrepareContainerForConverting(section,simpleContainer);
// base.Evaluator.SinglePage.IDataNavigator = childNavigator;
base.CurrentPosition = ConvertStandardRow(exporterCollection,simpleContainer);
CheckForPageBreak(section,exporterCollection);
}
@ -146,22 +148,42 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -146,22 +148,42 @@ namespace ICSharpCode.Reports.Core.Exporter
{
var pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[0],base.CurrentPosition);
if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds)) {
if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds))
{
base.CurrentPosition = ForcePageBreak (exporterCollection,section);
Console.WriteLine("\t -new CurPos = {0}",base.CurrentPosition);
}
}
protected override Point ForcePageBreak(ExporterCollection exporterCollection, BaseSection section)
{
Console.WriteLine("PageBreak");
base.ForcePageBreak(exporterCollection,section);
return CalculateStartPosition();
return CalculateStartPosition(section);
}
private Point CalculateStartPosition()
private Point CalculateStartPosition(BaseSection section)
{
return new Point(base.SectionBounds.PageHeaderRectangle.X,base.SectionBounds.PageHeaderRectangle.Y);
/*
Console.WriteLine();
Console.WriteLine(" CalculateStartPosition");
Console.WriteLine("{0}",base.SectionBounds.DetailStart);
Console.WriteLine("{0} ",SectionBounds.DetailArea);
Console.WriteLine("{0} ",base.SectionBounds.ReportHeaderRectangle);
Console.WriteLine("{0} ",base.SectionBounds.PageHeaderRectangle);
// return new Point (base.SectionBounds.PageHeaderRectangle.X,SectionBounds.DetailStart.Y);
// return new Point (base.SectionBounds.PageHeaderRectangle.X,SectionBounds.DetailStart.Y);
// return new Point (base.SectionBounds.PageHeaderRectangle.X,SectionBounds.DetailArea.Top);
// return new Point (base.SectionBounds.PageHeaderRectangle.X,base.SectionBounds.PageHeaderRectangle.Bottom);
var pp = new Point (base.SectionBounds.PageHeaderRectangle.X,base.SectionBounds.PageHeaderRectangle.Bottom);
Console.WriteLine ("Bottom {0}",pp);
Console.WriteLine("secoffset {0}",section.SectionOffset);
*/
return new Point (base.SectionBounds.PageHeaderRectangle.X,section.SectionOffset);
}

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

@ -180,6 +180,20 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -180,6 +180,20 @@ namespace ICSharpCode.Reports.Core.Exporter
protected override Point ForcePageBreak(ExporterCollection exporterCollection, BaseSection section)
{
base.ForcePageBreak(exporterCollection, section);
Console.WriteLine();
Console.WriteLine(" CalculateStartPosition in TableConverter");
Console.WriteLine("{0}",base.SectionBounds.DetailStart);
Console.WriteLine("{0} ",SectionBounds.DetailArea);
Console.WriteLine("{0} ",base.SectionBounds.ReportHeaderRectangle);
Console.WriteLine("{0} ",base.SectionBounds.PageHeaderRectangle);
// return new Point (base.SectionBounds.PageHeaderRectangle.X,SectionBounds.DetailStart.Y);
// return new Point (base.SectionBounds.PageHeaderRectangle.X,SectionBounds.DetailStart.Y);
// return new Point (base.SectionBounds.PageHeaderRectangle.X,SectionBounds.DetailArea.Top);
// return new Point (base.SectionBounds.PageHeaderRectangle.X,base.SectionBounds.PageHeaderRectangle.Bottom);
var pp = new Point (base.SectionBounds.PageHeaderRectangle.X,base.SectionBounds.PageHeaderRectangle.Bottom);
Console.WriteLine ("Bottom {0}",pp);
Console.WriteLine("secoffset {0}",section.SectionOffset);
return base.SectionBounds.ReportHeaderRectangle.Location;
}

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

@ -67,20 +67,38 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -67,20 +67,38 @@ namespace ICSharpCode.Reports.Core.Exporter
{
if ((base.Pages.Count == 0) && (base.ReportModel.ReportHeader.Items.Count > 0)) {
var s = base.ReportModel.ReportHeader;
Console.WriteLine("name <{0}>",s.Name);
Console.WriteLine("start section size {0} sectionoffset {1} offset {2}",s.Size,s.SectionOffset,base.Offset);
base.ReportModel.ReportHeader.SectionOffset = base.SinglePage.SectionBounds.ReportHeaderRectangle.Top;
ExporterCollection convertedList = base.ConvertSection (base.ReportModel.ReportHeader,this.dataNavigator.CurrentRow);
base.SectionBounds.MeasurePageHeader(base.ReportModel.ReportHeader);
base.SinglePage.Items.AddRange(convertedList);
// Console.WriteLine("end section size {0} sectionoffset {1} offset {2}",s.Size,s.SectionOffset,base.Offset);
// Console.WriteLine();
}
}
protected override void BuildPageHeader ()
{
var s = base.ReportModel.PageHeader;
var i = base.Pages.Count;
Console.WriteLine("");
Console.WriteLine("name <{0}> on PAGE {1}",s.Name,i);
Console.WriteLine("start section size {0} sectionoffset {1} offset {2}",s.Size,s.SectionOffset,base.Offset);
base.ReportModel.PageHeader.SectionOffset = base.AdjustPageHeader();
ExporterCollection convertedList = base.ConvertSection (base.ReportModel.PageHeader,this.dataNavigator.CurrentRow);
base.SectionBounds.MeasurePageHeader(base.ReportModel.PageHeader);
Console.WriteLine("end section size {0} sectionoffset {1} offset {2}",s.Size,s.SectionOffset,base.Offset);
base.SectionBounds.MeasurePageHeader(base.ReportModel.ReportHeader);
// base.SectionBounds.MeasurePageHeader(base.ReportModel.PageHeader);
// base.SectionBounds.MeasureDetailArea();
base.SinglePage.Items.AddRange(convertedList);
Console.WriteLine("aft-section size {0} sectionoffset {1} offset {2}",s.Size,s.SectionOffset,base.Offset);
Console.WriteLine();
}
@ -127,7 +145,10 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -127,7 +145,10 @@ namespace ICSharpCode.Reports.Core.Exporter
protected Point BuildDetail (BaseSection section,IDataNavigator dataNavigator)
{
ExporterCollection convertedList = new ExporterCollection();
var s = section;
// Console.WriteLine("name <{0}>",s.Name);
// Console.WriteLine("start section size {0} sectionoffset {1} offset {2}",s.Size,s.SectionOffset,base.Offset);
// Console.WriteLine("----");
foreach (BaseReportItem item in section.Items)
{
IBaseConverter baseConverter = ConverterFactory.CreateConverter(item,dataNavigator,

31
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportHelper.cs

@ -10,6 +10,7 @@ using System; @@ -10,6 +10,7 @@ using System;
using System.Drawing;
using ICSharpCode.Reports.Core.BaseClasses.Printing;
using ICSharpCode.Reports.Core.Exporter;
using ICSharpCode.Reports.Core.Globals;
using ICSharpCode.Reports.Core.Interfaces;
namespace ICSharpCode.Reports.Core.Project.Exporter
@ -60,6 +61,36 @@ namespace ICSharpCode.Reports.Core.Project.Exporter @@ -60,6 +61,36 @@ namespace ICSharpCode.Reports.Core.Project.Exporter
}
public static Point ConvertPlainCollection_2 (ExportContainer container,ReportItemCollection items,Point offset)
{
if (items == null) {
throw new ArgumentNullException("items");
}
ExporterCollection col = new ExporterCollection();
Point o = offset;
if (items.Count > 0) {
foreach(BaseReportItem item in items)
{
container.Items.Add(ExportHelper.ConvertLineItem(item,offset));
}
Size max = Size.Empty;
foreach (var element in items) {
if (element.Size.Height > max.Height) {
max = element.Size;
}
}
if (container.StyleDecorator.Size.Height > max.Height) {
offset = new Point (o.X,o.Y + container.StyleDecorator.Size.Height + GlobalValues.GapBetweenContainer);
}
}
return offset;
}
public static ExportContainer ConvertToContainer (ISimpleContainer container,Point offset)
{
if (container == null) {

Loading…
Cancel
Save