Browse Source

Wpf

reports
Peter Forstmeier 13 years ago
parent
commit
edbc8acab8
  1. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
  2. 24
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs
  3. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/DebugVisitor.cs
  4. 10
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/WpfVisitor.cs
  5. 26
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs
  6. 30
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/SectionFactory.cs
  7. 8
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseSection.cs
  8. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportContainer.cs
  9. 13
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  10. 12
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs
  11. 45
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/DataContainerConverter.cs
  12. 17
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs
  13. 4
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportingFactory.cs
  14. 20
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/PreviewViewModel.cs
  15. 34
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/FormBuilderFixture.cs
  16. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs
  17. 4
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestReports/FromList.srd
  18. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDesignerGenerator.cs

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj

@ -100,7 +100,6 @@
<Compile Include="Src\ExportRenderer\FixedDocumentCreator.cs" /> <Compile Include="Src\ExportRenderer\FixedDocumentCreator.cs" />
<Compile Include="Src\Factories\ExportColumnFactory.cs" /> <Compile Include="Src\Factories\ExportColumnFactory.cs" />
<Compile Include="Src\Factories\ReportCreatorFactory.cs" /> <Compile Include="Src\Factories\ReportCreatorFactory.cs" />
<Compile Include="Src\Factories\SectionFactory.cs" />
<Compile Include="Src\Globals\CreateGraphics.cs" /> <Compile Include="Src\Globals\CreateGraphics.cs" />
<Compile Include="Src\Globals\MeasurementService.cs" /> <Compile Include="Src\Globals\MeasurementService.cs" />
<Compile Include="Src\Interfaces\Data\IDataViewHandling.cs" /> <Compile Include="Src\Interfaces\Data\IDataViewHandling.cs" />

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

@ -16,7 +16,6 @@ using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.PageBuilder.ExportColumns; using ICSharpCode.Reporting.PageBuilder.ExportColumns;
using Brush = System.Windows.Media.Brush; using Brush = System.Windows.Media.Brush;
using FontFamily = System.Windows.Media.FontFamily; using FontFamily = System.Windows.Media.FontFamily;
using Image = System.Windows.Controls.Image;
using Pen = System.Windows.Media.Pen; using Pen = System.Windows.Media.Pen;
using Size = System.Windows.Size; using Size = System.Windows.Size;
@ -35,7 +34,6 @@ namespace ICSharpCode.Reporting.ExportRenderer
if (reportSettings == null) if (reportSettings == null)
throw new ArgumentNullException("reportSettings"); throw new ArgumentNullException("reportSettings");
this.reportSettings = reportSettings; this.reportSettings = reportSettings;
Console.WriteLine("FixedDocumentCreator()");
brushConverter = new BrushConverter(); brushConverter = new BrushConverter();
} }
@ -43,16 +41,14 @@ namespace ICSharpCode.Reporting.ExportRenderer
public UIElement CreateContainer(ExportContainer container) public UIElement CreateContainer(ExportContainer container)
{ {
// http://tech.pro/tutorial/736/wpf-tutorial-creating-a-custom-panel-control // http://tech.pro/tutorial/736/wpf-tutorial-creating-a-custom-panel-control
Console.WriteLine();
Console.WriteLine("create container {0}",container.Name);
var canvas = CreateCanvas(container); var canvas = CreateCanvas(container);
// canvas.Measure(new Size(reportSettings.PageSize.Width,reportSettings.PageSize.Height));
var size = new Size(container.DesiredSize.Width,container.DesiredSize.Height); var size = new Size(container.DesiredSize.Width,container.DesiredSize.Height);
canvas.Measure(size); canvas.Measure(size);
// canvas.Arrange(new Rect(new System.Windows.Point(),new Size(reportSettings.PageSize.Width,reportSettings.PageSize.Height) ));
canvas.Arrange(new Rect(new System.Windows.Point(),size )); canvas.Arrange(new Rect(new System.Windows.Point(),size ));
canvas.UpdateLayout(); canvas.UpdateLayout();
@ -82,8 +78,8 @@ namespace ICSharpCode.Reporting.ExportRenderer
// SetDimension(textBlock,exportText.StyleDecorator); // SetDimension(textBlock,exportText.StyleDecorator);
// textBlock.Background = ConvertBrush(exportText.StyleDecorator.BackColor); // textBlock.Background = ConvertBrush(exportText.StyleDecorator.BackColor);
// SetContendAlignment(textBlock,exportText.StyleDecorator); // SetContendAlignment(textBlock,exportText.StyleDecorator);
SetPosition(textBlock,exportText);
SetDimension(textBlock,exportText); SetPositionAndSize(textBlock,exportText);
textBlock.Background = ConvertBrush(exportText.BackColor); textBlock.Background = ConvertBrush(exportText.BackColor);
return textBlock; return textBlock;
} }
@ -92,21 +88,26 @@ namespace ICSharpCode.Reporting.ExportRenderer
Canvas CreateCanvas(ExportContainer container) Canvas CreateCanvas(ExportContainer container)
{ {
var canvas = new Canvas(); var canvas = new Canvas();
SetDimension(canvas, container); SetPositionAndSize(canvas,container);
SetPosition(canvas,container); canvas.Background = ConvertBrush(container.BackColor);
canvas.Background = ConvertBrush(System.Drawing.Color.Red);
return canvas; return canvas;
} }
void SetPositionAndSize(FrameworkElement element,ExportColumn column) {
SetPosition(element,column);
SetDimension(element,column);
}
static void SetDimension (FrameworkElement element,ExportColumn exportColumn) static void SetDimension (FrameworkElement element,ExportColumn exportColumn)
{ {
Console.WriteLine("set Demension to {0}",exportColumn.DesiredSize);
element.Width = exportColumn.DesiredSize.Width; element.Width = exportColumn.DesiredSize.Width;
element.Height = exportColumn.DesiredSize.Height; element.Height = exportColumn.DesiredSize.Height;
} }
static void SetPosition (FrameworkElement element,ExportColumn exportColumn) { static void SetPosition (FrameworkElement element,ExportColumn exportColumn) {
Console.WriteLine("set Position to {0}",exportColumn.Location);
FixedPage.SetLeft(element,exportColumn.Location.X ); FixedPage.SetLeft(element,exportColumn.Location.X );
FixedPage.SetTop(element,exportColumn.Location.Y); FixedPage.SetTop(element,exportColumn.Location.Y);
} }
@ -167,6 +168,7 @@ namespace ICSharpCode.Reporting.ExportRenderer
Brush ConvertBrush(System.Drawing.Color color) Brush ConvertBrush(System.Drawing.Color color)
{ {
if (brushConverter.IsValid(color.Name)){ if (brushConverter.IsValid(color.Name)){
var r = brushConverter.ConvertFromString(color.Name) as SolidColorBrush;
return brushConverter.ConvertFromString(color.Name) as SolidColorBrush; return brushConverter.ConvertFromString(color.Name) as SolidColorBrush;
} else{ } else{
return brushConverter.ConvertFromString("Black") as SolidColorBrush; return brushConverter.ConvertFromString("Black") as SolidColorBrush;

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/DebugVisitor.cs

@ -31,7 +31,7 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
{ {
Console.WriteLine("Start Container"); Console.WriteLine("Start Container");
Console.WriteLine("Visit ExportContainer {0} - {1} - {2} - Items {3}", Console.WriteLine("Visit ExportContainer {0} - {1} - {2} - Items {3}",
exportColumn.Name,exportColumn.Size,exportColumn.Location,exportColumn.ExportedItems.Count); exportColumn.Name,exportColumn.Size,exportColumn.Location,exportColumn.BackColor);
} }
public override void Visit(ExportText exportColumn) public override void Visit(ExportText exportColumn)

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

@ -8,12 +8,7 @@
*/ */
using System; using System;
using System.Windows; using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Media;
using ICSharpCode.Reporting.ExportRenderer; using ICSharpCode.Reporting.ExportRenderer;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.Items; using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.PageBuilder.ExportColumns; using ICSharpCode.Reporting.PageBuilder.ExportColumns;
@ -43,7 +38,8 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
public override void Visit(ExportContainer exportColumn) public override void Visit(ExportContainer exportColumn)
{ {
// Console.WriteLine("Wpf-Visit ExportContainer {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.Location); // Console.WriteLine("Wpf-Visit ExportContainer {0} - {1} - {2} - {3}", exportColumn.Name,exportColumn.Size,
// exportColumn.Location,exportColumn.BackColor);
var canvas = documentCreator.CreateContainer(exportColumn); var canvas = documentCreator.CreateContainer(exportColumn);
UIElement = canvas; UIElement = canvas;
} }
@ -51,7 +47,7 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
public override void Visit(ExportText exportColumn) public override void Visit(ExportText exportColumn)
{ {
// Console.WriteLine("Wpf-Visit ExportText {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.DesiredSize); Console.WriteLine("Wpf-Visit ExportText {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.DesiredSize);
var textBlock = documentCreator.CreateTextBlock(exportColumn); var textBlock = documentCreator.CreateTextBlock(exportColumn);
UIElement = textBlock; UIElement = textBlock;
} }

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

@ -51,40 +51,36 @@ namespace ICSharpCode.Reporting.Exporter
{ {
FixedPage fixedPage = CreateFixedPage(); FixedPage fixedPage = CreateFixedPage();
Canvas canvas = null ; Canvas parentCanvas = null ;
Console.WriteLine("page start");
foreach (var item in container.ExportedItems) { foreach (var item in container.ExportedItems) {
var exportContainer = item as IExportContainer; var exportContainer = item as IExportContainer;
var acceptor = item as IAcceptor; var acceptor = item as IAcceptor;
if (exportContainer != null) { if (exportContainer != null) {
if (acceptor != null) { if (acceptor != null) {
acceptor.Accept(visitor); acceptor.Accept(visitor);
canvas = (Canvas)visitor.UIElement; parentCanvas = (Canvas)visitor.UIElement;
fixedPage.Children.Add(canvas); fixedPage.Children.Add(parentCanvas);
foreach (IAcceptor element in exportContainer.ExportedItems) { foreach (IAcceptor element in exportContainer.ExportedItems) {
element.Accept(visitor); element.Accept(visitor);
var ui = visitor.UIElement; var ui = visitor.UIElement;
Canvas.SetLeft(ui,((IExportColumn)element).Location.X); Canvas.SetLeft(ui,((IExportColumn)element).Location.X);
Canvas.SetTop(ui, ((IExportColumn)element).Location.Y); Canvas.SetTop(ui, ((IExportColumn)element).Location.Y);
canvas.Children.Add(ui); parentCanvas.Children.Add(ui);
} }
} else { } else {
if (acceptor != null) { throw new NotSupportedException("item is not an IAcceptor");
acceptor.Accept(visitor);
var uiElement = visitor.UIElement;
if (canvas != null) {
Canvas.SetLeft(uiElement, item.Location.X - exportContainer.Location.X);
Canvas.SetTop(uiElement, item.Location.Y - exportContainer.Location.Y);
canvas.Children.Add(uiElement);
}
fixedPage.Children.Add(uiElement);
}
} }
} }
} }
Console.WriteLine("-------page end---");
return fixedPage; return fixedPage;
} }
FixedPage CreateFixedPage()
FixedPage CreateFixedPage()
{ {
var fixedPage = new FixedPage(); var fixedPage = new FixedPage();
fixedPage.Width = reportSettings.PageSize.Width; fixedPage.Width = reportSettings.PageSize.Width;

30
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/SectionFactory.cs

@ -1,30 +0,0 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 06.04.2013
* Time: 20:08
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using ICSharpCode.Reporting.Items;
namespace ICSharpCode.Reporting.Factories
{
/// <summary>
/// Description of SectionFactory.
/// </summary>
internal sealed class SectionFactory
{
private SectionFactory ()
{
}
public static BaseSection Create(string sectionName) {
if (String.IsNullOrEmpty(sectionName)) {
throw new ArgumentException("sectionName");
}
return new BaseSection(sectionName);
}
}
}

8
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseSection.cs

@ -7,10 +7,7 @@
* To change this template use Tools | Options | Coding | Edit Standard Headers. * To change this template use Tools | Options | Coding | Edit Standard Headers.
*/ */
using System; using System;
using System.Collections.Generic;
using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.Items namespace ICSharpCode.Reporting.Items
{ {
@ -18,7 +15,7 @@ namespace ICSharpCode.Reporting.Items
/// Description of BaseSection. /// Description of BaseSection.
/// </summary> /// </summary>
public class BaseSection:ReportContainer,IReportContainer public class BaseSection:ReportContainer,IReportContainer
{ {
#region Constructors #region Constructors
@ -26,9 +23,6 @@ public class BaseSection:ReportContainer,IReportContainer
{ {
} }
public BaseSection (string name) {
Name = name;
}
#endregion #endregion
} }
} }

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportContainer.cs

@ -41,6 +41,8 @@ namespace ICSharpCode.Reporting.Items
Size = this.Size, Size = this.Size,
Location = this.Location, Location = this.Location,
CanGrow = this.CanGrow, CanGrow = this.CanGrow,
BackColor = this.BackColor,
DesiredSize = this.Size
}; };
} }

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

@ -64,7 +64,6 @@ namespace ICSharpCode.Reporting.PageBuilder
protected void BuildPageFooter() protected void BuildPageFooter()
{ {
Console.WriteLine("Build PageFooter {0} - {1}",ReportModel.ReportSettings.PageSize.Height,ReportModel.ReportSettings.BottomMargin);
CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin, CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin,
ReportModel.ReportSettings.PageSize.Height - ReportModel.ReportSettings.BottomMargin - ReportModel.PageFooter.Size.Height); ReportModel.ReportSettings.PageSize.Height - ReportModel.ReportSettings.BottomMargin - ReportModel.PageFooter.Size.Height);
@ -76,7 +75,6 @@ namespace ICSharpCode.Reporting.PageBuilder
protected void BuildReportFooter() protected void BuildReportFooter()
{ {
Console.WriteLine("Build ReportFooter {0} - {1}",ReportModel.ReportSettings.PageSize.Height,ReportModel.ReportSettings.BottomMargin);
var lastSection = CurrentPage.ExportedItems.Last(); var lastSection = CurrentPage.ExportedItems.Last();
CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin, CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin,
lastSection.Location.Y - lastSection.Size.Height - 1); lastSection.Location.Y - lastSection.Size.Height - 1);
@ -98,14 +96,14 @@ namespace ICSharpCode.Reporting.PageBuilder
this.BuildReportHeader(); this.BuildReportHeader();
BuildPageHeader(); BuildPageHeader();
BuildPageFooter(); BuildPageFooter();
// BuildReportFooter();
} }
protected IExportContainer CreateSection(IReportContainer section,Point location)
protected IExportContainer CreateSection(IReportContainer container,Point location)
{ {
var containerConverter = new ContainerConverter(Graphics, section, location); var containerConverter = new ContainerConverter(Graphics, container, location);
var header = containerConverter.Convert(); var convertedContainer = containerConverter.Convert();
return header; return convertedContainer;
} }
@ -152,6 +150,5 @@ namespace ICSharpCode.Reporting.PageBuilder
protected Graphics Graphics {get;private set;} protected Graphics Graphics {get;private set;}
public Collection<IPage> Pages {get; private set;} public Collection<IPage> Pages {get; private set;}
} }
} }

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

@ -40,16 +40,10 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
public virtual IExportContainer Convert() public virtual IExportContainer Convert()
{ {
var exportContainer = CreateExportContainer(); var exportContainer = CreateExportContainer();
var itemsList = CreateConvertedList(exportContainer,Point.Empty); var itemsList = CreateConvertedList(exportContainer,Point.Empty);
exportContainer.ExportedItems.AddRange(itemsList); exportContainer.ExportedItems.AddRange(itemsList);
ArrangeContainer(exportContainer); ArrangeContainer(exportContainer);
return exportContainer; return exportContainer;
} }
@ -63,7 +57,7 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
} }
protected List<IExportColumn> CreateConvertedList(ExportContainer exportContainer,Point position) protected List<IExportColumn> CreateConvertedList(IExportContainer exportContainer,Point position)
{ {
var itemsList = new List<IExportColumn>(); var itemsList = new List<IExportColumn>();
foreach (var element in Container.Items) { foreach (var element in Container.Items) {
@ -72,7 +66,6 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
exportColumn.Location = new Point(element.Location.X,element.Location.Y + position.Y); exportColumn.Location = new Point(element.Location.X,element.Location.Y + position.Y);
exportColumn.DesiredSize = Measure(element); exportColumn.DesiredSize = Measure(element);
itemsList.Add(exportColumn); itemsList.Add(exportColumn);
// Console.WriteLine("Size {0} DesiredSize {1}", exportColumn.Size, exportColumn.DesiredSize);
} }
return itemsList; return itemsList;
} }
@ -84,9 +77,8 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
return measureStrategy.Measure(element, Graphics); return measureStrategy.Measure(element, Graphics);
} }
protected void ArrangeContainer(ExportContainer exportContainer) protected void ArrangeContainer(IExportContainer exportContainer)
{ {
// Console.WriteLine("calling Container-Arrange");
var exportArrange = exportContainer.GetArrangeStrategy(); var exportArrange = exportContainer.GetArrangeStrategy();
exportArrange.Arrange(exportContainer); exportArrange.Arrange(exportContainer);
} }

45
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/DataContainerConverter.cs

@ -40,50 +40,11 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
} }
this.collectionSource = collectionSource; this.collectionSource = collectionSource;
} }
/*
public override IExportContainer Convert(){
if (collectionSource.Count == 0) {
return base.Convert();
}
var exportContainer = CreateExportContainer();
Console.WriteLine("");
Console.WriteLine("start CurrentLocation {0}",CurrentLocation);
var position = Point.Empty;
// do {
// FitOnPage(position);
// collectionSource.Fill(Container.Items);
var itemsList = CreateConvertedList(exportContainer,position);
exportContainer.ExportedItems.AddRange(itemsList);
position = new Point(Container.Location.X,position.Y + Container.Size.Height);
// }
// while (collectionSource.MoveNext());
Console.WriteLine("end CurrentLocation {0}",CurrentLocation);
Console.WriteLine("");
ArrangeContainer(exportContainer);
return exportContainer;
}
*/
/*
public IExportContainer aaaConvert(List<IPrintableObject>list,Point position){
var exportContainer = CreateExportContainer();
Console.WriteLine("");
Console.WriteLine("start CurrentLocation {0}",CurrentLocation);
var itemsList = CreateConvertedList(exportContainer,position);
exportContainer.ExportedItems.AddRange(itemsList);
Console.WriteLine("end CurrentLocation {0}",CurrentLocation);
Console.WriteLine("");
ArrangeContainer(exportContainer);
return exportContainer;
}
*/
public List<IExportColumn> Convert(ExportContainer container,Point position){
// Console.WriteLine(""); public List<IExportColumn> Convert(IExportContainer container,Point position){
// Console.WriteLine("start CurrentLocation {0}",CurrentLocation);
var itemsList = CreateConvertedList(container,position); var itemsList = CreateConvertedList(container,position);
// Console.WriteLine("end CurrentLocation {0}",CurrentLocation); ArrangeContainer(container);
// Console.WriteLine("");
return itemsList; return itemsList;
} }
} }

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

@ -33,6 +33,7 @@ namespace ICSharpCode.Reporting.PageBuilder
public override void BuildExportList() public override void BuildExportList()
{ {
var m = base.ReportModel;
base.BuildExportList(); base.BuildExportList();
CurrentPage = CreateNewPage (); CurrentPage = CreateNewPage ();
WriteStandardSections(); WriteStandardSections();
@ -59,20 +60,24 @@ namespace ICSharpCode.Reporting.PageBuilder
var position = Point.Empty; var position = Point.Empty;
do { do {
collectionSource.Fill(Container.Items); collectionSource.Fill(Container.Items);
var r = converter.Convert(Container as ExportContainer,position); var convertedItems = converter.Convert(detail,position);
if (PageFull(r)) { if (PageFull(convertedItems)) {
detail.ExportedItems.AddRange(r); detail.ExportedItems.AddRange(convertedItems);
CurrentPage.ExportedItems.Insert(2,detail); CurrentPage.ExportedItems.Insert(2,detail);
Pages.Add(CurrentPage); Pages.Add(CurrentPage);
var aa = detail.GetArrangeStrategy();
aa.Arrange(detail);
position = Point.Empty; position = Point.Empty;
CurrentPage = CreateNewPage(); CurrentPage = CreateNewPage();
WriteStandardSections(); WriteStandardSections();
CurrentLocation = DetailStart; CurrentLocation = DetailStart;
detail = CreateContainerForSection(DetailStart); detail = CreateContainerForSection(DetailStart);
} else { } else {
detail.ExportedItems.AddRange(r); detail.ExportedItems.AddRange(convertedItems);
position = new Point(Container.Location.Y,position.Y + Container.Size.Height); position = new Point(Container.Location.Y,position.Y + Container.Size.Height);
} }
} }
@ -92,6 +97,8 @@ namespace ICSharpCode.Reporting.PageBuilder
IExportContainer CreateContainerForSection(Point location ) IExportContainer CreateContainerForSection(Point location )
{ {
var detail = (ExportContainer)Container.CreateExportColumn(); var detail = (ExportContainer)Container.CreateExportColumn();
// var m = Container.MeasurementStrategy();
// detail.DesiredSize = m.Measure(Container,Graphics);
detail.Location = location; detail.Location = location;
return detail; return detail;
} }

4
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportingFactory.cs

@ -63,8 +63,8 @@ namespace ICSharpCode.Reporting
{ {
var doc = new XmlDocument(); var doc = new XmlDocument();
doc.Load(stream); doc.Load(stream);
var rm = LoadModel(doc); ReportModel = LoadModel(doc);
return rm; return ReportModel;
} }
static ReportModel LoadModel(XmlDocument doc) static ReportModel LoadModel(XmlDocument doc)

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

@ -34,14 +34,20 @@ namespace ICSharpCode.Reporting.WpfReportViewer
throw new ArgumentNullException("pages"); throw new ArgumentNullException("pages");
if (reportSettings == null) if (reportSettings == null)
throw new ArgumentNullException("reportSettings"); throw new ArgumentNullException("reportSettings");
Document = new FixedDocument();
var s = Document.DocumentPaginator.PageSize; Document = CreateFixedDocument(reportSettings);
Document.DocumentPaginator.PageSize = new System.Windows.Size(reportSettings.PageSize.Width,reportSettings.PageSize.Height);
var wpfExporter = new WpfExporter(reportSettings,pages); var wpfExporter = new WpfExporter(reportSettings,pages);
wpfExporter.Run(); wpfExporter.Run();
// var fixedPage = wpfExporter.FixedPage; this.document = wpfExporter.Document;
// AddPageToDocument(Document,fixedPage); }
this.Document = wpfExporter.Document;
FixedDocument CreateFixedDocument(ReportSettings reportSettings)
{
var document = new FixedDocument();
var s = document.DocumentPaginator.PageSize;
document.DocumentPaginator.PageSize = new System.Windows.Size(reportSettings.PageSize.Width, reportSettings.PageSize.Height);
return document;
} }
static void AddPageToDocument(FixedDocument fixedDocument,FixedPage page) static void AddPageToDocument(FixedDocument fixedDocument,FixedPage page)
@ -57,7 +63,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer
set { set {
this.document = value; this.document = value;
OnNotifyPropertyChanged ("Document"); OnNotifyPropertyChanged ("Document");
} }
} }

34
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/FormBuilderFixture.cs

@ -32,39 +32,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
{ {
Assert.IsNotNull(reportCreator); Assert.IsNotNull(reportCreator);
} }
[Test]
public void DetailStartIsSetToOneBelowPageHeader() {
var reportModel = new ReportModel();
foreach (GlobalEnums.ReportSection sec in Enum.GetValues(typeof(GlobalEnums.ReportSection))) {
reportModel.SectionCollection.Add (SectionFactory.Create(sec.ToString()));
}
var formPageBuilder = new FormPageBuilder(reportModel);
formPageBuilder.BuildExportList();
var page = formPageBuilder.Pages[0];
var pageHeader = page.ExportedItems[1];
Assert.That(formPageBuilder.DetailStart,
Is.EqualTo(new Point(pageHeader.Location.X,
pageHeader.Location.Y + pageHeader.Size.Height + 1)));
}
[Test]
public void DetailEndsIsOneAbovePageFooter () {
var reportModel = new ReportModel();
foreach (GlobalEnums.ReportSection sec in Enum.GetValues(typeof(GlobalEnums.ReportSection))) {
reportModel.SectionCollection.Add (SectionFactory.Create(sec.ToString()));
}
var formPageBuilder = new FormPageBuilder(reportModel);
formPageBuilder.BuildExportList();
var page = formPageBuilder.Pages[0];
var pageFooter = page.ExportedItems[3];
var x = formPageBuilder.DetailEnds;
Assert.That(formPageBuilder.DetailEnds,
Is.EqualTo(new Point(pageFooter.Location.X,
pageFooter.Location.Y - 1)));
}
#region Pages #region Pages

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

@ -46,6 +46,8 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory
Assert.That(sections.ToList().Count,Is.EqualTo(4)); Assert.That(sections.ToList().Count,Is.EqualTo(4));
} }
[Test]
public void LastPageContains_4_Sections() public void LastPageContains_4_Sections()
{ {
reportCreator.BuildExportList(); reportCreator.BuildExportList();

4
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestReports/FromList.srd

@ -72,7 +72,7 @@
<BaseSection> <BaseSection>
<Location>50, 200</Location> <Location>50, 200</Location>
<Size>727, 60</Size> <Size>727, 60</Size>
<BackColor>White</BackColor> <BackColor>LightGray</BackColor>
<SectionOffset>0</SectionOffset> <SectionOffset>0</SectionOffset>
<SectionMargin>0</SectionMargin> <SectionMargin>0</SectionMargin>
<DrawBorder>False</DrawBorder> <DrawBorder>False</DrawBorder>
@ -97,7 +97,7 @@
<Name>BaseDataItem1</Name> <Name>BaseDataItem1</Name>
</BaseDataItem> </BaseDataItem>
</Items> </Items>
<FrameColor>Black</FrameColor> <FrameColor>LightGray</FrameColor>
<Name>ReportDetail</Name> <Name>ReportDetail</Name>
</BaseSection> </BaseSection>
<BaseSection> <BaseSection>

1
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDesignerGenerator.cs

@ -96,6 +96,7 @@ namespace ICSharpCode.Reports.Addin
foreach (IComponent component in viewContent.Host.Container.Components) { foreach (IComponent component in viewContent.Host.Container.Components) {
BaseSection b = component as BaseSection; BaseSection b = component as BaseSection;
if (b != null) { if (b != null) {
Console.WriteLine(b.BackColor.ToString());
rpd.Save(component,xml); rpd.Save(component,xml);
} }
} }

Loading…
Cancel
Save