Browse Source

Add Textblock as child of Container

reports
Peter Forstmeier 13 years ago
parent
commit
799e0f7e7d
  1. 4
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs
  2. 7
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/WpfVisitor.cs
  3. 118
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs
  4. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs
  5. 11
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs

4
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs

@ -48,9 +48,6 @@ namespace ICSharpCode.Reporting.ExportRenderer
public UIElement CreateContainer(ExportContainer container) 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 canvas = CreateCanvas(container);
var size = new Size(container.DesiredSize.Width,container.DesiredSize.Height); var size = new Size(container.DesiredSize.Width,container.DesiredSize.Height);
@ -175,7 +172,6 @@ namespace ICSharpCode.Reporting.ExportRenderer
Brush ConvertBrush(System.Drawing.Color color) Brush ConvertBrush(System.Drawing.Color color)
{ {
if (brushConverter.IsValid(color.Name)){ if (brushConverter.IsValid(color.Name)){
Console.WriteLine(color.Name);
return brushConverter.ConvertFromString(color.Name) as SolidColorBrush; return brushConverter.ConvertFromString(color.Name) as SolidColorBrush;
} else{ } else{
return brushConverter.ConvertFromString("Black") as SolidColorBrush; return brushConverter.ConvertFromString("Black") as SolidColorBrush;

7
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) public override void Visit(ExportPage page)
{ {
Console.WriteLine("page visitor");
UIElement = documentCreator.CreateFixedPage(page); UIElement = documentCreator.CreateFixedPage(page);
} }
public override void Visit(ExportContainer exportColumn) public override void Visit(ExportContainer exportColumn)
{ {
// Console.WriteLine("Wpf-Visit ExportContainer {0} - {1} - {2} - {3}", exportColumn.Name,exportColumn.Size, // Console.WriteLine("Wpf-Visit ExportContainer {0} - {1} - {2} - {3}", exportColumn.Name,exportColumn.Size,
// exportColumn.Location,exportColumn.BackColor); // exportColumn.Location,exportColumn.BackColor);
var canvas = documentCreator.CreateContainer(exportColumn); var canvas = documentCreator.CreateContainer(exportColumn);
UIElement = canvas; UIElement = canvas;
} }
@ -49,7 +50,7 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
public override void Visit(ExportText exportColumn) 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); var textBlock = documentCreator.CreateTextBlock(exportColumn);
UIElement = textBlock; UIElement = textBlock;
} }
@ -57,7 +58,7 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
public override void Visit(ExportColumn exportColumn) 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;} public UIElement UIElement {get; private set;}

118
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs

@ -8,6 +8,7 @@
*/ */
using System; using System;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using System.Windows.Documents; using System.Windows.Documents;
using System.Windows.Markup; using System.Windows.Markup;
@ -53,127 +54,82 @@ namespace ICSharpCode.Reporting.Exporter
page.Accept(visitor); page.Accept(visitor);
fixedPage = (FixedPage)visitor.UIElement; fixedPage = (FixedPage)visitor.UIElement;
foreach (var item in page.ExportedItems) { 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; var exportContainer = item as IExportContainer;
string name = string.Empty;
Canvas containerCanvas = null;
Console.WriteLine("perform {0}",parentCanvas);
if (exportContainer != null) { if (exportContainer != null) {
if (exportContainer.Name =="ReportDetail") { if (exportContainer.Name =="ReportDetail") {
Console.WriteLine(item.Name); Console.WriteLine(item.Name);
} }
//
if (exportContainer.Name == "Row") { if (exportContainer.Name == "Row") {
Console.WriteLine(item.Name); 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") { if (parentCanvas == null) {
Console.WriteLine(item.Name); containerCanvas = CreateContainer(fixedPage,exportContainer);
} Console.WriteLine("Section {0} at {1}",item.Name,CanvasHelper.GetPosition(containerCanvas));
// fixedPage.Children.Add(containerCanvas);
if (exportContainer.Name == "Row") { parentCanvas = containerCanvas;
Console.WriteLine("\t {0}",item.Name); } 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) { foreach (var element in exportContainer.ExportedItems) {
// Console.WriteLine(element.Name);
var el = element as IExportContainer; var el = element as IExportContainer;
if (el == null) { if (el == null) {
Console.WriteLine("\t\t {0}",element.Name); var t = CreateSingleEntry(parentCanvas,element);
} containerCanvas.Children.Add(t);
ShowContainerRecursive_2(null,exportContainer.ExportedItems[0]); }
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; var containerAcceptor = exportContainer as IAcceptor;
containerAcceptor.Accept(visitor); containerAcceptor.Accept(visitor);
var containerCanvas = (Canvas)visitor.UIElement; 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; return containerCanvas;
} }
void CreateSingleEntry(ref Canvas canvas, IExportColumn element) UIElement CreateSingleEntry(UIElement parent, IExportColumn element)
{ {
var v = element as IAcceptor; var v = element as IAcceptor;
v.Accept(visitor); v.Accept(visitor);
var c = visitor.UIElement; var c = visitor.UIElement;
CanvasHelper.SetLeft(c,element.Location.X); // CanvasHelper.SetLeft(c,element.Location.X);
CanvasHelper.SetTop(c,10); // CanvasHelper.SetTop(c,10);
// CanvasHelper.SetTop(c,element.Location.Y); CanvasHelper.SetPosition(c,new Point(element.Location.X,element.Location.Y));
canvas.AddChild(c); Console.WriteLine("CreateSingleEntry after {0}",CanvasHelper.GetPosition(c));
return c;
} }

1
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); var exportColumn = ExportColumnFactory.CreateItem(element);
exportColumn.Parent = exportContainer; 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);
// exportColumn.Location = new Point(element.Location.X,element.Location.Y + position.Y);
itemsList.Add(exportColumn); itemsList.Add(exportColumn);
} }
return itemsList; return itemsList;

11
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) 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); var row = CreateContainerForSection(position);
row.Name = "Row"; row.Name = "Row";
row.Parent = parent; row.Parent = parent;

Loading…
Cancel
Save