diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj index b8625d0a3f..a836439159 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj @@ -138,6 +138,7 @@ + diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardPrinter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardPrinter.cs index 484c4efd86..cf2b618977 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardPrinter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardPrinter.cs @@ -179,6 +179,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing #endregion + #region Container @@ -228,48 +229,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing } #endregion - - #region Evaluate - - - public static IExpressionEvaluatorFacade SetupEvaluator () - { - return new ExpressionEvaluatorFacade(null); - } - - - public static IExpressionEvaluatorFacade CreateEvaluator (ISinglePage singlePage,IDataNavigator dataNavigator) - { - if (singlePage == null) { - - throw new ArgumentNullException("singlePage"); - } - if (dataNavigator == null) { - throw new ArgumentNullException("dataNavigator"); - } - singlePage.IDataNavigator = dataNavigator; - IExpressionEvaluatorFacade evaluatorFacade = new ExpressionEvaluatorFacade(singlePage); - return evaluatorFacade; - } - - - public static void EvaluateRow(IExpressionEvaluatorFacade evaluator,ExporterCollection row) - { - try { - foreach (BaseExportColumn element in row) { - ExportText textItem = element as ExportText; - if (textItem != null) { -// if (textItem.Text.StartsWith("=",StringComparison.InvariantCulture)) { -//// Console.WriteLine(textItem.Text); -// } - textItem.Text = evaluator.Evaluate(textItem.Text); - } - } - } catch (Exception) { - throw ; - } - } - - #endregion + } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs index 1c0bff7623..6f01362ef1 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs @@ -48,7 +48,7 @@ namespace ICSharpCode.Reports.Core.Exporter this.DataNavigator = dataNavigator; SectionBounds = this.SinglePage.SectionBounds; this.Layouter = layouter; - this.Evaluator = StandardPrinter.CreateEvaluator(this.SinglePage,this.DataNavigator); + this.Evaluator = EvaluationHelper.CreateEvaluator(this.SinglePage,this.DataNavigator); } @@ -247,6 +247,26 @@ namespace ICSharpCode.Reports.Core.Exporter } + protected Point ConvertStandardRow(ExporterCollection mylist, ISimpleContainer simpleContainer) + { + var rowSize = simpleContainer.Size; +Console.WriteLine("ConvertStandardRow"); + + Point curPos = new Point (DefaultLeftPosition,CurrentPosition.Y + simpleContainer.Size.Height); + + ExporterCollection ml = BaseConverter.ConvertItems (simpleContainer, curPos); + //curPos = new Point (DefaultLeftPosition,curPos.Y + simpleContainer.Size.Height); + EvaluationHelper.EvaluateRow(Evaluator,ml); + mylist.AddRange(ml); + // + simpleContainer.Size = rowSize; + Console.WriteLine(""); + return curPos; + + } + + + /* protected Point ConvertStandardRow(ExporterCollection mylist, ISimpleContainer simpleContainer) { var rowSize = simpleContainer.Size; @@ -258,11 +278,11 @@ Console.WriteLine("ConvertStandardRow"); return curPos; } - + */ protected void AfterConverting (ExporterCollection convertedList) { - StandardPrinter.EvaluateRow(Evaluator,convertedList); + EvaluationHelper.EvaluateRow(Evaluator,convertedList); } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs index 5ff2050a82..3a285aca66 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs @@ -5,6 +5,7 @@ using System; using System.Drawing; using ICSharpCode.Reports.Core.BaseClasses.Printing; using ICSharpCode.Reports.Core.Interfaces; +using ICSharpCode.Reports.Expressions.ReportingLanguage; namespace ICSharpCode.Reports.Core.Exporter { @@ -68,7 +69,6 @@ namespace ICSharpCode.Reports.Core.Exporter childSize = section.Items[1].Size; } - do { base.SaveSectionSize(section.Size); PrintHelper.AdjustSectionLocation (section); @@ -103,8 +103,6 @@ namespace ICSharpCode.Reports.Core.Exporter FillRow(simpleContainer,childNavigator); FireRowRendering(simpleContainer,childNavigator); PrepareContainerForConverting(section,simpleContainer); - -// FireRowRendering(simpleContainer,childNavigator); base.CurrentPosition = ConvertStandardRow(exporterCollection,simpleContainer); CheckForPageBreak(section,exporterCollection); } @@ -121,12 +119,10 @@ namespace ICSharpCode.Reports.Core.Exporter else { // No Grouping at all, the first item in section.items is the DetailRow - Size containerSize = section.Items[0].Size; FillRow(simpleContainer,base.DataNavigator); FireRowRendering(simpleContainer,base.DataNavigator); base.PrepareContainerForConverting(section,simpleContainer); -// FireRowRendering(simpleContainer,base.DataNavigator); base.CurrentPosition = ConvertStandardRow (exporterCollection,simpleContainer); section.Size = base.RestoreSectionSize; section.Items[0].Size = containerSize; @@ -180,10 +176,10 @@ namespace ICSharpCode.Reports.Core.Exporter base.FireSectionRendering(section); ExporterCollection list = StandardPrinter.ConvertPlainCollection(groupCollection,offset); - StandardPrinter.EvaluateRow(base.Evaluator,list); + EvaluationHelper.EvaluateRow(base.Evaluator,list); exportList.AddRange(list); - AfterConverting (list); + //AfterConverting (list); retVal = new Point (DefaultLeftPosition,offset.Y + groupCollection[0].Size.Height + 20 + (3 *GlobalValues.GapBetweenContainer)); } else { FillRow(groupedRows[0],base.DataNavigator); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs index 6ebcc10687..e6b102f288 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs @@ -8,6 +8,7 @@ using System.Linq; using ICSharpCode.Reports.Core.BaseClasses.Printing; using ICSharpCode.Reports.Core.Interfaces; +using ICSharpCode.Reports.Expressions.ReportingLanguage; namespace ICSharpCode.Reports.Core.Exporter { @@ -207,9 +208,9 @@ base.PrepareContainerForConverting(section,simpleContainer); groupCollection = section.Items.ExtractGroupedColumns(); base.DataNavigator.Fill(groupCollection); base.FireSectionRendering(section); - ExporterCollection list = StandardPrinter.ConvertPlainCollection(groupCollection,offset); - StandardPrinter.EvaluateRow(base.Evaluator,list); + ExporterCollection list = StandardPrinter.ConvertPlainCollection(groupCollection,offset); + EvaluationHelper.EvaluateRow(base.Evaluator,list); exportList.AddRange(list); AfterConverting (list); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/EvaluationHelper.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/EvaluationHelper.cs new file mode 100644 index 0000000000..29a22550c4 --- /dev/null +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/EvaluationHelper.cs @@ -0,0 +1,65 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 30.01.2011 + * Time: 19:59 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using ICSharpCode.Reports.Core; +using ICSharpCode.Reports.Core.Exporter; +using ICSharpCode.Reports.Core.Interfaces; + +namespace ICSharpCode.Reports.Expressions.ReportingLanguage +{ + /// + /// Description of EvaluationHelper. + /// + public class EvaluationHelper + { + + public static IExpressionEvaluatorFacade SetupEvaluator () + { + return new ExpressionEvaluatorFacade(null); + } + + + public static IExpressionEvaluatorFacade CreateEvaluator (ISinglePage singlePage,IDataNavigator dataNavigator) + { + if (singlePage == null) { + + throw new ArgumentNullException("singlePage"); + } + if (dataNavigator == null) { + throw new ArgumentNullException("dataNavigator"); + } + singlePage.IDataNavigator = dataNavigator; + IExpressionEvaluatorFacade evaluatorFacade = new ExpressionEvaluatorFacade(singlePage); + return evaluatorFacade; + } + + + public static void EvaluateRow(IExpressionEvaluatorFacade evaluator,ExporterCollection row) + { + try { + foreach (BaseExportColumn column in row) { + var container = column as IExportContainer; + if (container != null) { + EvaluateRow(evaluator,container.Items); + } + ExportText textItem = column as ExportText; + if (textItem != null) { +// if (textItem.Text.StartsWith("=",StringComparison.InvariantCulture)) { + //// Console.WriteLine(textItem.Text); +// } + textItem.Text = evaluator.Evaluate(textItem.Text); + } + } + } catch (Exception) { + throw ; + } + } + + } +} diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/AbstractRenderer.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/AbstractRenderer.cs index 6143349652..6d0d5238b5 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/AbstractRenderer.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/AbstractRenderer.cs @@ -85,7 +85,7 @@ namespace ICSharpCode.Reports.Core this.reportDocument.RenderPageEnd += new EventHandler (PrintPageFooter); this.reportDocument.RenderReportEnd += new EventHandler (PrintReportFooter); - this.Evaluator = StandardPrinter.SetupEvaluator(); + this.Evaluator = EvaluationHelper.SetupEvaluator(); }