Browse Source

Cleanup Interfaces and BaseClasses

reports
Peter Forstmeier 13 years ago
parent
commit
23d38d0864
  1. 9
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
  2. 36
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs
  3. 84
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs
  4. 20
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/IAcceptor.cs
  5. 21
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/IVisitor.cs
  6. 53
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitor.cs
  7. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ExportColumnFactory.cs
  8. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportColumn.cs
  9. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportContainer.cs
  10. 5
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IPrintableObject.cs
  11. 7
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportContainer.cs
  12. 4
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportCreator.cs
  13. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseSection.cs
  14. 9
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/PrintableItem.cs
  15. 18
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportContainer.cs
  16. 8
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportObject.cs
  17. 7
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  18. 13
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs
  19. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs
  20. 9
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportContainer.cs
  21. 7
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportText.cs
  22. 47
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs
  23. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/ICSharpCode.Reporting.Test.csproj
  24. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Model/Report_TwoItemsFixture.cs
  25. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/BaseConvertFixture.cs
  26. 8
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerConverterFixture.cs
  27. 33
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageBuilderFixture.cs
  28. 70
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs
  29. 52
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestHelper.cs

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

@ -55,9 +55,14 @@
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Src\Arrange\ArrangeStrategy.cs" />
<Compile Include="Src\BaseClasses\Page.cs" /> <Compile Include="Src\BaseClasses\Page.cs" />
<Compile Include="Src\BaseClasses\PageInfo.cs" /> <Compile Include="Src\BaseClasses\PageInfo.cs" />
<Compile Include="Src\Configuration\AssemblyInfo.cs" /> <Compile Include="Src\Configuration\AssemblyInfo.cs" />
<Compile Include="Src\Exporter\DebugExporter.cs" />
<Compile Include="Src\Exporter\IAcceptor.cs" />
<Compile Include="Src\Exporter\IVisitor.cs" />
<Compile Include="Src\Exporter\Visitor.cs" />
<Compile Include="Src\Factories\ExportColumnFactory.cs" /> <Compile Include="Src\Factories\ExportColumnFactory.cs" />
<Compile Include="Src\Factories\SectionFactory.cs" /> <Compile Include="Src\Factories\SectionFactory.cs" />
<Compile Include="Src\Interfaces\Export\IExportColumn.cs" /> <Compile Include="Src\Interfaces\Export\IExportColumn.cs" />
@ -74,7 +79,7 @@
<Compile Include="Src\Items\BaseTextItem.cs" /> <Compile Include="Src\Items\BaseTextItem.cs" />
<Compile Include="Src\Items\PrintableItem.cs" /> <Compile Include="Src\Items\PrintableItem.cs" />
<Compile Include="Src\Items\ReportContainer.cs" /> <Compile Include="Src\Items\ReportContainer.cs" />
<Compile Include="Src\Items\ReportItem.cs" /> <Compile Include="Src\Items\ReportObject.cs" />
<Compile Include="Src\Items\ReportModel.cs" /> <Compile Include="Src\Items\ReportModel.cs" />
<Compile Include="Src\Items\ReportSettings.cs" /> <Compile Include="Src\Items\ReportSettings.cs" />
<Compile Include="Src\PageBuilder\BasePageBuilder.cs" /> <Compile Include="Src\PageBuilder\BasePageBuilder.cs" />
@ -96,6 +101,8 @@
<Folder Include="Src\Items" /> <Folder Include="Src\Items" />
<Folder Include="Src\BaseClasses" /> <Folder Include="Src\BaseClasses" />
<Folder Include="Src\Factories" /> <Folder Include="Src\Factories" />
<Folder Include="Src\Exporter" />
<Folder Include="Src\Arrange" />
<Folder Include="Src\PageBuilder" /> <Folder Include="Src\PageBuilder" />
<Folder Include="Src\PageBuilder\Converter" /> <Folder Include="Src\PageBuilder\Converter" />
<Folder Include="Src\PageBuilder\ExportColumns" /> <Folder Include="Src\PageBuilder\ExportColumns" />

36
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs

@ -0,0 +1,36 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 22.04.2013
* Time: 19:11
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.Arrange
{
/// <summary>
/// Description of ArrangeStrategy.
/// </summary>
public interface IArrangeStrategy
{
void Arrange(IPrintableObject reportItem);
}
public class ContainerArrangeStrategy:IArrangeStrategy
{
public ContainerArrangeStrategy()
{
}
public void Arrange(IPrintableObject reportItem)
{
Console.WriteLine("Arrange {0}",reportItem.Name);
}
}
}

84
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs

@ -0,0 +1,84 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 18.04.2013
* Time: 20:06
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using ICSharpCode.Reporting.Interfaces.Export;
namespace ICSharpCode.Reporting.Exporter
{
/// <summary>
/// Description of DebugExporter.
/// </summary>
public class DebugExporter
{
public DebugExporter(Collection<IPage> pages)
{
if (pages == null) {
throw new ArgumentException("pages");
}
Pages = pages;
}
public void Run () {
foreach (var page in Pages) {
ShowDebug(page);
}
}
static void ShowDebug(IExportContainer container)
{
var visitor = new DebugVisitor();
foreach (var item in container.ExportedItems) {
if (item is IExportContainer) {
var a = item as IAcceptor;
if (a != null) {
Console.WriteLine("----");
a.Accept(visitor);
}
ShowDebug(item as IExportContainer);
} else {
var b = item as IAcceptor;
if (b != null) {
b.Accept(visitor);
}
}
}
}
/*
static void ShowDebug(IExportContainer container)
{
var visitor = new DebugVisitor();
foreach (var item in container.ExportedItems) {
if (item is IExportContainer) {
var a = item as IAcceptor;
if (a != null) {
Console.WriteLine("----");
a.Accept(visitor);
}
ShowDebug(item as IExportContainer);
} else {
var b = item as IAcceptor;
if (b != null) {
b.Accept(visitor);
}
}
}
}
*/
public Collection<IPage> Pages {get; private set;}
}
}

20
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/IAcceptor.cs

@ -0,0 +1,20 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 20.04.2013
* Time: 18:30
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
namespace ICSharpCode.Reporting.Exporter
{
/// <summary>
/// Description of IAcceptor.
/// </summary>
public interface IAcceptor
{
void Accept(IVisitor visitor);
}
}

21
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/IVisitor.cs

@ -0,0 +1,21 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 18.04.2013
* Time: 20:09
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.Exporter
{
public interface IVisitor
{
void Visit(ExportColumn exportColumn);
void Visit(ExportContainer exportColumn);
void Visit(ExportText exportColumn);
}
}

53
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitor.cs

@ -0,0 +1,53 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 18.04.2013
* Time: 20:09
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.Exporter
{
/// <summary>
/// Description of Visitor.
/// </summary>
///
public abstract class Visitor : IVisitor
{
public abstract void Visit(ExportColumn exportColumn);
public abstract void Visit(ExportContainer exportColumn);
public abstract void Visit(ExportText exportColumn);
}
// http://www.remondo.net/visitor-pattern-example-csharp/
// http://www.codeproject.com/Articles/42240/Visitor-Design-Pattern
// http://www.remondo.net/strategy-pattern-example-csharp/
public class DebugVisitor : Visitor
{
public override void Visit(ExportColumn exportColumn)
{
Console.WriteLine("Visit ExportColumn {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.Location);
}
public override void Visit(ExportContainer exportColumn)
{
Console.WriteLine("Visit ExportContainer {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.Location);
}
public override void Visit(ExportText exportColumn)
{
Console.WriteLine("Visit ExportText {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.Location);
}
}
}

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ExportColumnFactory.cs

@ -24,7 +24,7 @@ namespace ICSharpCode.Reporting.Factories
{ {
} }
public IExportColumn CreateItem (IPrintableObject item) { public static IExportColumn CreateItem (IPrintableObject item) {
var export = item.CreateExportColumn(); var export = item.CreateExportColumn();
return export; return export;
} }

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportColumn.cs

@ -8,6 +8,7 @@
*/ */
using System; using System;
using ICSharpCode.Reporting.BaseClasses; using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.Reporting.Exporter;
namespace ICSharpCode.Reporting.Interfaces.Export namespace ICSharpCode.Reporting.Interfaces.Export
{ {

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportContainer.cs

@ -17,7 +17,7 @@ namespace ICSharpCode.Reporting.Interfaces.Export
/// </summary> /// </summary>
public interface IExportContainer:IExportColumn public interface IExportContainer:IExportColumn
{ {
List<IExportColumn> ExportedItems {get;set;} List<IExportColumn> ExportedItems {get;}
} }
} }

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

@ -23,7 +23,10 @@ namespace ICSharpCode.Reporting.Interfaces
} }
public interface IPrintableObject:IReportObject { public interface IPrintableObject {
string Name{get;set;}
Size Size {get;set;}
Point Location {get;set;}
IExportColumn CreateExportColumn(); IExportColumn CreateExportColumn();
} }

7
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportContainer.cs

@ -16,9 +16,10 @@ namespace ICSharpCode.Reporting.Interfaces
/// <summary> /// <summary>
/// Description of IReportContainer. /// Description of IReportContainer.
/// </summary> /// </summary>
public interface IReportContainer :IReportObject public interface IReportContainer :IPrintableObject
{ {
List<IPrintableObject> Items {get;set;} List<IPrintableObject> Items {get;}
IExportContainer CreateExportColumn(); // IExportContainer CreateExportColumn();
// IExportColumn CreateExportColumn();
} }
} }

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

@ -8,6 +8,8 @@
*/ */
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel;
using ICSharpCode.Reporting.BaseClasses; using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.Interfaces.Export;
@ -19,7 +21,7 @@ namespace ICSharpCode.Reporting.Interfaces
public interface IReportCreator public interface IReportCreator
{ {
void BuildExportList (); void BuildExportList ();
List<IPage> Pages {get;} Collection<IPage> Pages {get;}
// PagesCollection Pages{get;} // PagesCollection Pages{get;}
// event EventHandler<PageCreatedEventArgs> PageCreated; // event EventHandler<PageCreatedEventArgs> PageCreated;

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseSection.cs

@ -31,5 +31,7 @@ namespace ICSharpCode.Reporting.Items
} }
#endregion #endregion
} }
} }

9
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/PrintableItem.cs

@ -13,8 +13,15 @@ using ICSharpCode.Reporting.Interfaces.Export;
namespace ICSharpCode.Reporting.Items namespace ICSharpCode.Reporting.Items
{ {
public class PrintableItem : ReportItem,IPrintableObject public class PrintableItem : IPrintableObject
{ {
public string Name { get; set; }
public Point Location { get; set; }
public Size Size { get; set; }
public virtual IExportColumn CreateExportColumn() public virtual IExportColumn CreateExportColumn()
{ {
return null; return null;

18
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportContainer.cs

@ -8,6 +8,8 @@
*/ */
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using ICSharpCode.Reporting.Arrange;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.ExportColumns; using ICSharpCode.Reporting.PageBuilder.ExportColumns;
@ -17,7 +19,7 @@ namespace ICSharpCode.Reporting.Items
/// <summary> /// <summary>
/// Description of ReportContainer. /// Description of ReportContainer.
/// </summary> /// </summary>
public class ReportContainer:ReportItem,IReportContainer public class ReportContainer:PrintableItem,IReportContainer
{ {
public ReportContainer() public ReportContainer()
{ {
@ -26,9 +28,7 @@ namespace ICSharpCode.Reporting.Items
public List<IPrintableObject> Items {get;set;} public List<IPrintableObject> Items {get;set;}
public override IExportColumn CreateExportColumn()
public IExportContainer CreateExportColumn()
{ {
return new ExportContainer(){ return new ExportContainer(){
Name = this.Name, Name = this.Name,
@ -36,5 +36,15 @@ namespace ICSharpCode.Reporting.Items
Location = this.Location Location = this.Location
}; };
} }
IArrangeStrategy arrangeStrategy;
public IArrangeStrategy ArrangeStrategy {
get {if (arrangeStrategy == null) {
arrangeStrategy = new ContainerArrangeStrategy();
}
return arrangeStrategy; }
set { arrangeStrategy = value; }
}
} }
} }

8
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportItem.cs → src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportObject.cs

@ -18,10 +18,10 @@ namespace ICSharpCode.Reporting.Items
/// </summary> /// </summary>
/*
public class ReportItem : IReportObject public class ReportObject : IReportObject
{ {
public ReportItem() public ReportObject()
{ {
} }
@ -34,7 +34,7 @@ namespace ICSharpCode.Reporting.Items
} }
*/
} }

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

@ -8,6 +8,7 @@
*/ */
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Drawing; using System.Drawing;
using ICSharpCode.Reporting.BaseClasses; using ICSharpCode.Reporting.BaseClasses;
@ -21,7 +22,7 @@ namespace ICSharpCode.Reporting.PageBuilder
/// </summary> /// </summary>
public class BasePageBuilder:IReportCreator public class BasePageBuilder:IReportCreator
{ {
private readonly object addLock = new object(); // private readonly object addLock = new object();
public BasePageBuilder(IReportModel reportModel) public BasePageBuilder(IReportModel reportModel)
{ {
@ -29,7 +30,7 @@ namespace ICSharpCode.Reporting.PageBuilder
throw new ArgumentNullException("reportModel"); throw new ArgumentNullException("reportModel");
} }
ReportModel = reportModel; ReportModel = reportModel;
Pages = new List<IPage>(); Pages = new Collection<IPage>();
} }
@ -67,7 +68,7 @@ namespace ICSharpCode.Reporting.PageBuilder
public IPage CurrentPage {get; protected set;} public IPage CurrentPage {get; protected set;}
public List<IPage> Pages {get; private set;} public Collection<IPage> Pages {get; private set;}
} }
} }

13
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs

@ -23,23 +23,26 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
/// </summary> /// </summary>
internal class ContainerConverter internal class ContainerConverter
{ {
private ExportColumnFactory factory; // private ExportColumnFactory factory;
public ContainerConverter(IReportContainer container,Point currentLocation ) public ContainerConverter(IReportContainer reportContainer,Point currentLocation )
{ {
Container = container; Container = reportContainer;
CurrentLocation = currentLocation; CurrentLocation = currentLocation;
factory = new ExportColumnFactory(); // factory = new ExportColumnFactory();
} }
public IExportContainer Convert() { public IExportContainer Convert() {
Console.WriteLine("Convert section for location {0}",CurrentLocation); Console.WriteLine("Convert section for location {0}",CurrentLocation);
var strat = ((ReportContainer)Container).ArrangeStrategy;
strat.Arrange(Container);
var exportContainer = (ExportContainer)Container.CreateExportColumn(); var exportContainer = (ExportContainer)Container.CreateExportColumn();
exportContainer.Location = CurrentLocation; exportContainer.Location = CurrentLocation;
var itemsList = new List<IExportColumn>(); var itemsList = new List<IExportColumn>();
foreach (var element in Container.Items) { foreach (var element in Container.Items) {
var item = factory.CreateItem(element); var item = ExportColumnFactory.CreateItem(element);
itemsList.Add(item); itemsList.Add(item);
} }
exportContainer.ExportedItems.AddRange(itemsList); exportContainer.ExportedItems.AddRange(itemsList);

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs

@ -9,6 +9,7 @@
using System; using System;
using System.Drawing; using System.Drawing;
using ICSharpCode.Reporting.BaseClasses; using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.Interfaces.Export;
@ -25,6 +26,5 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
public Size Size {get;set;} public Size Size {get;set;}
public Point Location {get;set;} public Point Location {get;set;}
} }
} }

9
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportContainer.cs

@ -8,6 +8,7 @@
*/ */
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.Interfaces.Export;
namespace ICSharpCode.Reporting.PageBuilder.ExportColumns namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
@ -15,7 +16,7 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
/// <summary> /// <summary>
/// Description of BaseExportContainer. /// Description of BaseExportContainer.
/// </summary> /// </summary>
public class ExportContainer:ExportColumn,IExportContainer public class ExportContainer:ExportColumn,IExportContainer,IAcceptor
{ {
public ExportContainer() public ExportContainer()
{ {
@ -24,5 +25,11 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
public List<IExportColumn> ExportedItems {get;set;} public List<IExportColumn> ExportedItems {get;set;}
public void Accept(IVisitor visitor)
{
visitor.Visit(this);
}
} }
} }

7
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportText.cs

@ -7,17 +7,22 @@
* To change this template use Tools | Options | Coding | Edit Standard Headers. * To change this template use Tools | Options | Coding | Edit Standard Headers.
*/ */
using System; using System;
using ICSharpCode.Reporting.Exporter;
namespace ICSharpCode.Reporting.PageBuilder.ExportColumns namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
{ {
/// <summary> /// <summary>
/// Description of ExportText. /// Description of ExportText.
/// </summary> /// </summary>
public class ExportText:ExportColumn public class ExportText:ExportColumn,IAcceptor
{ {
public ExportText() public ExportText()
{ {
} }
public void Accept(IVisitor visitor)
{
visitor.Visit(this);
}
} }
} }

47
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs

@ -9,6 +9,7 @@
using System; using System;
using System.Drawing; using System.Drawing;
using ICSharpCode.Reporting.BaseClasses; using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.Converter; using ICSharpCode.Reporting.PageBuilder.Converter;
@ -22,7 +23,7 @@ namespace ICSharpCode.Reporting.PageBuilder
public class FormPageBuilder:BasePageBuilder public class FormPageBuilder:BasePageBuilder
{ {
private readonly object addLock = new object(); // private readonly object addLock = new object();
public FormPageBuilder(IReportModel reportModel):base(reportModel) public FormPageBuilder(IReportModel reportModel):base(reportModel)
{ {
@ -44,7 +45,7 @@ namespace ICSharpCode.Reporting.PageBuilder
var header =sc.Convert(); var header =sc.Convert();
CurrentPage.ExportedItems.Add(header); CurrentPage.ExportedItems.Add(header);
var r = new Rectangle(header.Location.X,header.Location.Y,header.Size.Width,header.Size.Height); var r = new Rectangle(header.Location.X,header.Location.Y,header.Size.Width,header.Size.Height);
CurrentLocation = new Point (ReportModel.ReportSettings.LeftMargin,r.Bottom + 10); CurrentLocation = new Point (ReportModel.ReportSettings.LeftMargin,r.Bottom + 5);
} }
} }
@ -57,13 +58,13 @@ namespace ICSharpCode.Reporting.PageBuilder
void BuilDetail() void BuilDetail()
{ {
Console.WriteLine("Build DetailSection {0} - {1} - {2}",ReportModel.ReportSettings.PageSize.Width,ReportModel.ReportSettings.LeftMargin,ReportModel.ReportSettings.RightMargin); Console.WriteLine("FormPageBuilder - Build DetailSection {0} - {1} - {2}",ReportModel.ReportSettings.PageSize.Width,ReportModel.ReportSettings.LeftMargin,ReportModel.ReportSettings.RightMargin);
} }
void BuildPageFooter() void BuildPageFooter()
{ {
Console.WriteLine("Build PageFooter {0} - {1}",ReportModel.ReportSettings.PageSize.Height,ReportModel.ReportSettings.BottomMargin); Console.WriteLine("FormPageBuilder - Build PageFooter {0} - {1}",ReportModel.ReportSettings.PageSize.Height,ReportModel.ReportSettings.BottomMargin);
CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin, CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin,
ReportModel.ReportSettings.PageSize.Height - ReportModel.ReportSettings.BottomMargin - ReportModel.PageFooter.Size.Height); ReportModel.ReportSettings.PageSize.Height - ReportModel.ReportSettings.BottomMargin - ReportModel.PageFooter.Size.Height);
@ -72,6 +73,19 @@ namespace ICSharpCode.Reporting.PageBuilder
CurrentPage.ExportedItems.Add(header); CurrentPage.ExportedItems.Add(header);
} }
void BuildReportFooter()
{
Console.WriteLine("FormPageBuilder - Build ReportFooter {0} - {1}",ReportModel.ReportSettings.PageSize.Height,ReportModel.ReportSettings.BottomMargin);
CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin,
ReportModel.ReportSettings.PageSize.Height - ReportModel.ReportSettings.BottomMargin - ReportModel.PageFooter.Size.Height);
var sc = new ContainerConverter(ReportModel.ReportFooter,CurrentLocation);
var header =sc.Convert();
CurrentPage.ExportedItems.Add(header);
}
void WritePages() void WritePages()
{ {
CurrentPage = base.InitNewPage(); CurrentPage = base.InitNewPage();
@ -80,31 +94,10 @@ namespace ICSharpCode.Reporting.PageBuilder
BuildPageHeader(); BuildPageHeader();
BuilDetail(); BuilDetail();
BuildPageFooter(); BuildPageFooter();
// BuildReportFooter();
base.AddPage(CurrentPage); base.AddPage(CurrentPage);
Console.WriteLine("<{0}> Pages created",Pages.Count);
foreach (var page in Pages) {
ShowPage(page);
}
} }
void ShowPage( IExportContainer container)
{
foreach (var item in container.ExportedItems) {
if (item is IExportContainer) {
Console.WriteLine("Container: {0}- {1} - {2}",item.Name,item.Location,item.Size);
ShowPage(item as IExportContainer);
} else {
Console.WriteLine("\tItem {0} -relativ location <{1}> - {2}",item.Name,item.Location,item.Size);
}
}
}
} }
} }

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/ICSharpCode.Reporting.Test.csproj

@ -65,6 +65,7 @@
<Compile Include="src\PageBuilder\BaseConvertFixture.cs" /> <Compile Include="src\PageBuilder\BaseConvertFixture.cs" />
<Compile Include="src\PageBuilder\ContainerConverterFixture.cs" /> <Compile Include="src\PageBuilder\ContainerConverterFixture.cs" />
<Compile Include="src\PageBuilder\PageBuilderFixture.cs" /> <Compile Include="src\PageBuilder\PageBuilderFixture.cs" />
<Compile Include="src\PageBuilder\PageLayoutFixture.cs" />
<Compile Include="src\Properties\AssemblyInfo.cs" /> <Compile Include="src\Properties\AssemblyInfo.cs" />
<Compile Include="src\TestHelper.cs" /> <Compile Include="src\TestHelper.cs" />
</ItemGroup> </ItemGroup>

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Model/Report_TwoItemsFixture.cs

@ -17,7 +17,7 @@ using NUnit.Framework;
namespace ICSharpCode.Reporting.Test.Model namespace ICSharpCode.Reporting.Test.Model
{ {
[TestFixture] [TestFixture]
public class Report_TwoItemsFixture public class ReportTwoItemsFixture
{ {
Stream stream; Stream stream;

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

@ -22,7 +22,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
[Test] [Test]
public void CurrentPageContainOneItem() { public void CurrentPageContainFiveItems() {
reportCreator.BuildExportList(); reportCreator.BuildExportList();
var page = reportCreator.Pages[0]; var page = reportCreator.Pages[0];
Assert.That(page.ExportedItems.Count, Is.EqualTo(3)); Assert.That(page.ExportedItems.Count, Is.EqualTo(3));

8
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerConverterFixture.cs

@ -42,11 +42,13 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
[Test] [Test]
public void LocationIsAdjusted() { public void LocationIsAdjusted() {
var pp = new Point(30,30); var location = new Point(30,30);
var converter = new ContainerConverter(container,pp); var converter = new ContainerConverter(container,location);
var result = converter.Convert(); var result = converter.Convert();
Assert.That(result.Location,Is.EqualTo(pp)); Assert.That(result.Location,Is.EqualTo(location));
} }
[TestFixtureSetUp] [TestFixtureSetUp]
public void Init() public void Init()
{ {

33
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageBuilderFixture.cs

@ -10,6 +10,7 @@ using System;
using System.IO; using System.IO;
using System.Reflection; using System.Reflection;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder; using ICSharpCode.Reporting.PageBuilder;
@ -23,7 +24,6 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
private IReportCreator reportCreator; private IReportCreator reportCreator;
[Test] [Test]
public void CanCreateFormsPageBuilder() public void CanCreateFormsPageBuilder()
{ {
@ -77,27 +77,34 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
reportCreator.BuildExportList(); reportCreator.BuildExportList();
var pi = reportCreator.Pages[0].PageInfo; var pi = reportCreator.Pages[0].PageInfo;
Assert.That(pi.ReportName,Is.EqualTo("Report1")); Assert.That(pi.ReportName,Is.EqualTo("Report1"));
Console.WriteLine("----------------"); // Console.WriteLine("----------------");
foreach (var page in reportCreator.Pages) { // foreach (var page in reportCreator.Pages) {
ShowPage(page); // TestHelper.ShowDebug(page);
} // }
} }
/*
void ShowPage( IExportContainer container) void ShowDebug(IExportContainer container)
{ {
var visitor = new DebugVisitor();
foreach (var item in container.ExportedItems) { foreach (var item in container.ExportedItems) {
if (item is IExportContainer) { if (item is IExportContainer) {
Console.WriteLine("DoContainer {0} - {1} - {2}",item.Name,item.Location,item.Size); var a = item as IAcceptor;
ShowPage(item as IExportContainer); if (a != null) {
Console.WriteLine("----");
a.Accept(visitor);
}
ShowDebug(item as IExportContainer);
} else { } else {
Console.WriteLine("\tItem {0} - {1} - {2}",item.Name,item.Location,item.Size); var b = item as IAcceptor;
if (b != null) {
b.Accept(visitor);
}
} }
} }
} }
*/
#endregion #endregion

70
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs

@ -0,0 +1,70 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 21.04.2013
* Time: 18:18
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Drawing;
using System.Linq;
using System.Reflection;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
using NUnit.Framework;
namespace ICSharpCode.Reporting.Test.PageBuilder
{
[TestFixture]
public class PageLayoutFixture
{
private IReportCreator reportCreator;
[Test]
public void PageContainsFourExportContainer()
{
reportCreator.BuildExportList();
var x = reportCreator.Pages[0].ExportedItems;
var y = from s in x
where s.GetType() == typeof(ExportContainer)
select s;
Assert.That(y.ToList().Count,Is.EqualTo(3));
Console.WriteLine("-------ShowDebug---------");
var ex = new DebugExporter(reportCreator.Pages);
ex.Run();
}
[Test]
public void SectionsInpageDoNotOverlap()
{
Point p = Point.Empty;
reportCreator.BuildExportList();
foreach (IPage element in reportCreator.Pages) {
var first = true;
foreach (var item in element.ExportedItems) {
if (! first) {
var p2 = new Point(item.Location.X,item.Location.Y);
Assert.That(p2.Y,Is.GreaterThan(p.Y));
} else {
first = false;
}
p = new Point(item.Location.X,item.Location.Y + item.Size.Height);
}
}
}
[SetUp]
public void LoadFromStream()
{
System.Reflection.Assembly asm = Assembly.GetExecutingAssembly();
var stream = asm.GetManifestResourceStream(TestHelper.RepWithTwoItems);
var reportingFactory = new ReportingFactory();
reportCreator = reportingFactory.ReportCreator(stream);
}
}
}

52
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestHelper.cs

@ -7,21 +7,20 @@
* To change this template use Tools | Options | Coding | Edit Standard Headers. * To change this template use Tools | Options | Coding | Edit Standard Headers.
*/ */
using System; using System;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Interfaces.Export;
namespace ICSharpCode.Reporting.Test namespace ICSharpCode.Reporting.Test
{ {
/// <summary> /// <summary>
/// Description of TestHelper. /// Description of TestHelper.
/// </summary> /// </summary>
public class TestHelper public static class TestHelper
{ {
private const string nameSpace = "ICSharpCode.Reporting.Test.src.TestReports."; private const string nameSpace = "ICSharpCode.Reporting.Test.src.TestReports.";
private const string plainReportName = "PlainModel.srd"; private const string plainReportName = "PlainModel.srd";
private const string rr = "ReportWithTwoItems.srd"; private const string rr = "ReportWithTwoItems.srd";
public TestHelper()
{
}
public static string PlainReportFileName{ public static string PlainReportFileName{
get{return nameSpace + plainReportName;} get{return nameSpace + plainReportName;}
@ -30,5 +29,50 @@ namespace ICSharpCode.Reporting.Test
public static string RepWithTwoItems { public static string RepWithTwoItems {
get {return nameSpace + rr;} get {return nameSpace + rr;}
} }
public static void ShowDebug(IExportContainer exportContainer)
{
var visitor = new DebugVisitor();
foreach (var item in exportContainer.ExportedItems) {
var container = item as IExportContainer;
var acceptor = item as IAcceptor;
if (container != null) {
if (acceptor != null) {
Console.WriteLine("----");
acceptor.Accept(visitor);
}
ShowDebug(container);
} else {
// var b = item as IAcceptor;
if (acceptor != null) {
acceptor.Accept(visitor);
}
}
}
}
/*
public static void ShowDebug(IExportContainer container)
{
var visitor = new DebugVisitor();
foreach (var item in container.ExportedItems) {
if (item is IExportContainer) {
var a = item as IAcceptor;
if (a != null) {
Console.WriteLine("----");
a.Accept(visitor);
}
ShowDebug(item as IExportContainer);
} else {
var b = item as IAcceptor;
if (b != null) {
b.Accept(visitor);
}
}
}
}
*/
} }
} }

Loading…
Cancel
Save