From bdc54cbf1155daf069ecc4ba7b1dcb0b5797f0db Mon Sep 17 00:00:00 2001 From: peterforstmeier Date: Wed, 29 Jun 2011 20:41:10 +0200 Subject: [PATCH] RightToLeft --- .../Project/ReportItems/BaseTextItem.cs | 37 ++++++++--- .../TypeProviders/TextItemTypeProvider.cs | 3 + .../BaseClasses/Printing/TextDrawer.cs | 11 ++-- .../Project/BaseItems/BaseGraphicItem.cs | 5 +- .../Project/BaseItems/BaseTextItem.cs | 12 ++-- .../Project/Exporter/BasePager.cs | 2 - .../Exporter/Converters/BaseConverter.cs | 2 - .../Converters/GroupedRowConverter.cs | 19 ------ .../Project/Exporter/DataPageBuilder.cs | 2 - .../Decorators/GraphicStyleDecorator.cs | 24 +++---- .../Exporter/Decorators/Linedecorator.cs | 1 - .../Exporter/Decorators/TextStyleDecorator.cs | 63 ++++--------------- .../Exporter/ExportColumns/ExportText.cs | 5 ++ 13 files changed, 68 insertions(+), 118 deletions(-) diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseTextItem.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseTextItem.cs index dccb269c64..684ff3632c 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseTextItem.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseTextItem.cs @@ -59,6 +59,15 @@ namespace ICSharpCode.Reports.Addin if (this.stringTrimming != StringTrimming.None) { designTrimmimg = stringTrimming; } + +// var o = StringFormatFlags.LineLimit; +// new StringFormat(StringFormatFlags.MeasureTrailingSpaces) +// http://msdn.microsoft.com/de-de/library/system.drawing.stringformatflags.aspx + http://www.tutorials.de/net-windows-forms/240717-c-mit-drawstring-senkrecht-drucken.html + + if (this.RightToLeft == System.Windows.Forms.RightToLeft.Yes) { + Console.WriteLine("RightToLeft"); + } TextDrawer.DrawString(graphics,this.Text,this.Font, new SolidBrush(this.ForeColor), this.ClientRectangle, @@ -70,8 +79,8 @@ namespace ICSharpCode.Reports.Addin - [EditorAttribute(typeof(DefaultTextEditor), - typeof(System.Drawing.Design.UITypeEditor) )] + [EditorAttribute(typeof(DefaultTextEditor), + typeof(System.Drawing.Design.UITypeEditor) )] public override string Text { get { return base.Text; } set { base.Text = value; @@ -116,9 +125,11 @@ namespace ICSharpCode.Reports.Addin } } + + [Category("Appearance")] - [EditorAttribute(typeof(System.Drawing.Design.ContentAlignmentEditor), - typeof(System.Drawing.Design.UITypeEditor) )] + [EditorAttribute(typeof(System.Drawing.Design.ContentAlignmentEditor), + typeof(System.Drawing.Design.UITypeEditor) )] public ContentAlignment ContentAlignment { get { return contentAlignment; } set { @@ -127,9 +138,17 @@ namespace ICSharpCode.Reports.Addin } } + + [Category("Appearance")] + public override System.Windows.Forms.RightToLeft RightToLeft { + get { return base.RightToLeft; } + set { base.RightToLeft = value; } + } + + #endregion - + [Browsable(true), Category("Databinding"), Description("Datatype of the underlying Column")] @@ -144,8 +163,8 @@ namespace ICSharpCode.Reports.Addin [Browsable(true), Category("Expression"), Description("Enter a valid Expression")] - [EditorAttribute(typeof(DefaultTextEditor), - typeof(System.Drawing.Design.UITypeEditor) )] + [EditorAttribute(typeof(DefaultTextEditor), + typeof(System.Drawing.Design.UITypeEditor) )] public string Expression {get;set;} #endregion @@ -153,9 +172,9 @@ namespace ICSharpCode.Reports.Addin #region CanGrow/CanShrink public bool CanGrow {get;set;} - + public bool CanShrink {get;set;} - + #endregion } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/TypeProviders/TextItemTypeProvider.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/TypeProviders/TextItemTypeProvider.cs index f75c462075..67053b0f1f 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/TypeProviders/TextItemTypeProvider.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/TypeProviders/TextItemTypeProvider.cs @@ -73,6 +73,9 @@ namespace ICSharpCode.Reports.Addin.TypeProviders prop = props.Find("Expression",true); allProperties.Add(prop); + prop = props.Find("RightToLeft",true); + allProperties.Add(prop); + return new PropertyDescriptorCollection(allProperties.ToArray()); } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/TextDrawer.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/TextDrawer.cs index 4dd407fd49..7d5950e60b 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/TextDrawer.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/TextDrawer.cs @@ -49,14 +49,17 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing if (decorator == null) { throw new ArgumentNullException("decorator"); } + StringFormat stringFormat = BuildStringFormat(decorator.StringTrimming,decorator.ContentAlignment); - string formattedString = text; - - if (! String.IsNullOrEmpty(decorator.FormatString)) { - formattedString = StandardFormatter.FormatOutput(text,decorator.FormatString,decorator.DataType,"yyy"); + if (decorator.RightToLeft ==System.Windows.Forms.RightToLeft.Yes) { + stringFormat.FormatFlags = stringFormat.FormatFlags | StringFormatFlags.DirectionRightToLeft; } + var formattedString = text; + if (! String.IsNullOrEmpty(decorator.FormatString)) { + formattedString = StandardFormatter.FormatOutput(text,decorator.FormatString,decorator.DataType,String.Empty); + } graphics.TextRenderingHint = TextRenderingHint.AntiAlias; diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGraphicItem.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGraphicItem.cs index 644e6f14df..7b405d1523 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGraphicItem.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGraphicItem.cs @@ -27,8 +27,9 @@ namespace ICSharpCode.Reports.Core { } - protected IGraphicStyleDecorator CreateItemStyle (BaseShape shape) { - GraphicStyleDecorator style = new GraphicStyleDecorator(shape); + protected IGraphicStyleDecorator CreateItemStyle (BaseShape shape) + { + IGraphicStyleDecorator style = new GraphicStyleDecorator(shape); style.Size = this.Size; style.Location = this.Location; diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseTextItem.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseTextItem.cs index ce13240666..2fd088c36a 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseTextItem.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseTextItem.cs @@ -66,6 +66,7 @@ namespace ICSharpCode.Reports.Core style.ContentAlignment = this.contentAlignment; style.FormatString = this.formatString; style.DataType = this.dataType; + style.RightToLeft = this.RightToLeft; return style; } @@ -120,9 +121,6 @@ namespace ICSharpCode.Reports.Core rectangle, this.stringTrimming,this.contentAlignment); - - - //TextDrawer.DrawString(rpea.PrintPageEventArgs.Graphics,toPrint,CreateItemStyle()); rpea.LocationAfterDraw = new Point (this.Location.X + this.Size.Width, this.Location.Y + this.Size.Height); @@ -152,11 +150,6 @@ namespace ICSharpCode.Reports.Core } - /// - /// Formatstring like in MSDN - /// - - public virtual string FormatString { get { @@ -194,6 +187,9 @@ namespace ICSharpCode.Reports.Core } } + + public System.Windows.Forms.RightToLeft RightToLeft {get;set;} + #region IExpression public string Expression {get;set;} diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs index 46122b9916..b0e8811265 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs @@ -101,10 +101,8 @@ namespace ICSharpCode.Reports.Core.Exporter gapCalculator.CalculateGapList(section); int i = 0; - foreach (BaseReportItem item in section.Items) { - ISimpleContainer simpleContainer = item as ISimpleContainer; Offset = new Point(Offset.X,Offset.Y + gapCalculator.GapBetweenItems[i] ); 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 6ebc7f0554..d486f648ac 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 @@ -60,12 +60,10 @@ namespace ICSharpCode.Reports.Core.Exporter protected void FirePageFull (ExporterCollection items) { var newPage = new NewPageEventArgs (items,SinglePage.SectionBounds); -// EventHelper.Raise(PageFull,this,new NewPageEventArgs(items,SinglePage.SectionBounds)); EventHelper.Raise(PageFull,this,newPage); SinglePage.SectionBounds = newPage.SectionBounds; } - #endregion 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 8b642e7bbc..da038817a9 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 @@ -57,10 +57,7 @@ namespace ICSharpCode.Reports.Core.Exporter private ExporterCollection ConvertDataRow (ISimpleContainer simpleContainer) { ExporterCollection exporterCollection = new ExporterCollection(); -// base.CurrentPosition = base.SectionBounds.DetailArea.Location; - base.CurrentPosition = base.SectionBounds.Offset; -// Console.WriteLine("Convertdatarow start {0}",base.CurrentPosition); BaseSection section = parent as BaseSection; DefaultLeftPosition = parent.Location.X; @@ -157,22 +154,6 @@ namespace ICSharpCode.Reports.Core.Exporter protected override Point ForcePageBreak(ExporterCollection exporterCollection, BaseSection section) { base.ForcePageBreak(exporterCollection,section); - return CalculateStartPosition(section); - } - - - private Point CalculateStartPosition(BaseSection section) - { -// var r = base.ReportModel; -// base.SectionBounds.CalculatePageBounds(r); -// var rr = new Point(base.SectionBounds.DetailArea.X,base.SectionBounds.PageHeaderRectangle.Bottom + 1); -// var p = base.SectionBounds.DetailArea.Location; -// var pp = SectionBounds.Offset; -// Console.WriteLine ("PageBreak {0} - detailareaa {1}",rr,p); -// Console.WriteLine("-----------------"); -// Console.WriteLine(""); -//// return base.SectionBounds.DetailArea.Location; -// return pp; return SectionBounds.Offset; } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs index ae67496701..3aa5a86774 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs @@ -75,7 +75,6 @@ namespace ICSharpCode.Reports.Core.Exporter base.ReportModel.ReportHeader.Size = Size.Empty; } base.SectionBounds.CalculatePageBounds(base.ReportModel); - var p = base.SectionBounds.Offset; } @@ -84,7 +83,6 @@ namespace ICSharpCode.Reports.Core.Exporter if (SectionBounds.Offset.Y < base.ReportModel.PageHeader.SectionOffset) { SectionBounds.Offset = new Point(SectionBounds.Offset.X,base.ReportModel.PageHeader.SectionOffset); } - base.SectionBounds.CalculatePageBounds(base.ReportModel); ConvertSectionInternal (base.ReportModel.PageHeader); } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/GraphicStyleDecorator.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/GraphicStyleDecorator.cs index 39faadd7f4..f2e77957de 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/GraphicStyleDecorator.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/GraphicStyleDecorator.cs @@ -18,32 +18,22 @@ namespace ICSharpCode.Reports.Core.Exporter public class GraphicStyleDecorator:BaseStyleDecorator,IGraphicStyleDecorator { - private BaseShape shape; - private int thickness = 1; - private DashStyle dashStyle = DashStyle.Solid; public GraphicStyleDecorator(BaseShape shape):base() { if (shape == null) { throw new ArgumentNullException("shape"); } - this.shape = shape; + this.Shape = shape; + Thickness = 1; + DashStyle = DashStyle.Solid; } + public BaseShape Shape {get;set;} - public BaseShape Shape { - get { return shape; } - set { shape = value; } - } - - public int Thickness { - get { return thickness; } - set { thickness = value; } - } + public int Thickness {get;set;} - public DashStyle DashStyle { - get { return dashStyle; } - set { dashStyle = value; } - } + public DashStyle DashStyle {get;set;} + } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/Linedecorator.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/Linedecorator.cs index 5ac094d4f8..d32a48a2b7 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/Linedecorator.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/Linedecorator.cs @@ -10,7 +10,6 @@ namespace ICSharpCode.Reports.Core.Exporter { public LineDecorator(BaseShape shape) : base(shape) { - } public Point From { get; set; } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/TextStyleDecorator.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/TextStyleDecorator.cs index c35692b557..f59fea782b 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/TextStyleDecorator.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/TextStyleDecorator.cs @@ -11,65 +11,24 @@ namespace ICSharpCode.Reports.Core.Exporter /// public class TextStyleDecorator:BaseStyleDecorator { - private Font font; - private StringFormat stringFormat; - private StringTrimming stringTrimming; - private ContentAlignment contentAlignment; - private string dataType; - private string formatString; - - + public TextStyleDecorator():base() { } + public Font Font {get;set;} - public Font Font { - get { - return font; - } - set { - font = value; - } - } + public StringFormat StringFormat {get;set;} + public StringTrimming StringTrimming {get;set;} + + public ContentAlignment ContentAlignment {get;set;} + - public StringFormat StringFormat { - get { - return stringFormat; - } - set { - stringFormat = value; - } - } - - public StringTrimming StringTrimming { - get { - return stringTrimming; - } - set { - stringTrimming = value; - } - } - - public ContentAlignment ContentAlignment { - get { - return contentAlignment; - } - set { - contentAlignment = value; - } - } - - public string DataType { - get { return dataType; } - set { dataType = value; } - } - - public string FormatString { - get { return formatString; } - set { formatString = value; } - } + public string DataType {get;set;} + + public string FormatString {get;set;} + public System.Windows.Forms.RightToLeft RightToLeft {get;set;} } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportText.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportText.cs index 4671d8ed16..ed155b4b9e 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportText.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportText.cs @@ -45,6 +45,11 @@ namespace ICSharpCode.Reports.Core.Exporter { CalculatePdfFormat pdfFormat = new CalculatePdfFormat(this.StyleDecorator,font); ColumnText columnText = new ColumnText(contentByte); + + if (StyleDecorator.RightToLeft.ToString() == "Yes") { + columnText.RunDirection = PdfWriter.RUN_DIRECTION_RTL; + } + iTextSharp.text.Rectangle r = base.ConvertToPdfRectangle(); columnText.SetSimpleColumn(r.Left, r.Top , r.Left + r.Width,r.Top - r.Height,pdfFormat.Leading,pdfFormat.Alignment);