diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/PrintEventArgs.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/PrintEventArgs.cs index bca24510e7..adbc141838 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/PrintEventArgs.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/PrintEventArgs.cs @@ -44,7 +44,7 @@ namespace ICSharpCode.Reports.Core { } /// - /// This Event is fiered after an Item is printed + /// This Event is fired after an Item is printed /// public class AfterPrintEventArgs : System.EventArgs { PointF locationAfterPrint; diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/SectionRenderEventArgs.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/SectionRenderEventArgs.cs index 68ccc0f2ef..24874fe12a 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/SectionRenderEventArgs.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/SectionRenderEventArgs.cs @@ -8,38 +8,50 @@ namespace ICSharpCode.Reports.Core { /// Description of SectionRenderEventArgs. /// + + public class GroupHeaderEventArgs: EventArgs + { + public GroupHeaderEventArgs (BaseGroupedRow groupHeader) + { + GroupHeader = groupHeader; + } + + public BaseGroupedRow GroupHeader {get; private set;} + + } + + + public class RowRenderEventArgs : EventArgs + { + public RowRenderEventArgs (BaseRowItem row) + { + Row = row; + } + + BaseRowItem Row {get;set;} + } + + + public class SectionRenderEventArgs:SectionEventArgs{ - private int pageNumber; - private int rowNumber; - private BaseSection currentSection; + public SectionRenderEventArgs(BaseSection section, int pageNumber,int rowNumber, BaseSection currentSection):base(section){ - this.pageNumber = pageNumber; - this.currentSection = currentSection; - this.rowNumber = rowNumber; + this.PageNumber = pageNumber; + this.CurrentSection = currentSection; + this.RowNumber = rowNumber; } - public int PageNumber { - get { - return pageNumber; - } - } + public int PageNumber {get; private set;} - public int RowNumber { - get { - return rowNumber; - } - } + public int RowNumber {get; private set;} - public BaseSection CurrentSection { - get { - return currentSection; - } - } + public BaseSection CurrentSection {get; private set;} + } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs index 2f6ccc2be3..4035720337 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs @@ -22,6 +22,8 @@ namespace ICSharpCode.Reports.Core.Exporter public event EventHandler PageCreated; public event EventHandler SectionRendering; + public event EventHandler GroupHeaderRendering; + public event EventHandler RowRendering; #region Constructor @@ -220,6 +222,7 @@ namespace ICSharpCode.Reports.Core.Exporter #region Event's + protected void FireSectionRenderEvent (BaseSection section,int currentRow) { SectionRenderEventArgs ea = @@ -232,7 +235,17 @@ namespace ICSharpCode.Reports.Core.Exporter } + protected void FireGroupHeaderEvent (GroupHeaderEventArgs ghea) + { + EventHelper.Raise(GroupHeaderRendering,this,ghea); + + } + protected void FireRowRenderEvent (RowRenderEventArgs rrea) + { + EventHelper.Raise(RowRendering,this,rrea); + } + protected void FirePageCreated(ExporterPage page) { EventHelper.Raise(PageCreated,this, diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs index 864c7c2a39..545828d403 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs @@ -32,8 +32,8 @@ namespace ICSharpCode.Reports.Core.Exporter public event EventHandler PageFull; public event EventHandler SectionRendering; - - + public event EventHandler GroupHeaderRendering; + public event EventHandler RowRendering; public BaseConverter(IDataNavigator dataNavigator,ExporterPage singlePage, ILayouter layouter) @@ -74,6 +74,24 @@ namespace ICSharpCode.Reports.Core.Exporter #endregion + protected void FireRowRendering (ISimpleContainer detailRow) + { + BaseRowItem row = detailRow as BaseRowItem; + if (row == null) { + throw new ArgumentException("row"); + } + RowRenderEventArgs rrea = new RowRenderEventArgs(row); + EventHelper.Raise(RowRendering,this,rrea); + } + + + protected void FireGroupHeaderRendering (BaseGroupedRow groupHeader) + { + GroupHeaderEventArgs ghea = new GroupHeaderEventArgs(groupHeader); + EventHelper.Raise(GroupHeaderRendering,this,ghea); + } + + protected void FireSectionRendering (BaseSection section) { @@ -113,6 +131,7 @@ namespace ICSharpCode.Reports.Core.Exporter protected Point ConvertGroupChilds(ExporterCollection mylist, BaseSection section, ISimpleContainer simpleContainer, int defaultLeftPos, Point currentPosition) { PrepareContainerForConverting(section,simpleContainer); + FireRowRendering(simpleContainer); Point curPos = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition); AfterConverting (section,mylist); return curPos; @@ -155,6 +174,7 @@ namespace ICSharpCode.Reports.Core.Exporter public Point CurrentPosition {get;set;} #endregion + public Rectangle ParentRectangle { get { return parentRectangle; } } @@ -202,9 +222,7 @@ namespace ICSharpCode.Reports.Core.Exporter protected void PrepareContainerForConverting(BaseSection section,ISimpleContainer simpleContainer) { - if (section != null) { - FireSectionRendering(section); - } + FireSectionRendering(section); LayoutRow(simpleContainer); } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs index a09fb33aec..20efb8041e 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs @@ -18,6 +18,8 @@ namespace ICSharpCode.Reports.Core.Exporter private BaseReportItem parent; + + public GroupedRowConverter(IDataNavigator dataNavigator, ExporterPage singlePage, ILayouter layouter):base(dataNavigator,singlePage,layouter) { @@ -102,13 +104,10 @@ namespace ICSharpCode.Reports.Core.Exporter section.Items[0].Size = groupSize; section.Items[1].Size = childSize; - childNavigator.Fill(simpleContainer.Items); -// int p = base.CurrentPosition.Y; base.CurrentPosition = ConvertGroupChilds (exporterCollection,section, simpleContainer,defaultLeftPos,base.CurrentPosition); -// Console.WriteLine (" childs delta {0} - container {1}",base.CurrentPosition.Y - p,simpleContainer.Size); pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[1],base.CurrentPosition); @@ -134,11 +133,9 @@ namespace ICSharpCode.Reports.Core.Exporter // No Grouping at all, the first item in section.items is the DetailRow Size containerSize = section.Items[0].Size; -// int p = base.CurrentPosition.Y; - + base.FireRowRendering(simpleContainer); base.CurrentPosition = ConvertStandardRow (exporterCollection,section,simpleContainer,defaultLeftPos,base.CurrentPosition); -// Console.WriteLine ("delta {0} - container {1}",base.CurrentPosition.Y - p,simpleContainer.Size); section.Size = base.RestoreSectionSize; section.Items[0].Size = containerSize; } @@ -193,6 +190,7 @@ namespace ICSharpCode.Reports.Core.Exporter AfterConverting (section,list); retVal = new Point (leftPos,offset.Y + groupCollection[0].Size.Height + 20 + (3 *GlobalValues.GapBetweenContainer)); } else { + base.FireGroupHeaderRendering(groupedRows[0]); rowSize = groupedRows[0].Size; retVal = ConvertStandardRow(exportList,section,groupedRows[0],leftPos,offset); groupedRows[0].Size = rowSize; diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs index 912a7b7a93..80d9340b80 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs @@ -104,7 +104,7 @@ namespace ICSharpCode.Reports.Core.Exporter containerSize = simpleContainer.Size; childNavigator.Fill(simpleContainer.Items); -// int p = base.CurrentPosition.Y; + base.CurrentPosition = ConvertGroupChilds (exporterCollection, section, simpleContainer,defaultLeftPos,base.CurrentPosition); @@ -158,9 +158,11 @@ namespace ICSharpCode.Reports.Core.Exporter if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds)) { base.CurrentPosition = ForcePageBreak(exporterCollection,section); + base.CurrentPosition = ConvertStandardRow (exporterCollection,section,headerRow,defaultLeftPos,base.CurrentPosition); } // int p = base.CurrentPosition.Y; + base.FireRowRendering(simpleContainer); base.CurrentPosition = ConvertStandardRow (exporterCollection,section,simpleContainer,defaultLeftPos,base.CurrentPosition); // Console.WriteLine ("delta {0} - container {1}",base.CurrentPosition.Y - p,simpleContainer.Size); @@ -211,6 +213,7 @@ namespace ICSharpCode.Reports.Core.Exporter } else { rowSize = groupedRow[0].Size; + base.FireGroupHeaderRendering(groupedRow[0]); retVal = ConvertStandardRow(exportList,section,groupedRow[0],leftPos,offset); groupedRow[0].Size = rowSize; } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs index 9ba022bca7..2e9c872087 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs @@ -116,6 +116,9 @@ namespace ICSharpCode.Reports.Core.Exporter baseConverter.SectionRendering += OnSectionRendering; + baseConverter.GroupHeaderRendering += OnGroupHeaderRendering; + baseConverter.RowRendering += OnRowRendering; + baseConverter.Graphics = base.Graphics; baseConverter.PageFull += new EventHandler(OnPageFull); @@ -131,10 +134,23 @@ namespace ICSharpCode.Reports.Core.Exporter void OnSectionRendering (object sender,SectionRenderEventArgs e) { +// Console.WriteLine("Datapagebuilder : OnSectionRendering"); base.FireSectionRenderEvent(e.Section,e.RowNumber); } + + + void OnGroupHeaderRendering (object sender, GroupHeaderEventArgs ghea) + { - +// Console.WriteLine("Datapagebuilder : OnGroupHeaderRendering"); + base.FireGroupHeaderEvent(ghea); + } + + void OnRowRendering (object sender,RowRenderEventArgs rrea) + { +// Console.WriteLine("Datapagebuilder : OnRowRendering"); + base.FireRowRenderEvent(rrea); + } #endregion private void WritePages () diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/IReportCreator.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/IReportCreator.cs index 3c1a68621f..1a00a11f2e 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/IReportCreator.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/IReportCreator.cs @@ -15,5 +15,7 @@ namespace ICSharpCode.Reports.Core PagesCollection Pages{get;} event EventHandler PageCreated; event EventHandler SectionRendering; + event EventHandler GroupHeaderRendering; + event EventHandler RowRendering; } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IItemConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IItemConverter.cs index f0b83acd81..02ec09e0c2 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IItemConverter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IItemConverter.cs @@ -18,6 +18,7 @@ namespace ICSharpCode.Reports.Core.Interfaces { event EventHandler PageFull; event EventHandler SectionRendering; + SectionBounds SectionBounds {get;} IDataNavigator DataNavigator {get;} Rectangle ParentRectangle {get;} @@ -36,5 +37,7 @@ namespace ICSharpCode.Reports.Core.Interfaces { ExporterCollection Convert (BaseReportItem parent,BaseReportItem item); Point CurrentPosition {get;set;} + event EventHandler GroupHeaderRendering; + event EventHandler RowRendering; } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportViewer/ReportViewer.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportViewer/ReportViewer.cs index 950e9b8819..e807ead4cb 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportViewer/ReportViewer.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportViewer/ReportViewer.cs @@ -166,6 +166,8 @@ namespace ICSharpCode.Reports.Core.ReportViewer ILayouter layouter = new Layouter(); IReportCreator reportCreator = DataPageBuilder.CreateInstance(reportModel,data,layouter); reportCreator.SectionRendering += new EventHandler(PushPrinting); + reportCreator.GroupHeaderRendering += new EventHandler(GroupHeaderRendering); + reportCreator.RowRendering += new EventHandler(RowRendering); reportCreator.PageCreated += OnPageCreated; reportCreator.BuildExportList(); ShowCompleted(); @@ -192,7 +194,7 @@ namespace ICSharpCode.Reports.Core.ReportViewer private void PushPrinting (object sender,SectionRenderEventArgs e) { string sectionName = e.Section.Name; - + /* if (sectionName == ReportSectionNames.ReportHeader) { Console.WriteLine("PushPrinting :" + ReportSectionNames.ReportHeader); } @@ -216,6 +218,22 @@ namespace ICSharpCode.Reports.Core.ReportViewer else{ throw new WrongSectionException(sectionName); } + */ + } + + + private void GroupHeaderRendering (object sender, GroupHeaderEventArgs ghea) + { + Console.WriteLine(); + Console.WriteLine("ReportViewer - GroupHeaderRendering :"); +// BaseGroupedRow v = ghea.GroupHeader; +// v.BackColor = System.Drawing.Color.Red; + + } + + private void RowRendering (object sender,RowRenderEventArgs rrea) + { + Console.WriteLine("ReportViewer - RowRendering :"); } #endregion