From 799e0f7e7db67251f6cad741b85213ea85d03e77 Mon Sep 17 00:00:00 2001 From: Peter Forstmeier Date: Mon, 8 Jul 2013 20:18:30 +0200 Subject: [PATCH] Add Textblock as child of Container --- .../ExportRenderer/FixedDocumentCreator.cs | 4 - .../Src/Exporter/Visitors/WpfVisitor.cs | 7 +- .../Src/Exporter/WpfExporter.cs | 118 ++++++------------ .../Converter/ContainerConverter.cs | 1 + .../Src/PageBuilder/DataPageBuilder.cs | 11 -- 5 files changed, 42 insertions(+), 99 deletions(-) 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 8eebaec16a..6b3b4d6f20 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs @@ -48,9 +48,6 @@ namespace ICSharpCode.Reporting.ExportRenderer public UIElement CreateContainer(ExportContainer container) { -// http://tech.pro/tutorial/736/wpf-tutorial-creating-a-custom-panel-control - Console.WriteLine(); - 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); @@ -175,7 +172,6 @@ namespace ICSharpCode.Reporting.ExportRenderer Brush ConvertBrush(System.Drawing.Color color) { if (brushConverter.IsValid(color.Name)){ - 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/Visitors/WpfVisitor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/WpfVisitor.cs index d14ee50463..b8bdba9c72 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 @@ -33,15 +33,16 @@ namespace ICSharpCode.Reporting.Exporter.Visitors public override void Visit(ExportPage page) { - Console.WriteLine("page visitor"); UIElement = documentCreator.CreateFixedPage(page); } public override void Visit(ExportContainer exportColumn) { + // Console.WriteLine("Wpf-Visit ExportContainer {0} - {1} - {2} - {3}", exportColumn.Name,exportColumn.Size, // exportColumn.Location,exportColumn.BackColor); + var canvas = documentCreator.CreateContainer(exportColumn); UIElement = canvas; } @@ -49,7 +50,7 @@ namespace ICSharpCode.Reporting.Exporter.Visitors public override void Visit(ExportText exportColumn) { - Console.WriteLine("Wpf-Visit ExportText {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.DesiredSize); +// Console.WriteLine("Wpf-Visit ExportText {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.DesiredSize); var textBlock = documentCreator.CreateTextBlock(exportColumn); UIElement = textBlock; } @@ -57,7 +58,7 @@ 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); +// Console.WriteLine("Wpf-Visit ExportColumn {0} - {1} - {2}", exportColumn.Name,exportColumn.Location,exportColumn.Size,); } 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 e74e71cdbd..2569dcbca8 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs @@ -8,6 +8,7 @@ */ using System; using System.Collections.ObjectModel; +using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Markup; @@ -53,127 +54,82 @@ namespace ICSharpCode.Reporting.Exporter page.Accept(visitor); fixedPage = (FixedPage)visitor.UIElement; foreach (var item in page.ExportedItems) { - ShowContainerRecursive_2(null,item); + ShowContainerRecursive(null,item); } } - void ShowContainerRecursive (string parentCanvas,IExportColumn item){ + + void ShowContainerRecursive(Canvas parentCanvas,IExportColumn item) + { var exportContainer = item as IExportContainer; - string name = string.Empty; - - Console.WriteLine("perform {0}",parentCanvas); + + Canvas containerCanvas = null; 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.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); + if (parentCanvas == null) { + containerCanvas = CreateContainer(fixedPage,exportContainer); + Console.WriteLine("Section {0} at {1}",item.Name,CanvasHelper.GetPosition(containerCanvas)); + fixedPage.Children.Add(containerCanvas); + parentCanvas = containerCanvas; + } else { + containerCanvas = CreateContainer(parentCanvas,exportContainer); + Console.WriteLine("Row {0} at {1}",item.Name,CanvasHelper.GetPosition(containerCanvas)); + parentCanvas.Children.Add(containerCanvas); } + Console.WriteLine("canvas at {0}",CanvasHelper.GetPosition(containerCanvas)); + 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]); + var t = CreateSingleEntry(parentCanvas,element); + containerCanvas.Children.Add(t); + } + ShowContainerRecursive(parentCanvas,element); } - } - - } +// http://stackoverflow.com/questions/4523208/wpf-positioning-uielement-on-a-canvas +//http://stackoverflow.com/questions/1123101/changing-position-of-an-element-programmatically-in-wpf +//http://stackoverflow.com/questions/1923697/how-can-i-get-the-position-of-a-child-element-relative-to-a-parent - void ShowContainerRecursive_1(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(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); - } - } - } - - Canvas CreateContainer(IExportContainer exportContainer) + Canvas CreateContainer(UIElement parent,IExportContainer exportContainer) { var containerAcceptor = exportContainer as IAcceptor; containerAcceptor.Accept(visitor); var containerCanvas = (Canvas)visitor.UIElement; +// Console.WriteLine("CreateContainer bevore {0}",CanvasHelper.GetPosition(containerCanvas)); + CanvasHelper.SetPosition(containerCanvas, + new Point(exportContainer.Location.X,exportContainer.Location.Y)); +// Console.WriteLine("CreateContainer after {0}",CanvasHelper.GetPosition(containerCanvas)); return containerCanvas; } - void CreateSingleEntry(ref Canvas canvas, IExportColumn element) + UIElement CreateSingleEntry(UIElement parent, IExportColumn element) { 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); +// CanvasHelper.SetLeft(c,element.Location.X); +// CanvasHelper.SetTop(c,10); + CanvasHelper.SetPosition(c,new Point(element.Location.X,element.Location.Y)); + Console.WriteLine("CreateSingleEntry after {0}",CanvasHelper.GetPosition(c)); + return c; } 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 f0dfdf2aa6..fdba89e87b 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 @@ -48,6 +48,7 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter var exportColumn = ExportColumnFactory.CreateItem(element); exportColumn.Parent = exportContainer; exportColumn.Location = new Point(element.Location.X,element.Location.Y + position.Y); +// exportColumn.Location = new Point(element.Location.X,element.Location.Y + position.Y); itemsList.Add(exportColumn); } return itemsList; 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 9a447378a4..a60f2ae095 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs @@ -147,17 +147,6 @@ namespace ICSharpCode.Reporting.PageBuilder IExportContainer CreateContainerIfNotExist(IReportContainer container, IExportContainer parent, Point position) { -// 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;