Browse Source

ExportText is based on IReportExpression, Evaluation is done on Fields 'Expression' and 'Text'. 'Expression' precedes 'Text'

pull/15/head^2
peterforstmeier 15 years ago
parent
commit
afcca11550
  1. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseTextItem.cs
  2. 25
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs
  3. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/TextStyleDecorator.cs
  4. 26
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportText.cs
  5. 39
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/EvaluationHelper.cs
  6. 40
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/ExpressionEvaluatorFacade.cs

1
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseTextItem.cs

@ -41,6 +41,7 @@ namespace ICSharpCode.Reports.Core @@ -41,6 +41,7 @@ namespace ICSharpCode.Reports.Core
TextStyleDecorator st = this.CreateItemStyle();
ExportText item = new ExportText(st,false);
item.Text = this.text;
item.Expression = this.Expression;
return item;
}

25
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs

@ -303,33 +303,20 @@ foreach (var element in section.Items) @@ -303,33 +303,20 @@ foreach (var element in section.Items)
private static void EvaluateRecursive (IExpressionEvaluatorFacade evaluatorFassade,ExporterCollection items)
{
foreach (BaseExportColumn be in items) {
foreach (BaseExportColumn exportColumn in items) {
IExportContainer ec = be as IExportContainer;
IExportContainer ec = exportColumn as IExportContainer;
if (ec != null)
{
if (ec.Items.Count > 0) {
EvaluateRecursive(evaluatorFassade,ec.Items);
}
}
/*
IReportExpression expr = be as IReportExpression;
if (expr != null)
{
if (EvaluationHelper.CanEvaluate(expr.Text)) {
expr.Text = evaluatorFassade.Evaluate(expr.Text);
}
}
*/
ExportText et = be as ExportText;
if ((et != null) && (!String.IsNullOrEmpty(et.Text))) {
if (EvaluationHelper.CanEvaluate(et.Text)) {
et.Text = evaluatorFassade.Evaluate(et.Text);
}
IReportExpression expressionItem = exportColumn as IReportExpression;
if (expressionItem != null) {
EvaluationHelper.EvaluateItem(evaluatorFassade,expressionItem);
}
}
}

1
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/TextStyleDecorator.cs

@ -12,7 +12,6 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -12,7 +12,6 @@ namespace ICSharpCode.Reports.Core.Exporter
public class TextStyleDecorator:BaseStyleDecorator
{
private Font font;
private StringFormat stringFormat;
private StringTrimming stringTrimming;
private ContentAlignment contentAlignment;

26
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportText.cs

@ -12,14 +12,11 @@ namespace ICSharpCode.Reports.Core.Exporter { @@ -12,14 +12,11 @@ namespace ICSharpCode.Reports.Core.Exporter {
/// <summary>
/// Description of LineItem.
/// </summary>
public class ExportText :BaseExportColumn{
private string text;
public class ExportText :BaseExportColumn,IReportExpression
{
#region Constructors
public ExportText (BaseStyleDecorator itemStyle,bool isContainer):base(itemStyle,isContainer)
{
}
@ -51,10 +48,10 @@ namespace ICSharpCode.Reports.Core.Exporter { @@ -51,10 +48,10 @@ namespace ICSharpCode.Reports.Core.Exporter {
iTextSharp.text.Rectangle r = base.ConvertToPdfRectangle();
columnText.SetSimpleColumn(r.Left, r.Top , r.Left + r.Width,r.Top - r.Height,pdfFormat.Leading,pdfFormat.Alignment);
string formatedText = this.text;
string formatedText = this.Text;
if (!String.IsNullOrEmpty(StyleDecorator.FormatString)) {
formatedText = StandardFormatter.FormatOutput(this.text,this.StyleDecorator.FormatString,
formatedText = StandardFormatter.FormatOutput(this.Text,this.StyleDecorator.FormatString,
this.StyleDecorator.DataType,String.Empty);
}
@ -95,22 +92,15 @@ namespace ICSharpCode.Reports.Core.Exporter { @@ -95,22 +92,15 @@ namespace ICSharpCode.Reports.Core.Exporter {
base.DrawItem(graphics);
base.Decorate(graphics);
TextDrawer.DrawString(graphics, this.text,this.StyleDecorator);
TextDrawer.DrawString(graphics, this.Text,this.StyleDecorator);
}
#endregion
public string Text
{
get {
return text;
}
set {
text = value;
}
}
public string Text {get;set;}
public string Expression {get;set;}
public new TextStyleDecorator StyleDecorator
{
@ -125,7 +115,7 @@ namespace ICSharpCode.Reports.Core.Exporter { @@ -125,7 +115,7 @@ namespace ICSharpCode.Reports.Core.Exporter {
public override string ToString()
{
return this.text;
return this.Text;
}
}

39
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/EvaluationHelper.cs

@ -10,6 +10,7 @@ using System; @@ -10,6 +10,7 @@ using System;
using ICSharpCode.Reports.Core;
using ICSharpCode.Reports.Core.Exporter;
using ICSharpCode.Reports.Core.Interfaces;
using SimpleExpressionEvaluator;
namespace ICSharpCode.Reports.Expressions.ReportingLanguage
{
@ -28,14 +29,14 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage @@ -28,14 +29,14 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
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;
@ -49,12 +50,28 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage @@ -49,12 +50,28 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
if (container != null) {
EvaluateReportItems(evaluator,container.Items);
}
BaseTextItem textItem = column as BaseTextItem;
if (textItem != null) {
textItem.Text = evaluator.Evaluate(textItem.Text);
IReportExpression expressionItem = column as IReportExpression;
if (expressionItem != null) {
EvaluateItem(evaluator,expressionItem);
}
}
}
public static void EvaluateItem( IExpressionEvaluatorFacade evaluator,IReportExpression expressionItem)
{
string expr = String.Empty;
if (expressionItem != null)
{
if (!String.IsNullOrEmpty(expressionItem.Expression)) {
expr = expressionItem.Expression;
} else {
expr = expressionItem.Text;
}
}
expressionItem.Text = evaluator.Evaluate(expr);
}
public static void EvaluateRow(IExpressionEvaluatorFacade evaluator,ExporterCollection row)
@ -64,17 +81,17 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage @@ -64,17 +81,17 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
if (container != null) {
EvaluateRow(evaluator,container.Items);
}
ExportText textItem = column as ExportText;
if (textItem != null) {
textItem.Text = evaluator.Evaluate(textItem.Text);
IReportExpression expressionItem = column as IReportExpression;
if (expressionItem != null) {
EvaluateItem(evaluator,expressionItem);
}
}
}
public static bool CanEvaluate (string expressionn)
public static bool CanEvaluate (string expression)
{
if ((!String.IsNullOrEmpty(expressionn)) && (expressionn.StartsWith("=",StringComparison.InvariantCultureIgnoreCase))) {
if ((!String.IsNullOrEmpty(expression)) && (expression.StartsWith("=",StringComparison.InvariantCultureIgnoreCase))) {
return true;
}
return false;

40
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/ExpressionEvaluatorFacade.cs

@ -34,12 +34,8 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage @@ -34,12 +34,8 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
{
try {
if (EvaluationHelper.CanEvaluate(expression)) {
IExpression compiled = compiler.CompileExpression<string>(expression);
this.context.ContextObject = this.SinglePage;
if (compiled != null) {
return (compiled.Evaluate(context)).ToString();
}
return EvaluateExpression(expression);
}
} catch (Exception e) {
expression = e.Message;
@ -49,24 +45,13 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage @@ -49,24 +45,13 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
return expression;
}
static void WriteLogMessage(Exception e)
{
Console.WriteLine("");
Console.WriteLine("ExpressionEvaluatorFacade.Evaluate");
Console.WriteLine(e.Message);
Console.WriteLine("");
}
public string Evaluate (string expression, object row)
{
try {
if (EvaluationHelper.CanEvaluate(expression)) {
IExpression compiled = compiler.CompileExpression<string>(expression);
this.context.ContextObject =row;
if (compiled != null) {
return (compiled.Evaluate(context)).ToString();
}
this.context.ContextObject = row;
return EvaluateExpression (expression);
}
} catch (Exception e) {
expression = e.Message;
@ -77,6 +62,25 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage @@ -77,6 +62,25 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
}
string EvaluateExpression(string expression)
{
IExpression compiled = compiler.CompileExpression<string>(expression);
if (compiled != null) {
return (compiled.Evaluate(context)).ToString();
}
return expression;
}
static void WriteLogMessage(Exception e)
{
Console.WriteLine("");
Console.WriteLine("ExpressionEvaluatorFacade.Evaluate");
Console.WriteLine(e.Message);
Console.WriteLine("");
}
private void FunctionStore (object sender,SimpleExpressionEvaluator.Evaluation.UnknownFunctionEventArgs e)
{

Loading…
Cancel
Save