From ce8ed519b0790ecf7105b51b323aa1d4206f0538 Mon Sep 17 00:00:00 2001 From: Peter Forstmeier Date: Sun, 30 Jun 2013 20:02:06 +0200 Subject: [PATCH] PageBreak --- .../ICSharpCode.Reporting.csproj | 7 +- .../Src/BaseClasses/Page.cs | 130 --------------- .../ExportRenderer/FixedDocumentCreator.cs | 21 ++- .../Src/Exporter/BaseExporter.cs | 6 +- .../Src/Exporter/DebugExporter.cs | 41 ++++- .../Src/Exporter/Visitors/AbstractVisitor.cs | 4 +- .../Src/Exporter/Visitors/CanvasExtension.cs | 40 +++++ .../Src/Exporter/Visitors/CanvasHelper.cs | 69 ++++++++ .../Src/Exporter/Visitors/DebugVisitor.cs | 18 ++- .../Src/Exporter/Visitors/IVisitor.cs | 2 +- .../Src/Exporter/Visitors/WpfVisitor.cs | 13 +- .../Src/Exporter/WpfExporter.cs | 153 ++++++++++++++---- .../Src/Interfaces/Export/IPage.cs | 1 - .../Src/Interfaces/IReportCreator.cs | 3 +- .../Src/PageBuilder/BasePageBuilder.cs | 26 ++- .../Converter/ContainerConverter.cs | 13 +- .../Src/PageBuilder/DataPageBuilder.cs | 110 +++++++++++-- .../PageBuilder/ExportColumns/ExportColumn.cs | 3 - .../ExportColumns/ExportContainer.cs | 10 +- .../PageBuilder/ExportColumns/ExportPage.cs | 57 +++++++ .../Src/ReportingFactory.cs | 18 +-- .../Src/Wpf/PreviewViewModel.cs | 4 +- .../src/DataSource/ContributorsList.cs | 10 +- .../src/PageBuilder/DataPageBuilderFixture.cs | 9 +- .../src/Reportingfactory/PushModelFixture.cs | 25 ++- .../TestView/TestWPFReportPreview.cs | 5 +- 26 files changed, 541 insertions(+), 257 deletions(-) delete mode 100644 src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/Page.cs create mode 100644 src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/CanvasExtension.cs create mode 100644 src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/CanvasHelper.cs create mode 100644 src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportPage.cs diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj index 3e8ec3e53e..9f3d847afa 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj @@ -44,6 +44,9 @@ TRACE + + $(SharpDevelopBinPath)\Tools\NUnit\NUnit.Framework.dll + 3.0 @@ -74,7 +77,6 @@ - @@ -91,6 +93,8 @@ + + @@ -128,6 +132,7 @@ + diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/Page.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/Page.cs deleted file mode 100644 index 7c4a740c8c..0000000000 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/Page.cs +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Created by SharpDevelop. - * User: Peter Forstmeier - * Date: 03.04.2013 - * Time: 20:35 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ -using System; -using System.Collections.Generic; -using System.Drawing; - -using ICSharpCode.Reporting.Interfaces; -using ICSharpCode.Reporting.Interfaces.Export; - -namespace ICSharpCode.Reporting.BaseClasses -{ - /// - /// Description of Page. - /// - /// - - public class Page:IExportContainer,IPage - { - public Page(IPageInfo pageInfo,Size pageSize) - { - if (pageInfo == null) { - throw new ArgumentNullException("pageInfo"); - } - PageInfo = pageInfo; - Name = "Page"; - Size = pageSize; - exportedItems = new List(); - } - - public bool IsFirstPage {get;set;} - - - public IPageInfo PageInfo {get;private set;} - - - public string Name {get;set;} - - - public System.Drawing.Size Size {get;set;} - - - public System.Drawing.Point Location {get;set;} - - - public List exportedItems; - - public List ExportedItems { - get { return exportedItems; } - } - - - public IExportContainer CreateExportColumn() - { - throw new NotImplementedException(); - } - - public ICSharpCode.Reporting.Arrange.IArrangeStrategy GetArrangeStrategy() - { - throw new NotImplementedException(); - } - - public Size DesiredSize { - get { - throw new NotImplementedException(); - } - set { - throw new NotImplementedException(); - } - } - - public Color ForeColor { - get { - throw new NotImplementedException(); - } - set { - throw new NotImplementedException(); - } - } - - public Color BackColor { - get { - throw new NotImplementedException(); - } - set { - throw new NotImplementedException(); - } - } - - - public Color FrameColor { - get { - throw new NotImplementedException(); - } - set { - throw new NotImplementedException(); - } - } - - - public IExportColumn Parent { - get { - return null; - } - set { - throw new NotImplementedException(); - } - } - - public bool CanGrow {get;set;} - - public bool CanShrink {get;set;} - - public Rectangle DisplayRectangle { - get { - return new Rectangle(Location,Size); - } - } - - public ICSharpCode.Reporting.Arrange.IMeasurementStrategy MeasurementStrategy() - { - throw new NotImplementedException(); - } - } -} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs index f513444b5a..8eebaec16a 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs @@ -12,6 +12,7 @@ using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Media; +using ICSharpCode.Reporting.Exporter.Visitors; using ICSharpCode.Reporting.Items; using ICSharpCode.Reporting.PageBuilder.ExportColumns; using Brush = System.Windows.Media.Brush; @@ -37,12 +38,19 @@ namespace ICSharpCode.Reporting.ExportRenderer brushConverter = new BrushConverter(); } - + public UIElement CreateFixedPage(ExportPage exportPage) { + var fixedPage = new FixedPage(); + fixedPage.Width = exportPage.Size.Width; + fixedPage.Height = exportPage.Size.Height; + fixedPage.Background = ConvertBrush(System.Drawing.Color.Blue); + return fixedPage; + } + public UIElement CreateContainer(ExportContainer container) { // http://tech.pro/tutorial/736/wpf-tutorial-creating-a-custom-panel-control Console.WriteLine(); - Console.WriteLine("create container {0}",container.Name); + Console.WriteLine("create container {0} {1} {2}",container.Name,container.Location,container.Size); var canvas = CreateCanvas(container); var size = new Size(container.DesiredSize.Width,container.DesiredSize.Height); @@ -95,23 +103,22 @@ namespace ICSharpCode.Reporting.ExportRenderer void SetPositionAndSize(FrameworkElement element,ExportColumn column) { SetPosition(element,column); - SetDimension(element,column); + SetDimension(element,column); } static void SetDimension (FrameworkElement element,ExportColumn exportColumn) { - Console.WriteLine("set Demension to {0}",exportColumn.DesiredSize); element.Width = exportColumn.DesiredSize.Width; element.Height = exportColumn.DesiredSize.Height; } static void SetPosition (FrameworkElement element,ExportColumn exportColumn) { - Console.WriteLine("set Position to {0}",exportColumn.Location); FixedPage.SetLeft(element,exportColumn.Location.X ); FixedPage.SetTop(element,exportColumn.Location.Y); } + void SetFont(TextBlock textBlock,ExportText exportText) { textBlock.FontFamily = new FontFamily(exportText.Font.FontFamily.Name); @@ -156,7 +163,7 @@ namespace ICSharpCode.Reporting.ExportRenderer } - Pen CreateWpfPen(ExportColumn exportColumn) + Pen CreateWpfPen(ICSharpCode.Reporting.Interfaces.IReportObject exportColumn) { var myPen = new Pen(); myPen.Brush = ConvertBrush(exportColumn.ForeColor); @@ -168,7 +175,7 @@ namespace ICSharpCode.Reporting.ExportRenderer Brush ConvertBrush(System.Drawing.Color color) { if (brushConverter.IsValid(color.Name)){ - var r = brushConverter.ConvertFromString(color.Name) as SolidColorBrush; + Console.WriteLine(color.Name); return brushConverter.ConvertFromString(color.Name) as SolidColorBrush; } else{ return brushConverter.ConvertFromString("Black") as SolidColorBrush; diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/BaseExporter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/BaseExporter.cs index df54c2d98e..5e721b7b12 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/BaseExporter.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/BaseExporter.cs @@ -8,7 +8,7 @@ */ using System; using System.Collections.ObjectModel; -using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; namespace ICSharpCode.Reporting.Exporter { @@ -17,7 +17,7 @@ namespace ICSharpCode.Reporting.Exporter /// public class BaseExporter { - public BaseExporter(Collection pages) + public BaseExporter(Collection pages) { if (pages == null) { throw new ArgumentException("pages"); @@ -31,6 +31,6 @@ namespace ICSharpCode.Reporting.Exporter } - protected Collection Pages {get;private set;} + protected Collection Pages {get;private set;} } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs index 5cc57c42ae..7cfa736070 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs @@ -7,11 +7,11 @@ * To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System; -using System.Collections.Generic; using System.Collections.ObjectModel; using ICSharpCode.Reporting.Exporter.Visitors; using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; namespace ICSharpCode.Reporting.Exporter { @@ -22,7 +22,7 @@ namespace ICSharpCode.Reporting.Exporter { private DebugVisitor visitor; - public DebugExporter(Collection pages):base(pages) + public DebugExporter(Collection pages):base(pages) { visitor = new DebugVisitor(); } @@ -30,14 +30,43 @@ namespace ICSharpCode.Reporting.Exporter public override void Run () { foreach (var page in Pages) { - ShowDebug(page); + ShowDebug("--",page); Console.WriteLine("-----------PageBreak---------"); } } + void ShowDebug(string header,IExportContainer container) + { + var leading = header; + Console.WriteLine(); + Console.WriteLine("{0}{1}",leading,container.Name); + foreach (var item in container.ExportedItems) { + var exportContainer = item as IExportContainer; + var acceptor = item as IAcceptor; + if (exportContainer != null) { + if (exportContainer.ExportedItems.Count > 0) { + acceptor.Accept(visitor); + ShowDebug(leading = leading + "--",exportContainer); + leading = leading.Substring(0,leading.Length -2); + } + } else { + ShowSingleEntry(leading, acceptor); + } + } + } + + void ShowSingleEntry(string leading, IAcceptor acceptor) + { + if (acceptor != null) { + acceptor.Accept(visitor); + leading = leading.Substring(0, leading.Length - 2); + } + } - void ShowDebug(IExportContainer container) + void aaShowDebug(string leading,IExportContainer container) { + Console.WriteLine(); + Console.WriteLine("DebugExport for {0}{1}",leading,container.Name); foreach (var item in container.ExportedItems) { var exportContainer = item as IExportContainer; var acceptor = item as IAcceptor; @@ -45,10 +74,10 @@ namespace ICSharpCode.Reporting.Exporter if (acceptor != null) { acceptor.Accept(visitor); } - ShowDebug(exportContainer); + ShowDebug(leading = leading + "--",exportContainer); } else { if (acceptor != null) { - acceptor.Accept(visitor); +// acceptor.Accept(visitor); } } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/AbstractVisitor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/AbstractVisitor.cs index 6be4ce0ada..47f99faa0d 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/AbstractVisitor.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/AbstractVisitor.cs @@ -7,7 +7,6 @@ * 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.Visitors @@ -17,8 +16,9 @@ namespace ICSharpCode.Reporting.Exporter.Visitors /// public abstract class AbstractVisitor : IVisitor { - public abstract void Visit(ExportColumn exportColumn); + public abstract void Visit(ExportPage page); public abstract void Visit(ExportContainer exportColumn); public abstract void Visit(ExportText exportColumn); + public abstract void Visit(ExportColumn exportColumn); } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/CanvasExtension.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/CanvasExtension.cs new file mode 100644 index 0000000000..be8701e153 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/CanvasExtension.cs @@ -0,0 +1,40 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) +// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) +using System; +using System.Windows; +using System.Windows.Controls; + +namespace ICSharpCode.Reporting.Exporter.Visitors +{ + /// + /// Description of CanvasExtension. + /// http://denisvuyka.wordpress.com/2007/12/15/wpf-simplify-your-life-with-linq-extension-methods-canvas-and-visual-tree-helpers/ + /// + public static class CanvasExtension + { + + public static void AddChild(this Canvas canvas, T element) + { + UIElement uiElement = element as UIElement; + if (uiElement != null && !canvas.Children.Contains(uiElement)) + canvas.Children.Add(uiElement); + } + + + public static void RemoveChild(this Canvas canvas, T element) + { + UIElement uiElement = element as UIElement; + if (uiElement != null && canvas.Children.Contains(uiElement)) + canvas.Children.Remove(uiElement); + } + + + public static void InsertChild(this Canvas canvas, int index, T element) + { + UIElement uiElement = element as UIElement; + if (uiElement != null && !canvas.Children.Contains(uiElement)) + canvas.Children.Insert(index, uiElement); + } + } + +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/CanvasHelper.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/CanvasHelper.cs new file mode 100644 index 0000000000..61574eee4e --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/CanvasHelper.cs @@ -0,0 +1,69 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) +// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) +using System; +using System.Windows; +using System.Windows.Controls; + + +namespace ICSharpCode.Reporting.Exporter.Visitors +{ + /// + /// Description of CanvasHelper. + /// http://denisvuyka.wordpress.com/2007/12/15/wpf-simplify-your-life-with-linq-extension-methods-canvas-and-visual-tree-helpers/ + /// + /// + internal static class CanvasHelper + { + public static double GetLeft(T element) + { + UIElement uiElement = element as UIElement; + if (uiElement == null) + throw new ArgumentNullException("element"); + return (double)uiElement.GetValue(Canvas.LeftProperty); + } + + public static double GetTop(T element) + { + UIElement uiElement = element as UIElement; + if (uiElement == null) + throw new ArgumentNullException("element"); + return (double)uiElement.GetValue(Canvas.TopProperty); + } + + public static Point GetPosition(T element) + { + UIElement uiElement = element as UIElement; + if (uiElement == null) + throw new ArgumentNullException("element"); + + return new Point( + (double)uiElement.GetValue(Canvas.LeftProperty), + (double)uiElement.GetValue(Canvas.TopProperty)); + } + + public static void SetLeft(T element, double length) + { + UIElement uiElement = element as UIElement; + if (uiElement == null) + throw new ArgumentNullException("element"); + uiElement.SetValue(Canvas.LeftProperty, length); + } + + public static void SetTop(T element, double length) + { + UIElement uiElement = element as UIElement; + if (uiElement == null) + throw new ArgumentNullException("element"); + uiElement.SetValue(Canvas.TopProperty, length); + } + + public static void SetPosition(T element, Point value) + { + UIElement uiElement = element as UIElement; + if (uiElement == null) + throw new ArgumentNullException("element"); + uiElement.SetValue(Canvas.LeftProperty, value.X); + uiElement.SetValue(Canvas.TopProperty, value.Y); + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/DebugVisitor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/DebugVisitor.cs index 12977fc86c..8b294b9241 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/DebugVisitor.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/DebugVisitor.cs @@ -7,7 +7,7 @@ * To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System; -using System.Collections.Generic; +using ICSharpCode.Reporting.BaseClasses; using ICSharpCode.Reporting.PageBuilder.ExportColumns; namespace ICSharpCode.Reporting.Exporter.Visitors @@ -20,6 +20,13 @@ namespace ICSharpCode.Reporting.Exporter.Visitors public class DebugVisitor : AbstractVisitor { + public override void Visit(ExportPage page) + { + Console.WriteLine(" {0} - {1} Items {2}", + page.Name,page.Location,page.BackColor); + } + + public override void Visit(ExportColumn exportColumn) { Console.WriteLine("Visit ExportColumn {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.Location); @@ -29,15 +36,16 @@ namespace ICSharpCode.Reporting.Exporter.Visitors public override void Visit(ExportContainer exportColumn) { - Console.WriteLine("Start Container"); - Console.WriteLine("Visit ExportContainer {0} - {1} - {2} - Items {3}", - exportColumn.Name,exportColumn.Size,exportColumn.Location,exportColumn.BackColor); + Console.WriteLine(" {0} - {1} Items {2}", + exportColumn.Name,exportColumn.Location,exportColumn.BackColor); } public override void Visit(ExportText exportColumn) { - Console.WriteLine("Visit ExportText {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.Location); + Console.WriteLine(" {0} - {1}", exportColumn.Text,exportColumn.Location); } + + } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/IVisitor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/IVisitor.cs index d0c775add7..7b8de25efd 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/IVisitor.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/IVisitor.cs @@ -7,13 +7,13 @@ * 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.Visitors { public interface IVisitor { + void Visit(ExportPage page); void Visit(ExportColumn exportColumn); void Visit(ExportContainer exportColumn); void Visit(ExportText exportColumn); diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/WpfVisitor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/WpfVisitor.cs index 836d13b17a..d14ee50463 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/WpfVisitor.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/WpfVisitor.cs @@ -30,11 +30,13 @@ namespace ICSharpCode.Reporting.Exporter.Visitors documentCreator = new FixedDocumentCreator(reportSettings); } - public override void Visit(ExportColumn exportColumn) + + public override void Visit(ExportPage page) { -// Console.WriteLine("Wpf-Visit ExportColumn {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.Location); + Console.WriteLine("page visitor"); + UIElement = documentCreator.CreateFixedPage(page); } - + public override void Visit(ExportContainer exportColumn) { @@ -53,6 +55,11 @@ namespace ICSharpCode.Reporting.Exporter.Visitors } + public override void Visit(ExportColumn exportColumn) + { +// Console.WriteLine("Wpf-Visit ExportColumn {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.Location); + } + public UIElement UIElement {get; private set;} } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs index 26c926e73e..e74e71cdbd 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs @@ -8,7 +8,6 @@ */ using System; using System.Collections.ObjectModel; -using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Markup; @@ -25,10 +24,13 @@ namespace ICSharpCode.Reporting.Exporter /// public class WpfExporter:BaseExporter { + + private WpfVisitor visitor; private ReportSettings reportSettings; + FixedPage fixedPage; - public WpfExporter(ReportSettings reportSettings,Collection pages):base(pages) + public WpfExporter(ReportSettings reportSettings,Collection pages):base(pages) { if (reportSettings == null) throw new ArgumentNullException("reportSettings"); @@ -41,51 +43,137 @@ namespace ICSharpCode.Reporting.Exporter Document = new FixedDocument(); foreach (var page in Pages) { - var fixedPage = InternalRun(page); + InternalRun(page); AddPageToDocument(Document,fixedPage); } } + void InternalRun(ExportPage page) + { + page.Accept(visitor); + fixedPage = (FixedPage)visitor.UIElement; + foreach (var item in page.ExportedItems) { + ShowContainerRecursive_2(null,item); + } + } + + void ShowContainerRecursive (string parentCanvas,IExportColumn item){ + var exportContainer = item as IExportContainer; + string name = string.Empty; + + Console.WriteLine("perform {0}",parentCanvas); + + if (exportContainer != null) { + + if (exportContainer.Name =="ReportDetail") { + Console.WriteLine(item.Name); + } +// + if (exportContainer.Name == "Row") { + Console.WriteLine(item.Name); + } + name = item.Name; +// var containerCanvas = CreateContainer(exportContainer); - FixedPage InternalRun(IExportContainer container) +// fixedPage.Children.Add(containerCanvas); +// Console.WriteLine(fixedPage.Children.Count); +// Console.WriteLine(containerCanvas.Children.Count); + + foreach (var element in exportContainer.ExportedItems) { + var el = element as IExportContainer; + if (el == null) { +// CreateSingleEntry(ref containerCanvas, element); +// Console.WriteLine(containerCanvas.Children.Count); + name = element.Name; + } + + ShowContainerRecursive(name,element); + } + } + } + + void ShowContainerRecursive_2(Canvas parentCanvas,IExportColumn item) + { + var exportContainer = item as IExportContainer; + + if (exportContainer != null) { + + if (exportContainer.Name =="ReportDetail") { + Console.WriteLine(item.Name); + } +// + if (exportContainer.Name == "Row") { + Console.WriteLine("\t {0}",item.Name); + } + + foreach (var element in exportContainer.ExportedItems) { +// Console.WriteLine(element.Name); + var el = element as IExportContainer; + if (el == null) { + Console.WriteLine("\t\t {0}",element.Name); + } + ShowContainerRecursive_2(null,exportContainer.ExportedItems[0]); + } + + } + + + } + + + + void ShowContainerRecursive_1(Canvas parentCanvas,IExportColumn item) { + var exportContainer = item as IExportContainer; - FixedPage fixedPage = CreateFixedPage(); - Canvas parentCanvas = null ; - Console.WriteLine("page start"); - foreach (var item in container.ExportedItems) { - var exportContainer = item as IExportContainer; - var acceptor = item as IAcceptor; - if (exportContainer != null) { - if (acceptor != null) { - acceptor.Accept(visitor); - parentCanvas = (Canvas)visitor.UIElement; - fixedPage.Children.Add(parentCanvas); - - foreach (IAcceptor element in exportContainer.ExportedItems) { - element.Accept(visitor); - var ui = visitor.UIElement; - Canvas.SetLeft(ui,((IExportColumn)element).Location.X); - Canvas.SetTop(ui, ((IExportColumn)element).Location.Y); - parentCanvas.Children.Add(ui); - } - } else { - throw new NotSupportedException("item is not an IAcceptor"); + if (exportContainer != null) { + + if (exportContainer.Name =="ReportDetail") { + Console.WriteLine(item.Name); + } +// + if (exportContainer.Name == "Row") { + Console.WriteLine(item.Name); + } + + var containerCanvas = CreateContainer(exportContainer); + + fixedPage.Children.Add(containerCanvas); + Console.WriteLine(fixedPage.Children.Count); + Console.WriteLine(containerCanvas.Children.Count); + + foreach (var element in exportContainer.ExportedItems) { + var el = element as IExportContainer; + if (el == null) { + CreateSingleEntry(ref containerCanvas, element); + Console.WriteLine(containerCanvas.Children.Count); } + + ShowContainerRecursive_1(containerCanvas,element); } } - Console.WriteLine("-------page end---"); - return fixedPage; } + Canvas CreateContainer(IExportContainer exportContainer) + { + var containerAcceptor = exportContainer as IAcceptor; + containerAcceptor.Accept(visitor); + var containerCanvas = (Canvas)visitor.UIElement; + return containerCanvas; + } + - FixedPage CreateFixedPage() + void CreateSingleEntry(ref Canvas canvas, IExportColumn element) { - var fixedPage = new FixedPage(); - fixedPage.Width = reportSettings.PageSize.Width; - fixedPage.Height = reportSettings.PageSize.Height; - return fixedPage; + var v = element as IAcceptor; + v.Accept(visitor); + var c = visitor.UIElement; + + CanvasHelper.SetLeft(c,element.Location.X); + CanvasHelper.SetTop(c,10); +// CanvasHelper.SetTop(c,element.Location.Y); + canvas.AddChild(c); } @@ -96,6 +184,7 @@ namespace ICSharpCode.Reporting.Exporter fixedDocument.Pages.Add(pageContent); } + public FixedDocument Document {get;private set;} } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IPage.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IPage.cs index dbda99b25b..f3443135ea 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IPage.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IPage.cs @@ -7,7 +7,6 @@ * To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System; -using System.Collections.Generic; namespace ICSharpCode.Reporting.Interfaces.Export { diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportCreator.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportCreator.cs index ab49ffe72e..ab988182cf 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportCreator.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportCreator.cs @@ -12,6 +12,7 @@ using System.Collections.ObjectModel; using ICSharpCode.Reporting.BaseClasses; using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; namespace ICSharpCode.Reporting.Interfaces { @@ -21,7 +22,7 @@ namespace ICSharpCode.Reporting.Interfaces public interface IReportCreator { void BuildExportList (); - Collection Pages {get;} + Collection Pages {get;} // PagesCollection Pages{get;} // event EventHandler PageCreated; diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs index 46d38b2624..dfa4c0ca67 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs @@ -16,6 +16,7 @@ using ICSharpCode.Reporting.Globals; using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.PageBuilder.Converter; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; namespace ICSharpCode.Reporting.PageBuilder { @@ -31,14 +32,14 @@ namespace ICSharpCode.Reporting.PageBuilder throw new ArgumentNullException("reportModel"); } ReportModel = reportModel; - Pages = new Collection(); + Pages = new Collection(); Graphics = CreateGraphics.FromSize(reportModel.ReportSettings.PageSize); } - protected IPage InitNewPage(){ + protected ExportPage InitNewPage(){ var pi = CreatePageInfo(); - return new Page(pi,ReportModel.ReportSettings.PageSize); + return new ExportPage(pi,ReportModel.ReportSettings.PageSize); } #region create Sections @@ -85,13 +86,14 @@ namespace ICSharpCode.Reporting.PageBuilder #endregion - protected virtual IPage CreateNewPage() + protected virtual ExportPage CreateNewPage() { var page = InitNewPage(); CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin,ReportModel.ReportSettings.TopMargin); return page; } + protected void WriteStandardSections() { this.BuildReportHeader(); BuildPageHeader(); @@ -99,6 +101,16 @@ namespace ICSharpCode.Reporting.PageBuilder } + protected bool PageFull(System.Collections.Generic.List columns) + { + var rectToPrint = new Rectangle(columns[0].Location,columns[0].Size); + if (rectToPrint.Bottom > DetailEnds.Y) { + return true; + } + return false; + } + + protected IExportContainer CreateSection(IReportContainer container,Point location) { var containerConverter = new ContainerConverter(Graphics, location); @@ -128,7 +140,7 @@ namespace ICSharpCode.Reporting.PageBuilder } - protected virtual void AddPage(IPage page) { + protected virtual void AddPage(ExportPage page) { if (Pages.Count == 0) { page.IsFirstPage = true; } @@ -145,7 +157,7 @@ namespace ICSharpCode.Reporting.PageBuilder protected Point CurrentLocation {get; set;} - protected IPage CurrentPage {get; set;} + protected ExportPage CurrentPage {get; set;} internal Point DetailStart {get;private set;} @@ -153,6 +165,6 @@ namespace ICSharpCode.Reporting.PageBuilder protected Graphics Graphics {get;private set;} - public Collection Pages {get; private set;} + public Collection Pages {get; private set;} } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs index 2821e06bd7..f0dfdf2aa6 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs @@ -34,8 +34,6 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter public virtual IExportContainer Convert(IReportContainer reportContainer) { - Console.WriteLine(); - Console.WriteLine("Convert {0}",reportContainer.Name); var exportContainer = (ExportContainer)reportContainer.CreateExportColumn(); exportContainer.Location = CurrentLocation; exportContainer.DesiredSize = Measure(exportContainer); @@ -43,9 +41,8 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter } - public List CreateConvertedList(IReportContainer reportContainer,IExportContainer exportContainer,Point position) - { - Console.WriteLine("CreateConvertedList {0}",reportContainer.Name); + public List CreateConvertedList(IReportContainer reportContainer,IExportContainer exportContainer,Point position){ + var itemsList = new List(); foreach (var element in reportContainer.Items) { var exportColumn = ExportColumnFactory.CreateItem(element); @@ -58,7 +55,7 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter public List CreateConvertedList(IReportContainer reportContainer,IExportContainer exportContainer) { - Console.WriteLine("CreateConvertedList {0}",reportContainer.Name); +// Console.WriteLine("CreateConvertedList {0}",reportContainer.Name); var itemsList = new List(); foreach (var element in reportContainer.Items) { var exportColumn = ExportColumnFactory.CreateItem(element); @@ -73,14 +70,14 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter public Size Measure(IExportColumn element) { - Console.WriteLine("Measure {0}",element.Name); +// Console.WriteLine("Measure {0}",element.Name); var measureStrategy = element.MeasurementStrategy(); return measureStrategy.Measure(element, Graphics); } public void ArrangeContainer(IExportContainer exportContainer) { - Console.WriteLine("ArrangeContainer {0}",exportContainer.Name); +// Console.WriteLine("ArrangeContainer {0}",exportContainer.Name); var exportArrange = exportContainer.GetArrangeStrategy(); exportArrange.Arrange(exportContainer); } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs index ad31f50ab9..9a447378a4 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs @@ -8,6 +8,7 @@ */ using System; using System.Collections; +using System.Collections.Generic; using System.Drawing; using System.Linq; @@ -36,12 +37,13 @@ namespace ICSharpCode.Reporting.PageBuilder base.BuildExportList(); CurrentPage = CreateNewPage (); WriteStandardSections(); + CurrentLocation = DetailStart; BuildDetail(); base.AddPage(CurrentPage); } - void BuildDetail() + void aaBuildDetail() { Container = ReportModel.DetailSection; @@ -89,32 +91,109 @@ namespace ICSharpCode.Reporting.PageBuilder base.BuildReportFooter(); } } + + + void BuildDetail() + { + + Container = ReportModel.DetailSection; + var collectionSource = new CollectionSource(List,ElementType,ReportModel.ReportSettings); + IExportContainer detail = null; + if(collectionSource.Count > 0) { + collectionSource.Bind(); - Point ResetPosition () { - return Point.Empty; + var position = DetailStart; + var converter = new ContainerConverter(base.Graphics, CurrentLocation); + detail = CreateDetail(DetailStart); + + do { + + var row = CreateContainerIfNotExist(Container,detail, position); + collectionSource.Fill(Container.Items); + + var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection,row,position); + MeasureAndArrangeContainer(converter,row); + row.ExportedItems.AddRange(convertedItems); + if (PageFull(convertedItems)) { + InsertDetailAtPosition(detail); + Pages.Add(CurrentPage); + CurrentPage = CreateNewPage(); + WriteStandardSections(); + position = ResetPosition(); + detail = CreateDetail(DetailStart); + CurrentLocation = DetailStart; + + row = CreateContainerIfNotExist(Container,detail,position); + var recreate = converter.CreateConvertedList(ReportModel.DetailSection,row,position); + MeasureAndArrangeContainer(converter,row); + row.ExportedItems.AddRange(recreate); + } + detail.ExportedItems.Add(row); + position = new Point(Container.Location.Y,position.Y + Container.Size.Height); + } + + while (collectionSource.MoveNext()); + InsertDetailAtPosition(detail); +// base.BuildReportFooter(); + + } else { + detail = CreateContainerForSection(DetailStart); + InsertDetailAtPosition(detail); + base.BuildReportFooter(); + } } - void MeasureAndArrangeContainer(ContainerConverter converter,IExportContainer detail) + + + + IExportContainer CreateContainerIfNotExist(IReportContainer container, IExportContainer parent, Point position) { - converter.Measure(detail); - converter.ArrangeContainer(detail); +// if (container.Items[0] is IExportContainer) { +// return container.Items[0].CreateExportColumn() as IExportContainer; +// } else { +// var row = CreateContainerForSection(position); +// row.Name = "Row"; +// row.Parent = parent; +// row.Location = new Point(50, position.Y); +// row.Size = new Size(400, 40); +// row.BackColor = Color.Green; +// return row; +// } + var row = CreateContainerForSection(position); + row.Name = "Row"; + row.Parent = parent; + row.Location = new Point(50, position.Y); + row.Size = new Size(400, 40); + row.BackColor = Color.Green; + return row; } - IExportContainer CreateContainerForSection(Point location ) + IExportContainer CreateDetail(Point startLocation) { - var detail = (ExportContainer)Container.CreateExportColumn(); - detail.Location = location; + var detail = CreateContainerForSection(startLocation); + detail.Parent = CurrentPage; return detail; } + - bool PageFull(System.Collections.Generic.List columns) + Point ResetPosition () { + return DetailStart; + } + + + void MeasureAndArrangeContainer(IContainerConverter converter,IExportContainer container) { - var rect = new Rectangle(columns[0].Location,columns[0].Size); - if (rect.Contains(new Point(100,500))) { - return true; - } - return false; + converter.Measure(container); + converter.ArrangeContainer(container); + } + + + IExportContainer CreateContainerForSection(Point location ) + { + var detail = (ExportContainer)Container.CreateExportColumn(); + detail.Location = location; + return detail; } @@ -127,6 +206,7 @@ namespace ICSharpCode.Reporting.PageBuilder } } + internal IReportContainer Container { get; private set; } public IEnumerable List {get; private set;} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs index e2a1514824..5c630d8d53 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs @@ -9,9 +9,6 @@ using System; using System.Drawing; using ICSharpCode.Reporting.Arrange; -using ICSharpCode.Reporting.BaseClasses; -using ICSharpCode.Reporting.Exporter; -using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces.Export; namespace ICSharpCode.Reporting.PageBuilder.ExportColumns diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportContainer.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportContainer.cs index 3c8754f33e..db09fafdee 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportContainer.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportContainer.cs @@ -30,10 +30,7 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns get { return exportedItems; } } - public void Accept(IVisitor visitor) - { - visitor.Visit(this); - } + public override IArrangeStrategy GetArrangeStrategy() { @@ -44,5 +41,10 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns { return new ContainerMeasurementStrategy(); } + + public void Accept(IVisitor visitor) + { + visitor.Visit(this); + } } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportPage.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportPage.cs new file mode 100644 index 0000000000..5a87d058dd --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportPage.cs @@ -0,0 +1,57 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 03.04.2013 + * Time: 20:35 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using System.Drawing; + +using ICSharpCode.Reporting.Exporter.Visitors; +using ICSharpCode.Reporting.Interfaces.Export; + +namespace ICSharpCode.Reporting.PageBuilder.ExportColumns +{ + /// + /// Description of Page. + /// + /// + + public class ExportPage:ExportColumn,IPage,IAcceptor + { + public ExportPage(IPageInfo pageInfo,Size pageSize):base() + { + if (pageInfo == null) { + throw new ArgumentNullException("pageInfo"); + } + PageInfo = pageInfo; + Name = "Page"; + Size = pageSize; + exportedItems = new List(); + } + + public bool IsFirstPage {get;set;} + + + public IPageInfo PageInfo {get;private set;} + + + public bool CanShrink {get;set;} + + + public void Accept(IVisitor visitor) + { + visitor.Visit(this as ExportPage); + } + + + List exportedItems; + + public List ExportedItems { + get { return exportedItems; } + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportingFactory.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportingFactory.cs index 6788dd2e16..f4a296ecfd 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportingFactory.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportingFactory.cs @@ -40,21 +40,21 @@ namespace ICSharpCode.Reporting } - internal IReportCreator ReportCreator (ReportModel reportModel) { - if (reportModel == null) - throw new ArgumentNullException("reportModel"); + public IReportCreator ReportCreator (Stream stream) + { + ReportModel = LoadReportModel (stream); IReportCreator builder = null; - ReportModel = reportModel; - builder = ReportCreatorFactory.ExporterFactory(reportModel); + builder = ReportCreatorFactory.ExporterFactory(ReportModel); return builder; } - internal IReportCreator ReportCreator (Stream stream) - { - ReportModel = LoadReportModel (stream); + internal IReportCreator ReportCreator (ReportModel reportModel) { + if (reportModel == null) + throw new ArgumentNullException("reportModel"); IReportCreator builder = null; - builder = ReportCreatorFactory.ExporterFactory(ReportModel); + ReportModel = reportModel; + builder = ReportCreatorFactory.ExporterFactory(reportModel); return builder; } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/PreviewViewModel.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/PreviewViewModel.cs index 8536222adc..e882634c28 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/PreviewViewModel.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/PreviewViewModel.cs @@ -13,10 +13,12 @@ using System.Diagnostics; using System.Windows.Documents; using System.Windows.Markup; +using ICSharpCode.Reporting.BaseClasses; using ICSharpCode.Reporting.Exporter; using ICSharpCode.Reporting.ExportRenderer; using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.Items; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; namespace ICSharpCode.Reporting.WpfReportViewer { @@ -28,7 +30,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer private FixedDocument document ; - public PreviewViewModel(ReportSettings reportSettings, Collection pages) + public PreviewViewModel(ReportSettings reportSettings, Collection pages) { if (pages == null) throw new ArgumentNullException("pages"); diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/DataSource/ContributorsList.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/DataSource/ContributorsList.cs index 7b13df35d4..928d8766cb 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/DataSource/ContributorsList.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/DataSource/ContributorsList.cs @@ -37,8 +37,6 @@ namespace ICSharpCode.Reporting.Test.DataSource list.Add(new Contributor("Christoph","Wille","Senior Project Wrangler",17,new DateTime(1960,12,8),"F")); list.Add(new Contributor("Bernhard","Spuida","Senior Project Wrangler",25,new DateTime(1962,2,24),"D")); - - list.Add(new Contributor("Daniel","Grunwald","Technical Lead",12,d1,"F")); list.Add(new Contributor("Matt","Ward","NUnit",7,d1,"F")); @@ -48,15 +46,19 @@ namespace ICSharpCode.Reporting.Test.DataSource list.Add(new Contributor("Alexander","Zeitler","SharpDevelop.Reports",3,d2,"D")); list.Add(new Contributor("Markus","Palme","Prg.",6,d2,"R")); list.Add(new Contributor("Georg","Brandl","Prg.",5,d2,"R")); + list.Add(new Contributor("Roman","Taranchenko","",2,d2,"U")); list.Add(new Contributor("Denis","Erchoff","",13,d2,"U")); - list.Add(new Contributor("Ifko","Kovacka","",31,d3,"A")); + list.Add(new Contributor("Nathan","Allen","",5,d3,"A")); list.Add(new Contributor("Dickon","Field","DBTools",10,d3,"U")); - list.Add(new Contributor("Troy","Simpson","Prg.",9,d3,"C")); + list.Add(new Contributor("David","Alpert","Prg.",6,d3,"C")); + list.Add(new Contributor("Mike","Krüger","Mono",9,d3,"C")); + list.Add(new Contributor("Andrea","Krüger","Mono",9,d3,"C")); + list.Add(new Contributor("Andreas","Weizel","Prg.",9,d3,"C")); return list; } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/DataPageBuilderFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/DataPageBuilderFixture.cs index 4331a9e24d..3aee769e60 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/DataPageBuilderFixture.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/DataPageBuilderFixture.cs @@ -7,14 +7,12 @@ * 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.Items; using ICSharpCode.Reporting.PageBuilder; -using ICSharpCode.Reporting.PageBuilder.ExportColumns; using NUnit.Framework; namespace ICSharpCode.Reporting.Test.PageBuilder @@ -34,12 +32,13 @@ namespace ICSharpCode.Reporting.Test.PageBuilder [Test] - public void DataSourceIsset() { + public void DataSourceIsSet() { var dpb = new DataPageBuilder (new ReportModel(),typeof(string),new System.Collections.Generic.List()); Assert.That(dpb.List,Is.Not.Null); } - + + [SetUp] public void LoadFromStream() { diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs index e894f574b7..69d774b944 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs @@ -14,10 +14,11 @@ using System.Reflection; using ICSharpCode.Reporting.Exporter; using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.PageBuilder; using ICSharpCode.Reporting.PageBuilder.ExportColumns; -using NUnit.Framework; using ICSharpCode.Reporting.Test.DataSource; +using NUnit.Framework; namespace ICSharpCode.Reporting.Test.Reportingfactory { @@ -44,19 +45,22 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory where s.GetType() == typeof(ExportContainer) select s; Assert.That(sections.ToList().Count,Is.EqualTo(4)); + var ex = new DebugExporter(reportCreator.Pages); + ex.Run(); } [Test] - public void LastPageContains_4_Sections() + public void LastPageContains_3_Sections() { reportCreator.BuildExportList(); var exporteditems = reportCreator.Pages[1].ExportedItems; var sections = from s in exporteditems where s.GetType() == typeof(ExportContainer) select s; - Assert.That(sections.ToList().Count,Is.EqualTo(4)); + Assert.That(sections.ToList().Count,Is.EqualTo(3)); } + [Test] public void DetailContainsOneDataItem() { @@ -67,10 +71,17 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory select s; var section = sections.ToList()[2] as ExportContainer; var result = section.ExportedItems[0]; - Assert.That(result,Is.AssignableFrom(typeof(ExportText))); -// Console.WriteLine("-------PageLayoutFixture:ShowDebug---------"); -// var ex = new DebugExporter(reportCreator.Pages); -// ex.Run(); + Assert.That(result,Is.AssignableFrom(typeof(ExportContainer))); + } + + [Test] + public void ParentOfSectionsIsPage() { + reportCreator.BuildExportList(); + var page = reportCreator.Pages[0]; + foreach (var element in page.ExportedItems) { + Assert.That(element.Parent,Is.Not.Null); + Assert.That(element.Parent,Is.AssignableTo(typeof(IPage))); + } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/TestView/TestWPFReportPreview.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/TestView/TestWPFReportPreview.cs index 6b63500e17..64d7c5860e 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/TestView/TestWPFReportPreview.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/TestView/TestWPFReportPreview.cs @@ -17,6 +17,7 @@ using ICSharpCode.Reporting.Globals; using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.Items; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; using ICSharpCode.Reporting.WpfReportViewer; using ICSharpCode.Reporting.Xml; using ICSharpCode.SharpDevelop; @@ -50,11 +51,11 @@ namespace ICSharpCode.Reports.Addin.SecondaryViews this.designerLoader = loader; viewer = new ICSharpCode.Reporting.WpfReportViewer.WpfReportViewer(); base.TabPageText = "TestWpf View"; - Pages = new Collection(); + Pages = new Collection(); } - public Collection Pages{get;private set;} + public Collection Pages{get;private set;} protected override void LoadFromPrimary()