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 c5873227d5..dd3e09e426 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs
@@ -29,15 +29,14 @@ namespace ICSharpCode.Reporting.ExportRenderer
///
class FixedDocumentCreator
{
- BrushConverter brushConverter ;
+ private readonly BrushConverter brushConverter ;
public FixedDocumentCreator()
{
brushConverter = new BrushConverter();
}
-
- public static UIElement CreateFixedPage(ExportPage exportPage) {
+ public static FixedPage CreateFixedPage(ExportPage exportPage) {
var fixedPage = new FixedPage();
fixedPage.Width = exportPage.Size.ToWpf().Width;
fixedPage.Height = exportPage.Size.ToWpf().Height;
@@ -46,25 +45,19 @@ namespace ICSharpCode.Reporting.ExportRenderer
fixedPage.Background = new SolidColorBrush(System.Drawing.Color.Blue.ToWpf());
return fixedPage;
}
-
- public UIElement CreateContainer(ExportContainer container)
- {
+
+ public Canvas CreateContainer(ExportContainer container) {
var canvas = CreateCanvas(container);
var size = container.DesiredSize.ToWpf();
canvas.Measure(size);
-
canvas.Arrange(new Rect(new Point(),size ));
-
canvas.UpdateLayout();
-
return canvas;
-
}
- public TextBlock CreateTextBlock(ExportText exportText)
- {
+ public TextBlock CreateTextBlock(ExportText exportText){
var textBlock = new TextBlock();
textBlock.Foreground = ConvertBrush(exportText.ForeColor);
// textBlock.Background = ConvertBrush(exportText.BackColor);
@@ -96,8 +89,7 @@ namespace ICSharpCode.Reporting.ExportRenderer
}
- static Size MeasureTextInWpf(ExportText exportText)
- {
+ static Size MeasureTextInWpf(ExportText exportText){
if (exportText.CanGrow) {
@@ -126,8 +118,7 @@ namespace ICSharpCode.Reporting.ExportRenderer
}
- Canvas CreateCanvas(ExportContainer container)
- {
+ Canvas CreateCanvas(ExportContainer container){
var canvas = new Canvas();
SetPositionAndSize(canvas,container);
@@ -136,6 +127,7 @@ namespace ICSharpCode.Reporting.ExportRenderer
return canvas;
}
+
static void SetPositionAndSize(FrameworkElement element,ExportColumn column) {
if (column == null)
throw new ArgumentNullException("column");
@@ -143,8 +135,8 @@ namespace ICSharpCode.Reporting.ExportRenderer
SetDimension(element,column);
}
- static void SetDimension (FrameworkElement element,IExportColumn exportColumn)
- {
+
+ static void SetDimension (FrameworkElement element,IExportColumn exportColumn){
element.Width = exportColumn.DesiredSize.Width;
element.Height = exportColumn.DesiredSize.Height;
}
@@ -156,13 +148,12 @@ namespace ICSharpCode.Reporting.ExportRenderer
}
- void SetFont(TextBlock textBlock,IExportText exportText)
- {
+ void SetFont(TextBlock textBlock,IExportText exportText){
textBlock.FontFamily = new FontFamily(exportText.Font.FontFamily.Name);
-//http://www.codeproject.com/Articles/441009/Drawing-Formatted-Text-in-a-Windows-Forms-Applicat
+ //http://www.codeproject.com/Articles/441009/Drawing-Formatted-Text-in-a-Windows-Forms-Applicat
-textBlock.FontSize = exportText.Font.Size * 96/72;
+ textBlock.FontSize = exportText.Font.Size * 96/72;
if (exportText.Font.Bold) {
textBlock.FontWeight = FontWeights.Bold;
@@ -180,8 +171,7 @@ textBlock.FontSize = exportText.Font.Size * 96/72;
}
- void CreateStrikeout (TextBlock textBlock,IExportText exportColumn )
- {
+ void CreateStrikeout (TextBlock textBlock,IExportText exportColumn ){
if (textBlock == null)
throw new ArgumentNullException("textBlock");
if (exportColumn == null)
@@ -196,8 +186,7 @@ textBlock.FontSize = exportText.Font.Size * 96/72;
}
- void CreateUnderline(TextBlock textBlock,IExportText exportColumn)
- {
+ void CreateUnderline(TextBlock textBlock,IExportText exportColumn){
if (exportColumn == null)
throw new ArgumentNullException("exportColumn");
if (textBlock == null)
@@ -210,8 +199,7 @@ textBlock.FontSize = exportText.Font.Size * 96/72;
}
- Pen CreateWpfPen(IReportObject exportColumn)
- {
+ Pen CreateWpfPen(IReportObject exportColumn){
if (exportColumn == null)
throw new ArgumentNullException("exportColumn");
var myPen = new Pen();
@@ -221,8 +209,7 @@ textBlock.FontSize = exportText.Font.Size * 96/72;
}
- Brush ConvertBrush(System.Drawing.Color color)
- {
+ Brush ConvertBrush(System.Drawing.Color color){
if (brushConverter.IsValid(color.Name)){
return brushConverter.ConvertFromString(color.Name) as SolidColorBrush;
} else{
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 aa0621b93a..01cc151773 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs
@@ -34,7 +34,6 @@ namespace ICSharpCode.Reporting.Exporter
if (ac != null) {
visitor.Visit(page);
}
-// RunInternal("--",page);
Console.WriteLine("-----------PageBreak---------");
}
Console.WriteLine("Finish DebugVisitor");
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/ExpressionVisitor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/ExpressionVisitor.cs
index 3c6745f1b6..c06c606953 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/ExpressionVisitor.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/ExpressionVisitor.cs
@@ -23,15 +23,18 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
evaluator = new ExpressionEvaluator(grammar);
}
-
- public override void Visit(ICSharpCode.Reporting.PageBuilder.ExportColumns.ExportText exportColumn)
+ public override void Visit(ExportPage page)
{
- var result = evaluator.Evaluate("2 + 3");
- Console.WriteLine("\t\tExpressionVisitor <{0}> - {1}",exportColumn.Name,result);
-
+ var result = evaluator.Evaluate("5 * 10");
+ Console.WriteLine("ExpressionVisitor page <{0}> {1}",page.PageInfo.PageNumber,result);
+ foreach (var element in page.ExportedItems) {
+ var ac = element as IAcceptor;
+ ac.Accept(this);
+ }
}
+
- public override void Visit(ICSharpCode.Reporting.PageBuilder.ExportColumns.ExportContainer exportColumn)
+ public override void Visit(ExportContainer exportColumn)
{
var result = evaluator.Evaluate("2 * 10");
Console.WriteLine("\tExpressionVisitor <{0}> - {1}",exportColumn.Name,result);
@@ -43,17 +46,11 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
}
}
- public override void Visit(ICSharpCode.Reporting.PageBuilder.ExportColumns.ExportPage page)
+
+ public override void Visit(ExportText exportColumn)
{
- var result = evaluator.Evaluate("5 * 10");
- Console.WriteLine("ExpressionVisitor page <{0}> {1}",page.PageInfo.PageNumber,result);
- foreach (var element in page.ExportedItems) {
- var ac = element as IAcceptor;
- ac.Accept(this);
- }
-
-// Console.WriteLine("ExpressionVisitor <{0} - {1}>",exportColumn.Name,result);
-
+ var result = evaluator.Evaluate("2 + 3");
+ Console.WriteLine("\t\tExpressionVisitor <{0}> - {1}",exportColumn.Name,result);
}
}
}
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 1d92225619..6c11228db9 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
@@ -9,6 +9,7 @@
using System;
using System.Windows;
using System.Windows.Controls;
+using System.Windows.Documents;
using ICSharpCode.Reporting.ExportRenderer;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
@@ -18,38 +19,51 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
///
/// Description of WpfVisitor.
///
- class WpfVisitor: AbstractVisitor
- {
+ ///
+ class WpfVisitor: AbstractVisitor {
+
private readonly FixedDocumentCreator documentCreator;
+ FixedPage fixedPage;
+ Canvas currentCanvas;
public WpfVisitor()
{
documentCreator = new FixedDocumentCreator();
}
-
public override void Visit(ExportPage page)
{
- UIElement = FixedDocumentCreator.CreateFixedPage(page);
+ Console.WriteLine("WpfVisitor page <{0}>",page.PageInfo.PageNumber);
+ fixedPage = FixedDocumentCreator.CreateFixedPage(page);
+ FixedPage = fixedPage;
+ foreach (var element in page.ExportedItems) {
+ var ac = element as IAcceptor;
+ ac.Accept(this);
+ }
}
-
public override void Visit(ExportContainer exportColumn)
{
- var canvas = (Canvas)documentCreator.CreateContainer(exportColumn);
- CanvasHelper.SetPosition(canvas,new Point(exportColumn.Location.X,exportColumn.Location.Y));
- UIElement = canvas;
+
+ Console.WriteLine("\tWpfVisitor <{0}>",exportColumn.Name);
+ currentCanvas = documentCreator.CreateContainer(exportColumn);
+ CanvasHelper.SetPosition(currentCanvas,new Point(exportColumn.Location.X,exportColumn.Location.Y));
+ foreach (var element in exportColumn.ExportedItems) {
+ var ac = element as IAcceptor;
+ ac.Accept(this);
+ }
+ fixedPage.Children.Add(currentCanvas);
}
public override void Visit(ExportText exportColumn)
{
- TextBlock textBlock = documentCreator.CreateTextBlock(exportColumn);
+ Console.WriteLine("\t\tExpressionVisitor <{0}>",exportColumn.Name);
+ var textBlock = documentCreator.CreateTextBlock(exportColumn);
CanvasHelper.SetPosition(textBlock,new Point(exportColumn.Location.X,exportColumn.Location.Y));
- UIElement = textBlock;
+ currentCanvas.Children.Add(textBlock);
}
-
- public UIElement UIElement {get; private set;}
+ public FixedPage FixedPage {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 376edcd645..285a048faf 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs
@@ -8,131 +8,50 @@
*/
using System;
using System.Collections.ObjectModel;
-using System.Windows;
-using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Markup;
-using ICSharpCode.Reporting.BaseClasses;
+
using ICSharpCode.Reporting.Exporter.Visitors;
-using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
-namespace ICSharpCode.Reporting.Exporter
-{
+namespace ICSharpCode.Reporting.Exporter{
///
/// Description of PrintExporter.
///
- public class WpfExporter:BaseExporter
- {
- WpfVisitor visitor;
- FixedPage fixedPage;
+ ///
+ class WpfExporter:BaseExporter {
+
+ private readonly WpfVisitor visitor;
- public WpfExporter(Collection pages):base(pages)
- {
+ public WpfExporter(Collection pages):base(pages){
visitor = new WpfVisitor();
}
-
+
public override void Run () {
Document = new FixedDocument();
+ Console.WriteLine();
+ Console.WriteLine("Start WpfExporter with {0} Pages ",Pages.Count);
foreach (var page in Pages) {
- InternalRun(page);
- AddPageToDocument(Document,fixedPage);
- }
- }
-
-
- void InternalRun(ExportPage page)
- {
- page.Accept(visitor);
- fixedPage = (FixedPage)visitor.UIElement;
- foreach (var item in page.ExportedItems) {
- ShowContainerRecursive(null,item);
- }
- }
-
-
- void ShowContainerRecursive(Canvas parentCanvas,IExportColumn item)
- {
- var exportContainer = item as IExportContainer;
-
- Canvas containerCanvas = null;
-
- if (exportContainer != null) {
-
- if (exportContainer.Name =="ReportDetail") {
- Console.WriteLine("Section {0}",item.Name);
- exportContainer.BackColor = System.Drawing.Color.LightBlue;
- }
-
- if (exportContainer.Name == "Row") {
- Console.WriteLine(item.Name);
-
- }
-
- if (parentCanvas == null) {
- containerCanvas = CreateContainer(fixedPage,exportContainer);
-// Console.WriteLine("Section {0} at {1} size {2}",item.Name,CanvasHelper.GetPosition(containerCanvas),containerCanvas.DesiredSize);
- 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);
+ IAcceptor acceptor = page as IAcceptor;
+ if (acceptor != null) {
+ visitor.Visit(page);
}
-
-// Console.WriteLine("canvas at {0}",CanvasHelper.GetPosition(containerCanvas));
-
- foreach (var element in exportContainer.ExportedItems) {
-
- if (!IsContainer(element)) {
-
- var singleItem = CreateSingleEntry(containerCanvas,element);
-
-// Console.WriteLine("TEST {0} - {1}",CanvasHelper.GetPosition(singleItem),CanvasHelper.GetPosition(containerCanvas));
- containerCanvas.Children.Add(singleItem);
- }
- ShowContainerRecursive(parentCanvas,element);
- }
- }
- }
-
-
- static bool IsContainer (IExportColumn column) {
- var container = column as IExportContainer;
- if (container == null) {
- return false;
+ AddPageToDocument(Document,visitor.FixedPage);
+ Console.WriteLine("-----------PageBreak---------");
}
- return true;
+ Console.WriteLine("Finish WpfVisitor");
+ Console.WriteLine();
}
- Canvas CreateContainer(UIElement parent,IExportContainer exportContainer)
- {
- var acceptor = exportContainer as IAcceptor;
- acceptor.Accept(visitor);
- var canvas = (Canvas)visitor.UIElement;
- return canvas;
- }
-
-
- UIElement CreateSingleEntry(UIElement parent, IExportColumn element)
- {
- var acceptor = element as IAcceptor;
- acceptor.Accept(visitor);
- var uiElement = visitor.UIElement;
- return uiElement;
- }
-
-
- static void AddPageToDocument(FixedDocument fixedDocument,FixedPage page)
- {
+ static void AddPageToDocument(FixedDocument fixedDocument,FixedPage page){
PageContent pageContent = new PageContent();
((IAddChild)pageContent).AddChild(page);
+
fixedDocument.Pages.Add(pageContent);
}
-
public FixedDocument Document {get;private set;}
}
}
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 19e6b0e3f0..4ff4944592 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/PreviewViewModel.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/PreviewViewModel.cs
@@ -35,6 +35,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer
Document = CreateFixedDocument(reportSettings);
+// var wpfExporter = new old_WpfExporter(pages);
var wpfExporter = new WpfExporter(pages);
wpfExporter.Run();
this.document = wpfExporter.Document;