Browse Source

ExpressionRunner run's in every Section, modify ArrangeStrategy

pull/681/head
Peter Forstmeier 10 years ago
parent
commit
d66fddffb6
  1. 20
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs
  2. 19
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/MeasurementStrategy.cs
  3. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/StandardFormatter.cs
  4. 8
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  5. 24
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs

20
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs

@ -17,7 +17,6 @@ @@ -17,7 +17,6 @@
// DEALINGS IN THE SOFTWARE.
using System;
using System.Collections;
using System.Drawing;
using System.Linq;
using System.Collections.Generic;
@ -29,14 +28,12 @@ namespace ICSharpCode.Reporting.Arrange @@ -29,14 +28,12 @@ namespace ICSharpCode.Reporting.Arrange
/// Description of ArrangeStrategy.
/// </summary>
///
public interface IArrangeStrategy
{
public interface IArrangeStrategy{
void Arrange(IExportColumn exportColumn);
}
internal class ContainerArrangeStrategy:IArrangeStrategy
{
class ContainerArrangeStrategy:IArrangeStrategy{
public void Arrange(IExportColumn exportColumn){
if (exportColumn == null)
@ -54,8 +51,8 @@ namespace ICSharpCode.Reporting.Arrange @@ -54,8 +51,8 @@ namespace ICSharpCode.Reporting.Arrange
}
static Size ArrangeInternal(IExportContainer container)
{
static Size ArrangeInternal(IExportContainer container){
var containerRectangle = container.DisplayRectangle;
Rectangle elementRectangle = Rectangle.Empty;
foreach (var element in container.ExportedItems) {
@ -90,15 +87,14 @@ namespace ICSharpCode.Reporting.Arrange @@ -90,15 +87,14 @@ namespace ICSharpCode.Reporting.Arrange
}
static List<IExportColumn> CreateCanGrowList(IExportContainer container)
{
var l1 = new List<IExportColumn>();
static List<IExportColumn> CreateCanGrowList(IExportContainer container){
var canGrowList = new List<IExportColumn>();
foreach (var element in container.Descendents()) {
if (element.CanGrow) {
l1.Add(element);
canGrowList.Add(element);
}
}
return l1;
return canGrowList;
}
}

19
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/MeasurementStrategy.cs

@ -27,19 +27,16 @@ namespace ICSharpCode.Reporting.Arrange @@ -27,19 +27,16 @@ namespace ICSharpCode.Reporting.Arrange
/// <summary>
/// Description of ArrangeStrategy.
/// </summary>
public interface IMeasurementStrategy
{
public interface IMeasurementStrategy{
Size Measure(IExportColumn exportColumn,Graphics graphics);
}
class ContainerMeasurementStrategy:IMeasurementStrategy
{
class ContainerMeasurementStrategy:IMeasurementStrategy{
public Size Measure(IExportColumn exportColumn,Graphics graphics){
public Size Measure(IExportColumn exportColumn,Graphics graphics)
{
var items = ((ExportContainer)exportColumn).ExportedItems;
foreach (var element in items) {
if (element is IExportContainer) {
Measure(element,graphics);
@ -55,11 +52,9 @@ namespace ICSharpCode.Reporting.Arrange @@ -55,11 +52,9 @@ namespace ICSharpCode.Reporting.Arrange
}
class TextBasedMeasurementStrategy:IMeasurementStrategy
{
public Size Measure(IExportColumn exportColumn, Graphics graphics)
{
class TextBasedMeasurementStrategy:IMeasurementStrategy{
public Size Measure(IExportColumn exportColumn, Graphics graphics){
return MeasurementService.Measure((IExportText)exportColumn,graphics);
}
}

3
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/StandardFormatter.cs

@ -109,7 +109,8 @@ namespace ICSharpCode.Reporting.Globals @@ -109,7 +109,8 @@ namespace ICSharpCode.Reporting.Globals
str = number.ToString (format,CultureInfo.CurrentCulture);
} catch (FormatException) {
throw ;
// throw ;
Console.WriteLine("StandardFormatter: {0} - {1} IncorrectFormat ",toFormat,format);
}
return str;
} else {

8
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs

@ -56,7 +56,8 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -56,7 +56,8 @@ namespace ICSharpCode.Reporting.PageBuilder
void BuildReportHeader(){
if (Pages.Count == 0) {
var header = CreateSection(ReportModel.ReportHeader,CurrentLocation);
var r = new Rectangle(header.Location.X, header.Location.Y, header.Size.Width, header.Size.Height);
// var r = new Rectangle(header.Location.X, header.Location.Y, header.Size.Width, header.Size.Height);
var r = new Rectangle(header.Location.X, header.Location.Y, header.Size.Width, header.DesiredSize.Height);
CurrentLocation = new Point (ReportModel.ReportSettings.LeftMargin,r.Bottom + 1);
AddSectionToPage(header);
}
@ -132,8 +133,11 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -132,8 +133,11 @@ namespace ICSharpCode.Reporting.PageBuilder
containerConverter.SetParent(convertedContainer,list);
convertedContainer.ExportedItems.AddRange(list);
//Run ExpressionEvaluator for every section, otherwise measure don't work
ExpressionRunner.Visitor.Visit(convertedContainer as ExportContainer);
Console.WriteLine("{0} - {1}",convertedContainer.DesiredSize,convertedContainer.DisplayRectangle);
convertedContainer.DesiredSize = MeasureElement(convertedContainer);
Console.WriteLine("{0} - {1}",convertedContainer.DesiredSize,convertedContainer.DisplayRectangle);
ArrangeContainer(convertedContainer);
return convertedContainer;
}

24
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs

@ -36,18 +36,14 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -36,18 +36,14 @@ namespace ICSharpCode.Reporting.PageBuilder
/// Description of DataPageBuilder.
/// </summary>
public class DataPageBuilder:BasePageBuilder
{
public DataPageBuilder(IReportModel reportModel,IEnumerable list):base(reportModel)
{
public class DataPageBuilder:BasePageBuilder{
public DataPageBuilder(IReportModel reportModel,IEnumerable list):base(reportModel){
List = list;
}
public override void BuildExportList()
{
public override void BuildExportList(){
CreateDataSource();
SetupExpressionRunner(ReportModel.ReportSettings,DataSource);
base.BuildExportList();
@ -63,8 +59,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -63,8 +59,7 @@ namespace ICSharpCode.Reporting.PageBuilder
}
void BuildDetail()
{
void BuildDetail(){
CurrentSection = ReportModel.DetailSection;
if(DataSourceContainsData()) {
CurrentLocation = DetailStart;
@ -135,8 +130,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -135,8 +130,7 @@ namespace ICSharpCode.Reporting.PageBuilder
}
void EvaluateExpressionsInGroups(ExportContainer sectionContainer, IGrouping<object, object> grouping)
{
void EvaluateExpressionsInGroups(ExportContainer sectionContainer, IGrouping<object, object> grouping){
ExpressionRunner.Visitor.SetCurrentDataSource(grouping);
ExpressionRunner.Visitor.Visit(sectionContainer);
}
@ -208,8 +202,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -208,8 +202,7 @@ namespace ICSharpCode.Reporting.PageBuilder
}
static void AdjustLocationInSection(Point sectionPosition,List<IExportColumn> convertedItems)
{
static void AdjustLocationInSection(Point sectionPosition,List<IExportColumn> convertedItems){
foreach (var element in convertedItems) {
element.Location = new Point(element.Location.X, sectionPosition.Y);
}
@ -230,8 +223,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -230,8 +223,7 @@ namespace ICSharpCode.Reporting.PageBuilder
}
void InsertContainer(ExportContainer sectionContainer)
{
void InsertContainer(ExportContainer sectionContainer){
if (Pages.Count == 0) {
CurrentPage.ExportedItems.Insert(2, sectionContainer);
} else {

Loading…
Cancel
Save