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 e48e2b2457..d25526c95c 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs @@ -58,11 +58,16 @@ namespace ICSharpCode.Reporting.ExportRenderer } - public TextBlock CreateTextBlock(ExportText exportText){ + public TextBlock CreateTextBlock(ExportText exportText,bool setBackcolor){ var textBlock = new TextBlock(); + textBlock.Foreground = ConvertBrush(exportText.ForeColor); -// textBlock.Background = ConvertBrush(exportText.BackColor); - textBlock.Background = ConvertBrush(System.Drawing.Color.LightGray); + + if (setBackcolor) { + textBlock.Background = ConvertBrush(exportText.BackColor); + } + +// textBlock.Background = ConvertBrush(System.Drawing.Color.LightGray); SetFont(textBlock,exportText); 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 a969fac813..3ea6a95c23 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 @@ -8,6 +8,8 @@ */ using System; using System.Collections.ObjectModel; +using System.Drawing; + using ICSharpCode.Reporting.PageBuilder.ExportColumns; namespace ICSharpCode.Reporting.Exporter.Visitors @@ -24,10 +26,10 @@ namespace ICSharpCode.Reporting.Exporter.Visitors Pages = pages; foreach (var page in pages) { Visit(page); - Console.WriteLine("-----------AbstractVisitor - PageBreak---------"); } } + public virtual void Visit (ExportPage page) { foreach (var element in page.ExportedItems) { @@ -46,10 +48,17 @@ namespace ICSharpCode.Reporting.Exporter.Visitors } - public virtual void Visit(ExportText exportColumn){ - + public virtual void Visit(ExportText exportColumn) + { + throw new NotImplementedException(); } + + protected bool ShouldSetBackcolor (ExportColumn exportColumn) { + return exportColumn.BackColor != Color.White; + } + + protected Collection Pages {get; private set;} } } 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 6eaf5e53e5..89c60504df 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 @@ -12,6 +12,7 @@ using System.Windows.Controls; using System.Windows.Documents; using ICSharpCode.Reporting.ExportRenderer; +using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.PageBuilder.ExportColumns; namespace ICSharpCode.Reporting.Exporter.Visitors @@ -24,34 +25,65 @@ namespace ICSharpCode.Reporting.Exporter.Visitors readonly FixedDocumentCreator documentCreator; FixedPage fixedPage; - Canvas currentCanvas; + Canvas sectionCanvas; public WpfVisitor() { documentCreator = new FixedDocumentCreator(); } + public override void Visit(ExportPage page){ fixedPage = FixedDocumentCreator.CreateFixedPage(page); FixedPage = fixedPage; - base.Visit(page); + foreach (var element in page.ExportedItems) { + var acceptor = element as IAcceptor; + acceptor.Accept(this); + fixedPage.Children.Add(sectionCanvas); + } } public override void Visit(ExportContainer exportContainer){ - currentCanvas = documentCreator.CreateContainer(exportContainer); - CanvasHelper.SetPosition(currentCanvas,new Point(exportContainer.Location.X,exportContainer.Location.Y)); - base.Visit(exportContainer); - fixedPage.Children.Add(currentCanvas); + + sectionCanvas = documentCreator.CreateContainer(exportContainer); + sectionCanvas.Name = exportContainer.Name; + CanvasHelper.SetPosition(sectionCanvas,new Point(exportContainer.Location.X,exportContainer.Location.Y)); + PerformList(sectionCanvas,exportContainer.ExportedItems); + } + + + void PerformList(Canvas myCanvas, System.Collections.Generic.List exportedItems) + { + Console.WriteLine(myCanvas.Name); + foreach (var element in exportedItems) { + var container = element as ExportContainer; + if (container != null) { +// Console.WriteLine("recursive"); + var containerCanvas = documentCreator.CreateContainer(container); + CanvasHelper.SetPosition(containerCanvas,new Point(container.Location.X,container.Location.Y)); + myCanvas.Children.Add(containerCanvas); +// Console.WriteLine("call recursive"); + PerformList(containerCanvas,container.ExportedItems); + } else { + var acceptor = element as IAcceptor; + acceptor.Accept(this); + myCanvas.Children.Add(UIElement); + } + } } public override void Visit(ExportText exportColumn){ - var textBlock = documentCreator.CreateTextBlock((ExportText)exportColumn); + var textBlock = documentCreator.CreateTextBlock((ExportText)exportColumn,ShouldSetBackcolor(exportColumn)); CanvasHelper.SetPosition(textBlock,new Point(exportColumn.Location.X,exportColumn.Location.Y)); - currentCanvas.Children.Add(textBlock); + UIElement = textBlock; } + + protected UIElement UIElement {get;private set;} + + public FixedPage FixedPage {get; private set;} } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfVisitor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfVisitor.cs index 2644e26177..1ca792bb57 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfVisitor.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfVisitor.cs @@ -38,12 +38,12 @@ namespace ICSharpCode.Reporting.Pdf public override void Visit(ExportContainer exportContainer) { foreach (var element in exportContainer.ExportedItems) { - var con = element as ExportContainer; - if (con != null) { - containerLocation = PdfHelper.LocationRelToParent(con); - var r = new Rectangle(containerLocation,con.DisplayRectangle.Size); - PdfHelper.FillRectangle(r,con.BackColor,gfx); - Visit(con); + var container = element as ExportContainer; + if (container != null) { + containerLocation = PdfHelper.LocationRelToParent(container); + var r = new Rectangle(containerLocation,container.DisplayRectangle.Size); + PdfHelper.FillRectangle(r,container.BackColor,gfx); + Visit(container); } containerLocation = PdfHelper.LocationRelToParent(exportContainer); var ac = element as IAcceptor; @@ -52,17 +52,16 @@ namespace ICSharpCode.Reporting.Pdf } - public override void Visit(ExportText exportColumn) + public override void Visit(ExportText exportText) { var columnLocation = containerLocation; - columnLocation.Offset(exportColumn.Location); - - if (exportColumn.BackColor != Color.White) { - var r = new Rectangle(columnLocation,exportColumn.DisplayRectangle.Size); - PdfHelper.FillRectangle(r,exportColumn.BackColor,gfx); + columnLocation.Offset(exportText.Location); + if (ShouldSetBackcolor(exportText)) { + var r = new Rectangle(columnLocation,exportText.DisplayRectangle.Size); + PdfHelper.FillRectangle(r,exportText.BackColor,gfx); } - PdfHelper.WriteText(textFormatter,columnLocation, exportColumn); + PdfHelper.WriteText(textFormatter,columnLocation, exportText); }