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 377ae2dbfd..aa0621b93a 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs
@@ -8,9 +8,7 @@
*/
using System;
using System.Collections.ObjectModel;
-
using ICSharpCode.Reporting.Exporter.Visitors;
-using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.Exporter
@@ -18,7 +16,7 @@ namespace ICSharpCode.Reporting.Exporter
///
/// Description of DebugExporter.
///
- public class DebugExporter:BaseExporter
+ class DebugExporter:BaseExporter
{
private DebugVisitor visitor;
@@ -29,13 +27,22 @@ namespace ICSharpCode.Reporting.Exporter
public override void Run () {
- Console.WriteLine(" DebugExporter with {0} Pages ",Pages.Count);
+ Console.WriteLine();
+ Console.WriteLine("Start DebugExporter with {0} Pages ",Pages.Count);
foreach (var page in Pages) {
- ShowDebug("--",page);
+ IAcceptor ac = page as IAcceptor;
+ if (ac != null) {
+ visitor.Visit(page);
+ }
+// RunInternal("--",page);
Console.WriteLine("-----------PageBreak---------");
}
+ Console.WriteLine("Finish DebugVisitor");
+ Console.WriteLine();
}
- void ShowDebug(string header,IExportContainer container)
+
+ /*
+ void RunInternal(string header,IExportContainer container)
{
var leading = header;
Console.WriteLine();
@@ -45,7 +52,7 @@ namespace ICSharpCode.Reporting.Exporter
var acceptor = item as IAcceptor;
if (exportContainer != null) {
if (exportContainer.ExportedItems.Count > 0) {
- ShowDebug(leading = leading + "--",exportContainer);
+ RunInternal(leading = leading + "--",exportContainer);
acceptor.Accept(visitor);
// ShowDebug(leading = leading + "--",exportContainer);
leading = leading.Substring(0,leading.Length -2);
@@ -64,6 +71,6 @@ namespace ICSharpCode.Reporting.Exporter
leading = leading.Substring(0, leading.Length - 2);
}
}
-
+ */
}
}
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 8a08d8ebd0..e9cd9e9e78 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,6 @@
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
-using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.Exporter.Visitors
@@ -18,12 +17,18 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
// http://www.remondo.net/strategy-pattern-example-csharp/
- public class DebugVisitor : AbstractVisitor
+ class DebugVisitor : AbstractVisitor
{
+
+
public override void Visit(ExportPage page)
{
Console.WriteLine(" {0} - {1} Items {2}",
page.Name,page.Location,page.BackColor);
+ foreach (var element in page.ExportedItems) {
+ var ac = element as IAcceptor;
+ ac.Accept(this);
+ }
}
@@ -33,22 +38,21 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
}
-
public override void Visit(ExportContainer exportColumn)
{
Console.WriteLine();
-// Console.WriteLine(" {0} - {1} Items {2}",
-// exportColumn.Name,exportColumn.Location,exportColumn.BackColor);
- Console.WriteLine("{0} - {1} Items {2}",
+ Console.WriteLine("\t{0} - {1} Items {2}",
exportColumn.Name,exportColumn.Location,exportColumn.BackColor);
+ foreach (var element in exportColumn.ExportedItems) {
+ var ac = element as IAcceptor;
+ ac.Accept(this);
+ }
}
+
public override void Visit(ExportText exportColumn)
{
- Console.WriteLine(" {0} - {1}", exportColumn.Text,exportColumn.Location);
+ Console.WriteLine("\t\t {0} - {1}", exportColumn.Text,exportColumn.Location);
}
-
-
}
-
}
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 530cc3025c..15eaba993b 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
@@ -3,39 +3,63 @@
using System;
using System.Collections.ObjectModel;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
+using Irony.Interpreter.Evaluator;
namespace ICSharpCode.Reporting.Exporter.Visitors
{
///
/// Description of ExpressionVisitor.
///
- internal class ExpressionVisitor: AbstractVisitor
+ class ExpressionVisitor: AbstractVisitor
{
private readonly Collection pages;
+ private readonly ExpressionEvaluatorGrammar grammar;
+ private readonly ExpressionEvaluator evaluator;
public ExpressionVisitor(Collection pages)
{
this.pages = pages;
+ grammar = new ExpressionEvaluatorGrammar();
+ evaluator = new ExpressionEvaluator(grammar);
}
public override void Visit(ICSharpCode.Reporting.PageBuilder.ExportColumns.ExportColumn exportColumn)
{
Console.WriteLine("Visit Page ");
+
}
public override void Visit(ICSharpCode.Reporting.PageBuilder.ExportColumns.ExportText exportColumn)
{
- Console.WriteLine("ExpressionVisitor <{0}>",exportColumn.Name);
+ Console.WriteLine("\t\t {0} - {1}", exportColumn.Text,exportColumn.Location);
+ var result = evaluator.Evaluate("2 + 3");
+ Console.WriteLine("ExpressionVisitor <{0}> - {1}",exportColumn.Name,result);
+
}
public override void Visit(ICSharpCode.Reporting.PageBuilder.ExportColumns.ExportContainer exportColumn)
{
- Console.WriteLine("ExpressionVisitor <{0}>",exportColumn.Name);
+ Console.WriteLine("\t{0} - {1} Items {2}",
+ exportColumn.Name,exportColumn.Location,exportColumn.BackColor);
+ foreach (var element in exportColumn.ExportedItems) {
+ var ac = element as IAcceptor;
+ ac.Accept(this);
+ }
+ var result = evaluator.Evaluate("2 * 10");
+ Console.WriteLine("ExpressionVisitor <{0}> - {1}",exportColumn.Name,result);
+
+
}
public override void Visit(ICSharpCode.Reporting.PageBuilder.ExportColumns.ExportPage page)
{
- Console.WriteLine("ExpressionVisitor page <{0}>",page.PageInfo.PageNumber);
+ foreach (var element in page.ExportedItems) {
+ var ac = element as IAcceptor;
+ ac.Accept(this);
+ }
+ var result = evaluator.Evaluate("5 * 10");
+// Console.WriteLine("ExpressionVisitor <{0} - {1}>",exportColumn.Name,result);
+ Console.WriteLine("ExpressionVisitor page <{0}> {1}",page.PageInfo.PageNumber,result);
}
}
}
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/ExpressionRunner.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/ExpressionRunner.cs
index 852638af95..c2dcdf0b1c 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/ExpressionRunner.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/ExpressionRunner.cs
@@ -27,13 +27,109 @@ namespace ICSharpCode.Reporting.Expressions
public override void Run()
{
+ Console.WriteLine();
Console.WriteLine("Start ExpressionVisitor");
foreach (var page in Pages) {
- InternalRun(page);
+ var acceptor = page as IAcceptor;
+ acceptor.Accept(visitor);
+// RunInternal(page);
}
Console.WriteLine("Finish ExpressionVisitor");
+ Console.WriteLine();
+ }
+
+// "Visitor"
+// http://irony.codeplex.com/discussions/213938
+//
+// http://irony.codeplex.com/discussions/35310
+
+ /*
+ void RunInternal(IExportContainer container)
+ {
+// 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);
+ bRunInternal(exportContainer.ExportedItems);
+ acceptor.Accept(visitor);
+// ShowDebug(leading = leading + "--",exportContainer);
+
+ }
+ }
+// acceptor.Accept(visitor);
+ }
+ }
+ */
+ /*
+
+ void bRunInternal(List list)
+ {
+// Console.WriteLine();
+// Console.WriteLine("{0}{1}",leading,container.Name);
+ foreach (var item in list) {
+ var exportContainer = item as IExportContainer;
+ var acceptor = item as IAcceptor;
+ if (exportContainer != null) {
+ if (exportContainer.ExportedItems.Count > 0) {
+ acceptor.Accept(visitor);
+ RunInternal(exportContainer);
+
+// ShowDebug(leading = leading + "--",exportContainer);
+
+ }
+ }
+ acceptor.Accept(visitor);
+ }
+ }
+ */
+ /*
+ void bRunInternal(IExportContainer container)
+ {
+// 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);
+ RunInternal(exportContainer);
+
+// ShowDebug(leading = leading + "--",exportContainer);
+
+ }
+ }
+ acceptor.Accept(visitor);
+ }
}
+ */
+ /*
+ //Items first, then container
+ void aRunInternal(IExportContainer container)
+ {
+// 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) {
+ RunInternal(exportContainer);
+ acceptor.Accept(visitor);
+// ShowDebug(leading = leading + "--",exportContainer);
+
+ }
+ }
+ acceptor.Accept(visitor);
+ }
+ }
+ */
+ /*
void InternalRun(ExportPage page)
{
page.Accept(visitor);
@@ -43,5 +139,6 @@ namespace ICSharpCode.Reporting.Expressions
acceptor.Accept(visitor);
}
}
+ */
}
}
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs
index 580842bdfc..8eb6f2befe 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs
@@ -8,6 +8,7 @@
*/
using System;
using System.Linq;
+using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Expressions;
using ICSharpCode.Reporting.Interfaces;
@@ -29,6 +30,8 @@ namespace ICSharpCode.Reporting.PageBuilder
base.BuildExportList();
BuildDetail();
base.AddPage(CurrentPage);
+ var d = new DebugExporter(Pages);
+ d.Run();
var er = new ExpressionRunner(Pages);
er.Run();
}
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs
index cd6ef117cd..5dcba6e194 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs
@@ -13,7 +13,6 @@ using System.Reflection;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Interfaces;
-using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
using NUnit.Framework;