Browse Source

PageBreak, Cleanup

reports
Peter Forstmeier 12 years ago
parent
commit
a6e95f0e58
  1. 4
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.SQLServer/SQLServerDatabaseDriver.cs
  2. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataManager/Listhandling/CollectionSource.cs
  3. 10
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs
  4. 9
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/WpfVisitor.cs
  5. 11
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs
  6. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportColumn.cs
  7. 27
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  8. 6
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs
  9. 5
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/IContainerConverter.cs
  10. 118
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs
  11. 6
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/PreviewViewModel.cs
  12. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerConverterFixture.cs
  13. 6
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs
  14. 6
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/WPF/FixedDocumentCreator.cs

4
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.SQLServer/SQLServerDatabaseDriver.cs

@ -140,8 +140,8 @@ namespace ICSharpCode.Data.Core.DatabaseDrivers.SQLServer @@ -140,8 +140,8 @@ namespace ICSharpCode.Data.Core.DatabaseDrivers.SQLServer
public override string ODBCProviderName
{
// SqlServer 2012
// get { return "SQLNCLI10.1"; }
get { return "SQLNCLI11.0"; }
get { return "SQLNCLI10.1"; }
// get { return "SQLNCLI11.0"; }
}
public override void PopulateDatasources()

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataManager/Listhandling/CollectionSource.cs

@ -141,6 +141,7 @@ namespace ICSharpCode.Reporting.DataManager.Listhandling @@ -141,6 +141,7 @@ namespace ICSharpCode.Reporting.DataManager.Listhandling
item.DBValue = String.Empty;
var p = listProperties.Find(item.ColumnName,true);
item.DBValue = p.GetValue(Current).ToString();
Console.WriteLine("Fill {0}",item.DBValue);
if (String.IsNullOrEmpty(item.DataType)) {
item.DataType = p.PropertyType.ToString();
}

10
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs

@ -14,7 +14,6 @@ using System.Windows.Media; @@ -14,7 +14,6 @@ using System.Windows.Media;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
using Brush = System.Windows.Media.Brush;
using FontFamily = System.Windows.Media.FontFamily;
@ -29,16 +28,13 @@ namespace ICSharpCode.Reporting.ExportRenderer @@ -29,16 +28,13 @@ namespace ICSharpCode.Reporting.ExportRenderer
class FixedDocumentCreator
{
BrushConverter brushConverter ;
ReportSettings reportSettings;
public FixedDocumentCreator(ReportSettings reportSettings)
public FixedDocumentCreator()
{
if (reportSettings == null)
throw new ArgumentNullException("reportSettings");
this.reportSettings = reportSettings;
brushConverter = new BrushConverter();
}
public UIElement CreateFixedPage(ExportPage exportPage) {
var fixedPage = new FixedPage();
fixedPage.Width = exportPage.Size.Width;
@ -47,6 +43,7 @@ namespace ICSharpCode.Reporting.ExportRenderer @@ -47,6 +43,7 @@ namespace ICSharpCode.Reporting.ExportRenderer
return fixedPage;
}
public UIElement CreateContainer(ExportContainer container)
{
var canvas = CreateCanvas(container);
@ -63,6 +60,7 @@ namespace ICSharpCode.Reporting.ExportRenderer @@ -63,6 +60,7 @@ namespace ICSharpCode.Reporting.ExportRenderer
}
public TextBlock CreateTextBlock(ExportText exportText)
{
var textBlock = new TextBlock();

9
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/WpfVisitor.cs

@ -11,7 +11,6 @@ using System.Windows; @@ -11,7 +11,6 @@ using System.Windows;
using System.Windows.Controls;
using ICSharpCode.Reporting.ExportRenderer;
using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.Exporter.Visitors
@ -22,14 +21,10 @@ namespace ICSharpCode.Reporting.Exporter.Visitors @@ -22,14 +21,10 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
internal class WpfVisitor: AbstractVisitor
{
private readonly FixedDocumentCreator documentCreator;
private readonly ReportSettings reportSettings;
public WpfVisitor(ReportSettings reportSettings)
public WpfVisitor()
{
if (reportSettings == null)
throw new ArgumentNullException("reportSettings");
this.reportSettings = reportSettings;
documentCreator = new FixedDocumentCreator(reportSettings);
documentCreator = new FixedDocumentCreator();
}

11
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs

@ -15,7 +15,6 @@ using System.Windows.Markup; @@ -15,7 +15,6 @@ using System.Windows.Markup;
using ICSharpCode.Reporting.Exporter.Visitors;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.Exporter
@ -25,18 +24,12 @@ namespace ICSharpCode.Reporting.Exporter @@ -25,18 +24,12 @@ namespace ICSharpCode.Reporting.Exporter
/// </summary>
public class WpfExporter:BaseExporter
{
WpfVisitor visitor;
ReportSettings reportSettings;
FixedPage fixedPage;
public WpfExporter(ReportSettings reportSettings,Collection<ExportPage> pages):base(pages)
public WpfExporter(Collection<ExportPage> pages):base(pages)
{
if (reportSettings == null)
throw new ArgumentNullException("reportSettings");
this.reportSettings = reportSettings;
visitor = new WpfVisitor(reportSettings);
visitor = new WpfVisitor();
}

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportColumn.cs

@ -9,8 +9,6 @@ @@ -9,8 +9,6 @@
using System;
using System.Drawing;
using ICSharpCode.Reporting.Arrange;
using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.Reporting.Exporter;
namespace ICSharpCode.Reporting.Interfaces.Export
{

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

@ -69,7 +69,6 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -69,7 +69,6 @@ namespace ICSharpCode.Reporting.PageBuilder
ReportModel.ReportSettings.PageSize.Height - ReportModel.ReportSettings.BottomMargin - ReportModel.PageFooter.Size.Height);
var pageFooter = CreateSection(ReportModel.PageFooter,CurrentLocation);
// DetailEnds = new Point(pageFooter.Location.X,pageFooter.Location.Y -1);
DetailEnds = new Point(pageFooter.Location.X + pageFooter.Size.Width,pageFooter.Location.Y -1);
AddSectionToPage(pageFooter);
}
@ -102,31 +101,33 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -102,31 +101,33 @@ namespace ICSharpCode.Reporting.PageBuilder
}
protected bool old_PageFull(System.Collections.Generic.List<IExportColumn> columns)
protected bool PageFull(System.Collections.Generic.List<IExportColumn> columns)
{
var rectToPrint = new Rectangle(columns[0].Location,columns[0].Size);
Console.WriteLine("{0} - {1}",CurrentLocation,rectToPrint.ToString());
if (rectToPrint.Bottom > DetailEnds.Y) {
Console.WriteLine("----------PB---");
var rr = new Rectangle(new Point(columns[0].Location.X + DetailsRectangle.Location.X,columns[0].Location.Y + DetailsRectangle.Location.Y),
columns[0].Size);
Console.WriteLine("------{0} - {1} - {2}",rectToPrint.ToString(),rr.ToString(),DetailEnds.Y);
// if (rectToPrint.Bottom > DetailEnds.Y) {
// Console.WriteLine("----------PageBreak---");
// return true;
// }
if (!DetailsRectangle.Contains(rr)) {
return true;
}
return false;
}
protected bool old_1_PageFull(IExportContainer row) {
var rectToPrint = new Rectangle(row.Location,row.DesiredSize);
Console.WriteLine("{0} - {1}",rectToPrint.Bottom.ToString(),DetailEnds.Y);
if (rectToPrint.Bottom > DetailEnds.Y) {
Console.WriteLine("-----------PB----------");
protected bool PageFull(IExportContainer row) {
var rectToPrint = new Rectangle(new Point(row.Location.X,row.Location.Y + DetailsRectangle.Location.Y),
row.DesiredSize);
if (!DetailsRectangle.Contains(rectToPrint)) {
return true;
}
return false;
}
protected bool PageFull(IExportContainer row) {
protected bool row_PageFull(IExportContainer row) {
var rectToPrint = new Rectangle(new Point(row.Location.X,row.Location.Y + DetailsRectangle.Location.Y),
row.DesiredSize);
if (!DetailsRectangle.Contains(rectToPrint)) {

6
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs

@ -41,13 +41,13 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter @@ -41,13 +41,13 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
public List<IExportColumn> CreateConvertedList(IReportContainer reportContainer,
IExportContainer exportContainer,
Point position){
Console.WriteLine("CreateConvertedList {0}",reportContainer.Name);
//Console.WriteLine("CreateConvertedList {0}",reportContainer.Name);
var itemsList = new List<IExportColumn>();
foreach (var item in reportContainer.Items) {
var exportColumn = ExportColumnFactory.CreateItem(item);
exportColumn.Parent = exportContainer;
// exportColumn.Parent = exportContainer;
exportColumn.Location = new Point(item.Location.X,item.Location.Y + position.Y);
itemsList.Add(exportColumn);
}

5
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/IContainerConverter.cs

@ -19,8 +19,7 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter @@ -19,8 +19,7 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
{
IExportContainer Convert(IReportContainer reportContainer);
List<IExportColumn> CreateConvertedList(IReportContainer reportContainer,IExportContainer exportContainer);
List<IExportColumn> CreateConvertedList(IReportContainer reportContainer,IExportContainer exportContainer,Point position);
// Size Measure(IExportColumn element);
// void ArrangeContainer(IExportContainer exportContainer);
List<IExportColumn> CreateConvertedList(IReportContainer reportContainer,Point position);
}
}

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

@ -39,30 +39,35 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -39,30 +39,35 @@ namespace ICSharpCode.Reporting.PageBuilder
WriteStandardSections();
CurrentLocation = DetailStart;
BuildDetail();
// row_BuildDetail();
base.AddPage(CurrentPage);
}
void aaBuildDetail()
void BuildDetail()
{
CurrentSection = ReportModel.DetailSection;
var converter = new ContainerConverter(base.Graphics, CurrentLocation);
var position = ResetPosition();
var collectionSource = new CollectionSource(List,ElementType,ReportModel.ReportSettings);
CurrentSection = ReportModel.DetailSection;
IExportContainer detail = null;
CurrentSection = ReportModel.DetailSection;
if(collectionSource.Count > 0) {
collectionSource.Bind();
CurrentLocation = DetailStart;
var position = ResetPosition();
var converter = new ContainerConverter(base.Graphics, CurrentLocation);
// var converter = new ContainerConverter(base.Graphics, position);
detail = CreateContainerForSection(DetailStart);
detail.DesiredSize = new Size(detail.Size.Width,DetailEnds.Y - DetailStart.Y);
//detail = CreateDetail(DetailStart);
detail.Parent = CurrentPage;
do {
collectionSource.Fill(CurrentSection.Items);
var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection,detail,position);
if (old_PageFull(convertedItems)) {
var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection,position);
SetParentToSection(detail,convertedItems);
if (PageFull(convertedItems)) {
detail.ExportedItems.AddRange(convertedItems);
CurrentPage.ExportedItems.Insert(2,detail);
Pages.Add(CurrentPage);
@ -93,81 +98,15 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -93,81 +98,15 @@ namespace ICSharpCode.Reporting.PageBuilder
}
void aa_1_BuildDetail()
void SetParentToSection(IExportContainer detail, List<IExportColumn> convertedItems)
{
CurrentSection = ReportModel.DetailSection;
var collectionSource = new CollectionSource(List,ElementType,ReportModel.ReportSettings);
IExportContainer detail = null;
if(collectionSource.Count > 0) {
collectionSource.Bind();
var position = DetailStart;
var converter = new ContainerConverter(base.Graphics, CurrentLocation);
detail = CreateDetail(DetailStart);
do {
var row = CreateContainerIfNotExist(CurrentSection,detail, position);
collectionSource.Fill(CurrentSection.Items);
//var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection,row);
var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection,row,position);
MeasureAndArrangeContainer(converter,row);
row.ExportedItems.AddRange(convertedItems);
/*
var rr = new Rectangle(row.Location,row.DesiredSize);
if (rr.Bottom >DetailEnds.Y) {
Console.WriteLine("new pagebreak {0} - {1}",rr.ToString(),DetailEnds.Y);
InsertDetailAtPosition(detail);
Pages.Add(CurrentPage);
CurrentPage = CreateNewPage();
WriteStandardSections();
position = ResetPosition();
detail = CreateDetail(DetailStart);
CurrentLocation = DetailStart;
row = CreateContainerIfNotExist(CurrentSection,detail,position);
// var recreate = converter.CreateConvertedList(ReportModel.DetailSection,row,position);
var recreate = converter.CreateConvertedList(ReportModel.DetailSection,row);
MeasureAndArrangeContainer(converter,row);
row.ExportedItems.AddRange(recreate);
}
*/
if (old_PageFull(convertedItems)) {
InsertDetailAtPosition(detail);
Pages.Add(CurrentPage);
CurrentPage = CreateNewPage();
WriteStandardSections();
position = ResetPosition();
detail = CreateDetail(DetailStart);
CurrentLocation = DetailStart;
row = CreateContainerIfNotExist(CurrentSection,detail,position);
var recreate = converter.CreateConvertedList(ReportModel.DetailSection,row,position);
MeasureAndArrangeContainer(converter,row);
row.ExportedItems.AddRange(recreate);
}
detail.ExportedItems.Add(row);
position = new Point(CurrentSection.Location.Y,position.Y + CurrentSection.Size.Height);
}
while (collectionSource.MoveNext());
InsertDetailAtPosition(detail);
} else {
detail = CreateContainerForSection(DetailStart);
InsertDetailAtPosition(detail);
base.BuildReportFooter();
foreach (var item in convertedItems) {
item.Parent = detail;
}
}
void BuildDetail()
/*
void row_BuildDetail()
{
var converter = new ContainerConverter(base.Graphics, CurrentLocation);
var position = ResetPosition();
@ -185,7 +124,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -185,7 +124,7 @@ namespace ICSharpCode.Reporting.PageBuilder
var row = CreateAndArrangeContainer(converter,position,detail);
Console.WriteLine("position {0}",position);
if (PageFull(row)) {
if (row_PageFull(row)) {
InsertDetailAtPosition(detail);
Pages.Add(CurrentPage);
CurrentPage = CreateNewPage();
@ -209,7 +148,8 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -209,7 +148,8 @@ namespace ICSharpCode.Reporting.PageBuilder
}
}
*/
/*
IExportContainer CreateAndArrangeContainer(ContainerConverter converter, Point position,IExportContainer parent)
{
var row = CreateContainerIfNotExist(CurrentSection, parent, position);
@ -218,8 +158,8 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -218,8 +158,8 @@ namespace ICSharpCode.Reporting.PageBuilder
row.ExportedItems.AddRange(recreate);
return row;
}
*/
/*
IExportContainer CreateContainerIfNotExist(IReportContainer container, IExportContainer parent, Point position)
{
var isContainer = container.Items[0] is IReportContainer;
@ -228,14 +168,14 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -228,14 +168,14 @@ namespace ICSharpCode.Reporting.PageBuilder
row.Name = "Row";
row.Parent = parent;
row.Location = new Point(50, position.Y);
row.Size = new Size(400, 40);
row.Size = new Size(400, container.Items[0].Size.Height + 4);
row.BackColor = Color.Green;
return row;
}
return CreateContainerForSection(container.Items[0].Location);
}
*/
/*
IExportContainer CreateDetail(Point startLocation)
{
var detail = CreateContainerForSection(startLocation);
@ -243,7 +183,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -243,7 +183,7 @@ namespace ICSharpCode.Reporting.PageBuilder
detail.DesiredSize = new Size(detail.Size.Width,DetailEnds.Y - DetailStart.Y);
return detail;
}
*/
Point ResetPosition () {

6
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/PreviewViewModel.cs

@ -9,14 +9,10 @@ @@ -9,14 +9,10 @@
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.Windows.Documents;
using System.Windows.Markup;
using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.ExportRenderer;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
@ -39,7 +35,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer @@ -39,7 +35,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer
Document = CreateFixedDocument(reportSettings);
var wpfExporter = new WpfExporter(reportSettings,pages);
var wpfExporter = new WpfExporter(pages);
wpfExporter.Run();
this.document = wpfExporter.Document;
}

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerConverterFixture.cs

@ -35,7 +35,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder @@ -35,7 +35,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
{
var converter = new ContainerConverter(graphics,new Point(30,30));
var result = converter.Convert(container);
var list = converter.CreateConvertedList(container,result,new Point(30,30));
var list = converter.CreateConvertedList(container,new Point(30,30));
result.ExportedItems.AddRange(list);
Assert.That(result.ExportedItems.Count,Is.EqualTo(2));
}

6
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs

@ -50,14 +50,14 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory @@ -50,14 +50,14 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory
[Test]
public void LastPageContains_3_Sections()
public void LastPageContains_4_Sections()
{
reportCreator.BuildExportList();
var exporteditems = reportCreator.Pages[1].ExportedItems;
var sections = from s in exporteditems
where s.GetType() == typeof(ExportContainer)
select s;
Assert.That(sections.ToList().Count,Is.EqualTo(3));
Assert.That(sections.ToList().Count,Is.EqualTo(4));
}
@ -70,7 +70,7 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory @@ -70,7 +70,7 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory
select s;
var section = sections.ToList()[2] as ExportContainer;
var result = section.ExportedItems[0];
Assert.That(result,Is.AssignableFrom(typeof(ExportContainer)));
Assert.That(result,Is.AssignableFrom(typeof(ExportText)));
}

6
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/WPF/FixedDocumentCreator.cs

@ -84,19 +84,19 @@ namespace ICSharpCode.Reports.Core.WPF @@ -84,19 +84,19 @@ namespace ICSharpCode.Reports.Core.WPF
var text = column as ExportText;
if (text != null) {
var t = CreateTextBlock(text);
var textBlock = CreateTextBlock(text);
if (column.StyleDecorator.DrawBorder) {
border = CreateBorder(column.StyleDecorator as BaseStyleDecorator,
GlobalValues.DefaultBorderThickness,
GlobalValues.DefaultCornerRadius );
border.Child = t;
border.Child = textBlock;
element = border;
}
else
{
element = t;
element = textBlock;
}
}

Loading…
Cancel
Save