diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj index 20c50ddde8..46acd2dd98 100644 --- a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj @@ -136,6 +136,7 @@ + diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/Layouter.cs b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/Layouter.cs index 05324a4a94..826b0372de 100644 --- a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/Layouter.cs +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/Layouter.cs @@ -33,7 +33,7 @@ namespace ICSharpCode.Reports.Core } BaseReportItem containerItem = container as BaseReportItem; - container.Items.SortByLocation(); +// container.Items.SortByLocation(); Rectangle desiredContainerRectangle = new Rectangle (containerItem.Location,containerItem.Size); System.Collections.Generic.IEnumerable canGrowShrinkCollection = from bt in container.Items where bt.CanGrow == true select bt; @@ -62,7 +62,7 @@ namespace ICSharpCode.Reports.Core if (section == null) { throw new ArgumentNullException("section"); } - section.Items.SortByLocation(); + //section.Items.SortByLocation(); IEnumerable canGrowShrinkCollection = from bt in section.Items where bt.CanGrow == true select bt; diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Collections/Collections.cs b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Collections/Collections.cs index 84754d5328..8f181cf9f5 100644 --- a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Collections/Collections.cs +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Collections/Collections.cs @@ -352,6 +352,10 @@ namespace ICSharpCode.Reports.Core{ public void AddRange (IEnumerable items){ foreach (var item in items) { + IExportContainer container = item as IExportContainer; + if (container != null) { + AddRange(container.Items); + } this.Add (item); } } diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs index f7e1104927..7bbd35cc70 100644 --- a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs @@ -90,13 +90,14 @@ namespace ICSharpCode.Reports.Core.Exporter #region Converters + /* protected void ConvertSection (BaseSection section,int currentRow) { this.FireSectionRenderEvent (section ,currentRow); this.Convert(section); } - - + */ + /* private void Convert (BaseSection section) { this.exportItemsConverter.Offset = section.SectionOffset; @@ -146,58 +147,69 @@ namespace ICSharpCode.Reports.Core.Exporter } } } + */ + - protected ExporterCollection bak_Convert (BaseSection section) + protected ExporterCollection ConvertSection (BaseSection section,int dataRow) { + FireSectionRenderEvent (section ,dataRow); this.exportItemsConverter.Offset = section.SectionOffset; PrintHelper.AdjustParent((BaseSection)section,section.Items); - ExporterCollection list = null; - /* + + ExporterCollection list = new ExporterCollection(); + if (section.DrawBorder == true) { - BaseRectangleItem debugRectangle = new BaseRectangleItem(); - debugRectangle = new BaseRectangleItem(); - debugRectangle.Location = new Point (0 ,0); - debugRectangle.Size = new Size(section.Size.Width,section.Size.Height); - debugRectangle.FrameColor = section.FrameColor; - section.Items.Insert(0,debugRectangle); + section.Items.Insert(0,CreateDebugItem(section)); } - */ + if (section.Items.Count > 0) { - ISimpleContainer container = section.Items[0] as ISimpleContainer; - if (container != null) { + foreach (IReportItem item in section.Items) { - ExportContainer exportContainer = this.exportItemsConverter.ConvertToContainer(container); - this.exportItemsConverter.ParentLocation = exportContainer.StyleDecorator.Location; - - AdjustBackColor (container); - - ExporterCollection clist = container.Items.ConvertAll (this.exportItemsConverter.ConvertToLineItem) as ExporterCollection; - - exportContainer.Items.AddRange(clist); - list = new ExporterCollection(); - list.Add(exportContainer); - - } else { - this.exportItemsConverter.ParentLocation = section.Location; - - Rectangle desiredRectangle = layouter.Layout(this.graphics,section); - Rectangle sectionRectangle = new Rectangle(0,0,section.Size.Width,section.Size.Height); - - if (!sectionRectangle.Contains(desiredRectangle)) { - section.Size = new Size(section.Size.Width,desiredRectangle.Size.Height); + ISimpleContainer container = item as ISimpleContainer; + if (container != null) { + ExportContainer exportContainer = this.exportItemsConverter.ConvertToContainer(container); + this.exportItemsConverter.ParentLocation = exportContainer.StyleDecorator.Location; + + AdjustBackColor (container); + ExporterCollection clist = container.Items.ConvertAll (this.exportItemsConverter.ConvertToLineItem); + exportContainer.Items.AddRange(clist); + list.Add(exportContainer); + + } else { + this.exportItemsConverter.ParentLocation = section.Location; + + Rectangle desiredRectangle = layouter.Layout(this.graphics,section); + Rectangle sectionRectangle = new Rectangle(0,0,section.Size.Width,section.Size.Height); + + if (!sectionRectangle.Contains(desiredRectangle)) { + section.Size = new Size(section.Size.Width,desiredRectangle.Size.Height); + } + + list = section.Items.ConvertAll (this.exportItemsConverter.ConvertToLineItem); } - - list = section.Items.ConvertAll (this.exportItemsConverter.ConvertToLineItem); - } - if ((list != null) && (list.Count) > 0) { -// this.singlePage.Items.AddRange(list); +// if ((list != null) && (list.Count) > 0) { + //// this.singlePage.Items.AddRange(list); +// } +// } } } return list; } + + private static BaseRectangleItem CreateDebugItem (BaseReportItem item) + { + BaseRectangleItem debugRectangle = new BaseRectangleItem(); + debugRectangle = new BaseRectangleItem(); + debugRectangle.Location = new Point (0 ,0); + debugRectangle.Size = new Size(item.Size.Width,item.Size.Height); + debugRectangle.FrameColor = item.FrameColor; + return debugRectangle; + } + + private static void AdjustBackColor (ISimpleContainer container) { BaseReportItem parent = container as BaseReportItem; diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs index c9aa69a156..f69801d5da 100644 --- a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs @@ -84,10 +84,11 @@ namespace ICSharpCode.Reports.Core.Exporter protected override void BuildReportHeader () { - if (base.Pages.Count == 0) { + if ((base.Pages.Count == 0) && (base.ReportModel.ReportHeader.Items.Count > 0)) { + base.ReportModel.ReportHeader.SectionOffset = base.SinglePage.SectionBounds.ReportHeaderRectangle.Top; - base.ConvertSection (base.ReportModel.ReportHeader, - this.dataNavigator.CurrentRow); + ExporterCollection convertedList = base.ConvertSection (base.ReportModel.ReportHeader,this.dataNavigator.CurrentRow); + base.SinglePage.Items.AddRange(convertedList); } } @@ -95,40 +96,26 @@ namespace ICSharpCode.Reports.Core.Exporter protected override void BuildPageHeader () { base.ReportModel.PageHeader.SectionOffset = base.AdjustPageHeader(); - ExporterCollection convertedList = new ExporterCollection(); - /* - IBaseConverter baseConverter = ConverterFactory.CreateConverter(base.ReportModel.PageHeader.Items[0], - dataNavigator, - this.SinglePage,this.ExportItemsConverter, - base.Layouter); - if (baseConverter != null) { - - convertedList = baseConverter.Convert(base.ReportModel.PageHeader,base.ReportModel.PageHeader.Items[0]); - - } else { - convertedList = base.bak_Convert (base.ReportModel.PageHeader); - - } - */ - convertedList = base.bak_Convert (base.ReportModel.PageHeader); - + ExporterCollection convertedList = base.ConvertSection (base.ReportModel.PageHeader,this.dataNavigator.CurrentRow); base.SinglePage.Items.AddRange(convertedList); + //orginal + //base.ConvertSection(base.ReportModel.PageHeader,0); } protected override void BuildReportFooter (Rectangle footerRectangle) { base.ReportModel.ReportFooter.SectionOffset = footerRectangle.Top; - base.ConvertSection (base.ReportModel.ReportFooter, - this.dataNavigator.CurrentRow); + ExporterCollection convertedList = base.ConvertSection (base.ReportModel.ReportFooter,this.dataNavigator.CurrentRow); + base.SinglePage.Items.AddRange(convertedList); } protected override void BuildPageFooter () { base.ReportModel.PageFooter.SectionOffset = base.SinglePage.SectionBounds.PageFooterRectangle.Top; - base.ConvertSection (base.ReportModel.PageFooter, - this.dataNavigator.CurrentRow); + ExporterCollection convertedList = convertedList = base.ConvertSection (base.ReportModel.PageFooter,this.dataNavigator.CurrentRow); + base.SinglePage.Items.AddRange(convertedList); } @@ -155,7 +142,6 @@ namespace ICSharpCode.Reports.Core.Exporter } - #endregion private void WritePages () diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportContainer.cs b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportContainer.cs index 74fb03b054..a12f909d23 100644 --- a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportContainer.cs +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportContainer.cs @@ -13,45 +13,49 @@ namespace ICSharpCode.Reports.Core.Exporter /// /// Description of ContainerItem. /// - public class ExportContainer:BaseExportColumn + public class ExportContainer : BaseExportColumn, IExportContainer { ExporterCollection items; - + #region Constructor - - public ExportContainer():base(){ + + public ExportContainer() : base() + { base.IsContainer = true; } - - public ExportContainer (BaseStyleDecorator itemStyle):base(itemStyle,true){ + + public ExportContainer(BaseStyleDecorator itemStyle) : base(itemStyle, true) + { } - + #endregion - + #region overrides - - - public override void DrawItem(System.Drawing.Graphics graphics){ + + + public override void DrawItem(System.Drawing.Graphics graphics) + { base.Decorate(graphics); } - + public override void DrawItem(PdfWriter pdfWriter, ICSharpCode.Reports.Core.Exporter.ExportRenderer.PdfUnitConverter converter) { base.DrawItem(pdfWriter, converter); base.Decorate(); } - - + + #endregion - - public void AddLineItem (BaseExportColumn item) { + + public void AddLineItem(BaseExportColumn item) + { if (item == null) { throw new ArgumentNullException("item"); } this.items.Add(item); } - + public ExporterCollection Items { get { if (this.items == null) { diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/IExportContainer.cs b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/IExportContainer.cs new file mode 100644 index 0000000000..8e7dd74860 --- /dev/null +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/IExportContainer.cs @@ -0,0 +1,20 @@ +// +// +// +// +// $Revision: 5369 $ +// + +using System; +using iTextSharp.text.pdf; + +namespace ICSharpCode.Reports.Core.Exporter +{ + public interface IExportContainer + { + void DrawItem(System.Drawing.Graphics graphics); + void DrawItem(PdfWriter pdfWriter, ICSharpCode.Reports.Core.Exporter.ExportRenderer.PdfUnitConverter converter); + void AddLineItem(BaseExportColumn item); + ExporterCollection Items { get; } + } +} diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/FormPageBuilder.cs b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/FormPageBuilder.cs index 1f19ab1107..0441e1364e 100644 --- a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/FormPageBuilder.cs +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/FormPageBuilder.cs @@ -51,45 +51,39 @@ namespace ICSharpCode.Reports.Core.Exporter protected override void BuildReportHeader() { - base.BuildReportHeader(); if (base.Pages.Count == 0) { this.ReportModel.ReportHeader.SectionOffset = base.SinglePage.SectionBounds.ReportHeaderRectangle.Top; - base.ConvertSection(this.ReportModel.ReportHeader,1); + ExporterCollection convertedList = base.ConvertSection (base.ReportModel.ReportHeader,0); + base.SinglePage.Items.AddRange(convertedList); } } protected override void BuildPageHeader() { - base.BuildPageHeader(); this.ReportModel.PageHeader.SectionOffset = base.SinglePage.SectionBounds.PageHeaderRectangle.Top; - base.ConvertSection(this.ReportModel.PageHeader, -// base.SinglePage.SectionBounds.PageHeaderRectangle.Top, - 1 ); + ExporterCollection convertedList = base.ConvertSection (base.ReportModel.PageHeader,0); + base.SinglePage.Items.AddRange(convertedList); } protected override void BuildDetailInternal(BaseSection section) { base.BuildDetailInternal(section); section.SectionOffset = base.SinglePage.SectionBounds.DetailStart.Y; - base.ConvertSection (section, -// base.SinglePage.SectionBounds.DetailStart.Y, - 1); } protected override void BuildPageFooter() { - base.BuildPageFooter(); this.ReportModel.PageFooter.SectionOffset = base.SinglePage.SectionBounds.PageFooterRectangle.Top; - base.ConvertSection(this.ReportModel.PageFooter, -// base.SinglePage.SectionBounds.PageFooterRectangle.Top, - 1 ); + ExporterCollection convertedList = convertedList = base.ConvertSection (base.ReportModel.PageFooter,0); + base.SinglePage.Items.AddRange(convertedList); } protected override void BuildReportFooter(Rectangle footerRectangle) { - base.BuildReportFooter(footerRectangle); + ExporterCollection convertedList = base.ConvertSection (base.ReportModel.ReportFooter,0); + base.SinglePage.Items.AddRange(convertedList); }