Browse Source

BasePageBuilder fires 'SectionEvent' to modify Items at runtime

reports
Peter Forstmeier 12 years ago
parent
commit
c56fbe5fd0
  1. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
  2. 30
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Events/SectionEvent.cs
  3. 5
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportCreator.cs
  4. 8
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportModel.cs
  5. 21
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  6. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs
  7. 10
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportingFactory.cs
  8. 11
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/BaseConvertFixture.cs
  9. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/SectionConverterFixture.cs
  10. 9
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/PrintEventArgs.cs

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj

@ -102,6 +102,7 @@ @@ -102,6 +102,7 @@
<Compile Include="Src\DataSource\PropertyPath.cs" />
<Compile Include="Src\DataSource\PropertyTypeHash.cs" />
<Compile Include="Src\DataSource\ReflectionExtension.cs" />
<Compile Include="Src\Events\SectionEvent.cs" />
<Compile Include="Src\Exporter\BaseExporter.cs" />
<Compile Include="Src\Exporter\DebugExporter.cs" />
<Compile Include="Src\Exporter\Visitors\ExpressionVisitor.cs" />
@ -207,6 +208,7 @@ @@ -207,6 +208,7 @@
<Folder Include="Src\DataManager\Listhandling" />
<Folder Include="Src\Expressions" />
<Folder Include="Src\Items\Graphics" />
<Folder Include="Src\Events" />
<Folder Include="Src\Pdf" />
<Folder Include="Src\Wpf" />
<Folder Include="Src\PageBuilder" />

30
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Events/SectionEvent.cs

@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 05.02.2014
* Time: 20:33
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using ICSharpCode.Reporting.Interfaces;
namespace ICSharpCode.Reporting
{
/// <summary>
/// Description of SectionEvent.
/// </summary>
public class SectionEventArgs : EventArgs
{
public SectionEventArgs(IReportContainer section){
if (section == null)
throw new ArgumentNullException("section");
Section = section;
}
public IReportContainer Section {get;private set;}
}
}

5
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportCreator.cs

@ -17,11 +17,8 @@ @@ -17,11 +17,8 @@
// DEALINGS IN THE SOFTWARE.
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.Interfaces
@ -33,7 +30,7 @@ namespace ICSharpCode.Reporting.Interfaces @@ -33,7 +30,7 @@ namespace ICSharpCode.Reporting.Interfaces
{
void BuildExportList ();
Collection<ExportPage> Pages {get;}
event EventHandler<SectionEventArgs> SectionRendering;
// PagesCollection Pages{get;}
// event EventHandler<PageCreatedEventArgs> PageCreated;
// event EventHandler<SectionRenderEventArgs> SectionRendering;

8
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportModel.cs

@ -31,15 +31,7 @@ namespace ICSharpCode.Reporting.Interfaces @@ -31,15 +31,7 @@ namespace ICSharpCode.Reporting.Interfaces
{
ReportSettings ReportSettings {get;set;}
Collection<BaseSection> SectionCollection {get;}
/*
ISection ReportHeader {get;}
ISection PageHeader {get;}
ISection DetailSection {get;}
ISection PageFooter {get;}
ISection ReportFooter {get;}
GlobalEnums.PushPullModel DataModel {get;}
*/
IReportContainer ReportHeader {get;}
IReportContainer PageHeader {get;}
IReportContainer DetailSection {get;}

21
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs

@ -39,6 +39,8 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -39,6 +39,8 @@ namespace ICSharpCode.Reporting.PageBuilder
/// </summary>
public class BasePageBuilder:IReportCreator
{
public event EventHandler<SectionEventArgs> SectionRendering;
public BasePageBuilder(IReportModel reportModel){
if (reportModel == null) {
@ -53,14 +55,29 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -53,14 +55,29 @@ namespace ICSharpCode.Reporting.PageBuilder
void BuildReportHeader(){
if (Pages.Count == 0) {
var header = CreateSection(ReportModel.ReportHeader,CurrentLocation);
var sea = new SectionEventArgs(ReportModel.ReportHeader);
Raise<SectionEventArgs> (SectionRendering,this,sea);
var header = CreateSection(sea.Section,CurrentLocation);
var r = new Rectangle(header.Location.X, header.Location.Y, header.Size.Width, header.Size.Height);
CurrentLocation = new Point (ReportModel.ReportSettings.LeftMargin,r.Bottom + 1);
AddSectionToPage(header);
Raise<SectionEventArgs> (SectionRendering,this,new SectionEventArgs(ReportModel.ReportHeader));
}
}
protected static void Raise <T>(EventHandler<T> handler, object sender, T e)
where T: EventArgs{
// Copy to a temporary variable to be thread-safe.
EventHandler<T> temp = handler;
if (temp != null) {
temp(sender, e);
}
}
void BuildPageHeader(){
var pageHeader = CreateSection(ReportModel.PageHeader,CurrentLocation);
DetailStart = new Point(ReportModel.ReportSettings.LeftMargin,pageHeader.Location.Y + pageHeader.DesiredSize.Height +1);
@ -85,6 +102,8 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -85,6 +102,8 @@ namespace ICSharpCode.Reporting.PageBuilder
}
protected void BuildReportFooter(){
var lastSection = CurrentPage.ExportedItems.Last();
CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin,

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs

@ -35,9 +35,11 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -35,9 +35,11 @@ namespace ICSharpCode.Reporting.PageBuilder
/// <summary>
/// Description of DataPageBuilder.
/// </summary>
public class DataPageBuilder:BasePageBuilder
{
public DataPageBuilder(IReportModel reportModel,IEnumerable list):base(reportModel)
{
List = list;

10
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportingFactory.cs

@ -34,11 +34,16 @@ namespace ICSharpCode.Reporting @@ -34,11 +34,16 @@ namespace ICSharpCode.Reporting
public class ReportingFactory
{
void Method(object s,EventArgs e)
{
Console.WriteLine("Got Event {0}",s.ToString());
}
public IReportCreator ReportCreator (Stream stream,IEnumerable list)
{
ReportModel = LoadReportModel (stream);
IReportCreator builder = null;
builder = new DataPageBuilder(ReportModel,list );
var builder = new DataPageBuilder(ReportModel,list );
return builder;
}
@ -57,6 +62,7 @@ namespace ICSharpCode.Reporting @@ -57,6 +62,7 @@ namespace ICSharpCode.Reporting
{
ReportModel = LoadReportModel (stream);
var builder = new FormPageBuilder(ReportModel);
builder.SectionRendering += (sender, e) => Method(sender, e);
return builder;
}

11
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/BaseConvertFixture.cs

@ -19,6 +19,7 @@ @@ -19,6 +19,7 @@
using System;
using System.Reflection;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
using NUnit.Framework;
@ -56,6 +57,16 @@ namespace ICSharpCode.Reporting.Test.PageBuilder @@ -56,6 +57,16 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
}
[Test]
public void testeventt() {
reportCreator.SectionRendering += (sender, e) => {
Console.WriteLine("Hi with from {0} with {1}",e.ToString(),e.Section.Name);
((BaseTextItem)e.Section.Items[0]).Text = "hallo";
};
reportCreator.BuildExportList();
}
[SetUp]
public void LoadFromStream()
{

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/SectionConverterFixture.cs

@ -71,7 +71,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder @@ -71,7 +71,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
}
}
[SetUp]
public void Init()
{

9
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/PrintEventArgs.cs

@ -20,14 +20,7 @@ using System; @@ -20,14 +20,7 @@ using System;
using System.Drawing;
/// <summary>
/// Handles BeforPrint and AfterPrint Events
/// </summary>
/// <remarks>
/// created by - Forstmeier Peter
/// created on - 22.11.2004 13:06:44
/// </remarks>
namespace ICSharpCode.Reports.Core {
public class SectionEventArgs : EventArgs

Loading…
Cancel
Save