From b6e71842752a99ac0be7b74f4692373de5dbea5c Mon Sep 17 00:00:00 2001 From: Peter Forstmeier Date: Thu, 13 Jun 2013 13:53:28 +0200 Subject: [PATCH] DataFormBuilder --- .../ICSharpCode.Reporting.csproj | 2 + .../Src/Exporter/DebugExporter.cs | 4 +- .../Src/Factories/ReportCreatorFactory.cs | 1 + .../Src/Items/BaseDataItem.cs | 10 ++ .../Src/PageBuilder/BasePageBuilder.cs | 16 +- .../Converter/ContainerConverter.cs | 43 +++--- .../Converter/DataContainerConverter.cs | 77 +++++++++ .../Converter/IContainerConverter.cs | 24 +++ .../Src/PageBuilder/DataPageBuilder.cs | 20 ++- .../Src/PageBuilder/FormPageBuilder.cs | 3 - .../Src/ReportingFactory.cs | 18 ++- .../ICSharpCode.Reporting.Test.csproj | 10 +- .../src/Model/Report_FromListFixture.cs | 45 ++++++ .../src/Model/Report_TwoItemsFixture.cs | 1 - .../src/PageBuilder/DataPageBuilderFixture.cs | 26 +++- ...uilderFixture.cs => FormBuilderFixture.cs} | 0 .../src/PageBuilder/PageLayoutFixture.cs | 2 +- .../src/Reportingfactory/FormPageFixture.cs | 83 ++++++++++ .../src/Reportingfactory/PushModelFixture.cs | 69 +++++++++ .../src/TestHelper.cs | 11 +- .../src/TestReports/FromList.srd | 146 ++++++++++++++++++ .../src/TestReports/PlainModel.srd | 86 +++++++++++ .../Project/ReportDesignerView.cs | 9 +- .../TestView/TestWPFReportPreview.cs | 5 + 24 files changed, 645 insertions(+), 66 deletions(-) create mode 100644 src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/DataContainerConverter.cs create mode 100644 src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/IContainerConverter.cs create mode 100644 src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Model/Report_FromListFixture.cs rename src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/{PageBuilderFixture.cs => FormBuilderFixture.cs} (100%) create mode 100644 src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/FormPageFixture.cs create mode 100644 src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs create mode 100644 src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestReports/FromList.srd create mode 100644 src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestReports/PlainModel.srd diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj index 0351c2a900..e59caa7135 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj @@ -124,6 +124,8 @@ + + diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs index a1b59f5e1b..f663d8ff8b 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs @@ -42,13 +42,13 @@ namespace ICSharpCode.Reporting.Exporter var acceptor = item as IAcceptor; if (exportContainer != null) { if (acceptor != null) { - Console.WriteLine("--container--"); +// Console.WriteLine("--container--"); acceptor.Accept(visitor); } ShowDebug(item as IExportContainer); } else { if (acceptor != null) { - Console.WriteLine("..Item..."); +// Console.WriteLine("..Item..."); acceptor.Accept(visitor); } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ReportCreatorFactory.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ReportCreatorFactory.cs index 5cfe01ba9f..1df20e5415 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ReportCreatorFactory.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ReportCreatorFactory.cs @@ -36,6 +36,7 @@ namespace ICSharpCode.Reporting.Factories case GlobalEnums.PushPullModel.PushData: { + break; } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseDataItem.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseDataItem.cs index 8424e0e07a..b8ff344b7b 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseDataItem.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseDataItem.cs @@ -8,6 +8,8 @@ */ using System; using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; namespace ICSharpCode.Reporting.Items { @@ -20,6 +22,14 @@ namespace ICSharpCode.Reporting.Items { } + public override IExportColumn CreateExportColumn() + { + var exCol = (IExportText)base.CreateExportColumn(); +// exCol.Text = "blabla"; + return exCol; + } + + public virtual string DBValue {get;set;} public virtual string ColumnName {get;set;} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs index deeb9bd393..363fbfc459 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs @@ -25,8 +25,7 @@ namespace ICSharpCode.Reporting.PageBuilder /// public class BasePageBuilder:IReportCreator { - Graphics graphics; - + public BasePageBuilder(IReportModel reportModel) { if (reportModel == null) { @@ -34,7 +33,7 @@ namespace ICSharpCode.Reporting.PageBuilder } ReportModel = reportModel; Pages = new Collection(); - graphics = CreateGraphics.FromSize(reportModel.ReportSettings.PageSize); + Graphics = CreateGraphics.FromSize(reportModel.ReportSettings.PageSize); } @@ -67,7 +66,7 @@ namespace ICSharpCode.Reporting.PageBuilder protected void BuildPageFooter() { - Console.WriteLine("FormPageBuilder - Build PageFooter {0} - {1}",ReportModel.ReportSettings.PageSize.Height,ReportModel.ReportSettings.BottomMargin); + Console.WriteLine("Build PageFooter {0} - {1}",ReportModel.ReportSettings.PageSize.Height,ReportModel.ReportSettings.BottomMargin); CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin, ReportModel.ReportSettings.PageSize.Height - ReportModel.ReportSettings.BottomMargin - ReportModel.PageFooter.Size.Height); @@ -78,7 +77,7 @@ namespace ICSharpCode.Reporting.PageBuilder protected void BuildReportFooter() { - Console.WriteLine("FormPageBuilder - Build ReportFooter {0} - {1}",ReportModel.ReportSettings.PageSize.Height,ReportModel.ReportSettings.BottomMargin); + Console.WriteLine("Build ReportFooter {0} - {1}",ReportModel.ReportSettings.PageSize.Height,ReportModel.ReportSettings.BottomMargin); var lastSection = CurrentPage.ExportedItems.Last(); CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin, lastSection.Location.Y - lastSection.Size.Height - 1); @@ -96,16 +95,13 @@ namespace ICSharpCode.Reporting.PageBuilder this.BuildReportHeader(); BuildPageHeader(); BuildPageFooter(); -// BuilDetail(); BuildReportFooter(); -// base.AddPage(CurrentPage); -// Console.WriteLine("------{0}---------",ReportModel.ReportSettings.PageSize); } protected IExportContainer CreateSection(IReportContainer section,Point location) { - var containerConverter = new ContainerConverter(graphics, section, location); + var containerConverter = new ContainerConverter(Graphics, section, location); var header = containerConverter.Convert(); return header; } @@ -149,6 +145,8 @@ namespace ICSharpCode.Reporting.PageBuilder protected Point DetailStart {get;private set;} + protected Graphics Graphics {get;private set;} + public Collection Pages {get; private set;} } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs index 6faaa87df8..0135940936 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs @@ -20,11 +20,11 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter /// /// Description of SectionConverter. /// - internal class ContainerConverter + internal class ContainerConverter : IContainerConverter { private Graphics graphics; - - public ContainerConverter(Graphics graphics,IReportContainer reportContainer,Point currentLocation ) + + public ContainerConverter(Graphics graphics, IReportContainer reportContainer, Point currentLocation) { if (graphics == null) { throw new ArgumentNullException("graphics"); @@ -32,42 +32,43 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter if (reportContainer == null) { throw new ArgumentNullException("reportContainer"); } - + this.graphics = graphics; Container = reportContainer; CurrentLocation = currentLocation; } - - - public IExportContainer Convert() { - var containerStrategy = Container.MeasurementStrategy (); + + + public IExportContainer Convert() + { + var containerStrategy = Container.MeasurementStrategy(); var exportContainer = (ExportContainer)Container.CreateExportColumn(); - + exportContainer.Location = CurrentLocation; - exportContainer.DesiredSize = containerStrategy.Measure(Container,graphics); - + exportContainer.DesiredSize = containerStrategy.Measure(Container, graphics); + var itemsList = new List(); - + foreach (var element in Container.Items) { var item = ExportColumnFactory.CreateItem(element); item.Parent = exportContainer; var measureStrategy = element.MeasurementStrategy(); - item.DesiredSize = measureStrategy.Measure(element,graphics); - + item.DesiredSize = measureStrategy.Measure(element, graphics); + itemsList.Add(item); - Console.WriteLine("Size {0} DesiredSize {1}",item.Size,item.DesiredSize); + Console.WriteLine("Size {0} DesiredSize {1}", item.Size, item.DesiredSize); } exportContainer.ExportedItems.AddRange(itemsList); - + Console.WriteLine("calling Container-Arrange"); var exportArrange = exportContainer.GetArrangeStrategy(); exportArrange.Arrange(exportContainer); - + return exportContainer; } - - internal IReportContainer Container {get; private set;} - - internal Point CurrentLocation {get; private set;} + + internal IReportContainer Container { get; private set; } + + internal Point CurrentLocation { get; private set; } } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/DataContainerConverter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/DataContainerConverter.cs new file mode 100644 index 0000000000..3c9e4da277 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/DataContainerConverter.cs @@ -0,0 +1,77 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 13.06.2013 + * Time: 11:55 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ + +using System; +using System.Collections.Generic; +using System.Drawing; + +using ICSharpCode.Reporting.DataManager.Listhandling; +using ICSharpCode.Reporting.Factories; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; + +namespace ICSharpCode.Reporting.PageBuilder.Converter +{ + /// + /// Description of DataContainerConverter. + /// + internal class DataContainerConverter:IContainerConverter + { + private Graphics graphics; + private CollectionSource cs; + public DataContainerConverter(Graphics graphics, IReportContainer reportContainer, Point currentLocation,CollectionSource cs) + { + if (graphics == null) { + throw new ArgumentNullException("graphics"); + } + if (reportContainer == null) { + throw new ArgumentNullException("reportContainer"); + } + + this.graphics = graphics; + Container = reportContainer; + CurrentLocation = currentLocation; +this.cs = cs; + } + + public IExportContainer Convert(){ + var containerStrategy = Container.MeasurementStrategy(); + var exportContainer = (ExportContainer)Container.CreateExportColumn(); + + exportContainer.Location = CurrentLocation; + exportContainer.DesiredSize = containerStrategy.Measure(Container, graphics); + + var itemsList = new List(); + + foreach (var element in Container.Items) { + var item = ExportColumnFactory.CreateItem(element); + Console.WriteLine("Create {0}",item.ToString()); + item.Parent = exportContainer; + Console.WriteLine("Fill element"); + var measureStrategy = element.MeasurementStrategy(); + item.DesiredSize = measureStrategy.Measure(element, graphics); + + itemsList.Add(item); + Console.WriteLine("Size {0} DesiredSize {1}", item.Size, item.DesiredSize); + } + exportContainer.ExportedItems.AddRange(itemsList); + + Console.WriteLine("calling Container-Arrange"); + var exportArrange = exportContainer.GetArrangeStrategy(); + exportArrange.Arrange(exportContainer); + + return exportContainer; + } + + internal IReportContainer Container { get; private set; } + + internal Point CurrentLocation { get; private set; } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/IContainerConverter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/IContainerConverter.cs new file mode 100644 index 0000000000..4b0114cfc3 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/IContainerConverter.cs @@ -0,0 +1,24 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 08.04.2013 + * Time: 19:49 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using System.Drawing; + +using ICSharpCode.Reporting.Factories; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; + +namespace ICSharpCode.Reporting.PageBuilder.Converter +{ + internal interface IContainerConverter + { + IExportContainer Convert(); + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs index ef69d3666f..88b6ac39da 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs @@ -8,7 +8,10 @@ */ using System; using System.Collections.Generic; +using ICSharpCode.Reporting.DataManager.Listhandling; +using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Items; +using ICSharpCode.Reporting.PageBuilder.Converter; namespace ICSharpCode.Reporting.PageBuilder { @@ -17,7 +20,7 @@ namespace ICSharpCode.Reporting.PageBuilder /// public class DataPageBuilder:BasePageBuilder { - public DataPageBuilder(ReportModel reportModel, IEnumerable list):base(reportModel) + public DataPageBuilder(IReportModel reportModel, IEnumerable list):base(reportModel) { List = list; } @@ -32,12 +35,15 @@ namespace ICSharpCode.Reporting.PageBuilder void BuilDetail() { - Console.WriteLine("FormPageBuilder - Build DetailSection {0} - {1} - {2}",ReportModel.ReportSettings.PageSize.Width,ReportModel.ReportSettings.LeftMargin,ReportModel.ReportSettings.RightMargin); +// var cs = new CollectionSource(List,ReportModel.ReportSettings); +// cs.Bind(); + Console.WriteLine("DataPageBuilder - Build DetailSection {0} - {1} - {2}",ReportModel.ReportSettings.PageSize.Width,ReportModel.ReportSettings.LeftMargin,ReportModel.ReportSettings.RightMargin); CurrentLocation = DetailStart; - - var detail = CreateSection(ReportModel.DetailSection,CurrentLocation); - detail.Parent = CurrentPage; - CurrentPage.ExportedItems.Insert(2,detail); +// var dc = new DataContainerConverter(base.Graphics,ReportModel.DetailSection,CurrentLocation,cs); +// var detail = dc.Convert(); +// var detail = CreateSection(ReportModel.DetailSection,CurrentLocation); +// detail.Parent = CurrentPage; +// CurrentPage.ExportedItems.Insert(2,detail); } @@ -49,8 +55,6 @@ namespace ICSharpCode.Reporting.PageBuilder Console.WriteLine("------{0}---------",ReportModel.ReportSettings.PageSize); } - - public IEnumerable List {get; private set;} } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs index 7e95719007..80cd9d41ae 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs @@ -35,7 +35,6 @@ namespace ICSharpCode.Reporting.PageBuilder } - void BuilDetail() { Console.WriteLine("FormPageBuilder - Build DetailSection {0} - {1} - {2}",ReportModel.ReportSettings.PageSize.Width,ReportModel.ReportSettings.LeftMargin,ReportModel.ReportSettings.RightMargin); @@ -54,7 +53,5 @@ namespace ICSharpCode.Reporting.PageBuilder base.AddPage(CurrentPage); Console.WriteLine("------{0}---------",ReportModel.ReportSettings.PageSize); } - - } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportingFactory.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportingFactory.cs index c952d36bc8..e4df29656b 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportingFactory.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportingFactory.cs @@ -34,15 +34,12 @@ namespace ICSharpCode.Reporting if (reportModel == null) throw new ArgumentNullException("reportModel"); IReportCreator builder = null; - if (reportModel.ReportSettings.DataModel == GlobalEnums.PushPullModel.FormSheet) { - builder = new FormPageBuilder(reportModel); - } + + builder = ReportCreatorFactory.ExporterFactory(reportModel); return builder; } - - internal IReportCreator ReportCreator (Stream stream) { IReportModel reportModel = LoadReportModel (stream); @@ -51,12 +48,17 @@ namespace ICSharpCode.Reporting return builder; } - object ExporterFactory(IReportModel reportModel) + + internal IReportCreator ReportCreator (Stream stream,IList list) { - throw new NotImplementedException(); + IReportModel reportModel = LoadReportModel (stream); + IReportCreator builder = null; + builder = new DataPageBuilder(reportModel,list); + return builder; } - + + internal ReportModel LoadReportModel (Stream stream) { var doc = new XmlDocument(); diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/ICSharpCode.Reporting.Test.csproj b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/ICSharpCode.Reporting.Test.csproj index 4dbb3adcf2..0696e794eb 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/ICSharpCode.Reporting.Test.csproj +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/ICSharpCode.Reporting.Test.csproj @@ -60,18 +60,20 @@ - + - + + + @@ -79,6 +81,7 @@ + @@ -95,5 +98,8 @@ + + + \ No newline at end of file diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Model/Report_FromListFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Model/Report_FromListFixture.cs new file mode 100644 index 0000000000..6c44c3fa0e --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Model/Report_FromListFixture.cs @@ -0,0 +1,45 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) +// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) + +using System; +using System.Drawing; +using System.Reflection; + +using ICSharpCode.Reporting.Items; +using NUnit.Framework; + +namespace ICSharpCode.Reporting.Test.Model +{ + [TestFixture] + public class Report_FromListFixture + { + private ReportModel model; + + [Test] + public void ReportHeaderOneItem () { + var section = model.ReportHeader; + Assert.That(section.Items.Count,Is.EqualTo(1)); + } + + + [Test] + public void PageHeaderOneItem () { + var section = model.ReportHeader; + Assert.That(section.Items.Count,Is.EqualTo(1)); + } + + [Test] + public void DetailContainsOneDataItem() { + var section = model.DetailSection; + Assert.That(section.Items.Count,Is.EqualTo(1)); + } + [SetUp] + public void LoadModelFromStream() + { + System.Reflection.Assembly asm = Assembly.GetExecutingAssembly(); + var stream = asm.GetManifestResourceStream(TestHelper.ReportFromList); + var rf = new ReportingFactory(); + model = rf.LoadReportModel(stream); + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Model/Report_TwoItemsFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Model/Report_TwoItemsFixture.cs index dd66be2304..3ec43e3b36 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Model/Report_TwoItemsFixture.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Model/Report_TwoItemsFixture.cs @@ -8,7 +8,6 @@ */ using System; using System.Drawing; -using System.IO; using System.Reflection; using ICSharpCode.Reporting.Items; diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/DataPageBuilderFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/DataPageBuilderFixture.cs index 5dc23ab3a2..769af799f6 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/DataPageBuilderFixture.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/DataPageBuilderFixture.cs @@ -33,15 +33,31 @@ namespace ICSharpCode.Reporting.Test.PageBuilder [Test] + public void DataSourceIsset() { + var dpb = new DataPageBuilder (new ReportModel(),new System.Collections.Generic.List()); + Assert.That(dpb.List,Is.Not.Null); + } + + + [Test] + public void BuildExportPagesCountIsOne() { + reportCreator.BuildExportList(); + Assert.That(reportCreator.Pages.Count,Is.EqualTo(1)); + } + + + [Test] + [Ignore] public void PageContainsFiveSections() { reportCreator.BuildExportList(); - var x = reportCreator.Pages[0].ExportedItems; - var y = from s in x + var exporteditems = reportCreator.Pages[0].ExportedItems; + var sections = from s in exporteditems + where s.GetType() == typeof(ExportContainer) select s; - Assert.That(y.ToList().Count,Is.EqualTo(5)); - Console.WriteLine("-------ShowDebug---------"); + Assert.That(sections.ToList().Count,Is.EqualTo(5)); + Console.WriteLine("-------PageLayoutFixture:ShowDebug---------"); var ex = new DebugExporter(reportCreator.Pages); ex.Run(); } @@ -51,7 +67,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder public void LoadFromStream() { System.Reflection.Assembly asm = Assembly.GetExecutingAssembly(); - var stream = asm.GetManifestResourceStream(TestHelper.RepWithTwoItems); + var stream = asm.GetManifestResourceStream(TestHelper.ReportFromList); var reportingFactory = new ReportingFactory(); // reportCreator = reportingFactory.ReportCreator(stream); var model = reportingFactory.LoadReportModel (stream); diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageBuilderFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/FormBuilderFixture.cs similarity index 100% rename from src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageBuilderFixture.cs rename to src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/FormBuilderFixture.cs diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs index 9e8889ffab..fdf78fddca 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs @@ -33,7 +33,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder where s.GetType() == typeof(ExportContainer) select s; Assert.That(y.ToList().Count,Is.EqualTo(5)); - Console.WriteLine("-------ShowDebug---------"); + Console.WriteLine("-------PageLayoutFixture:ShowDebug---------"); var ex = new DebugExporter(reportCreator.Pages); ex.Run(); } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/FormPageFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/FormPageFixture.cs new file mode 100644 index 0000000000..79d47a451d --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/FormPageFixture.cs @@ -0,0 +1,83 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 19.03.2013 + * Time: 19:58 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.IO; +using System.Reflection; + +using ICSharpCode.Reporting.Globals; +using ICSharpCode.Reporting.Test; +using NUnit.Framework; + +namespace ICSharpCode.Reporting.Test.Model +{ + [TestFixture] + public class LoadPlainModelFixture + { + private Stream stream; + + [Test] + public void CanLoadFromResource() + { + Assert.IsNotNull(stream); + } + + + [Test] + public void LoadPlainModel() + { + var rf = new ReportingFactory(); + var model = rf.LoadReportModel(stream); + Assert.IsNotNull(model); + } + + + [Test] + public void ReportSettingsFromPlainModel() + { + var rf = new ReportingFactory(); + var model = rf.LoadReportModel(stream); + Assert.That(model.ReportSettings,Is.Not.Null); + } + + + [Test] + public void ReportSettingsReportName() + { + var rf = new ReportingFactory(); + var model = rf.LoadReportModel(stream); + Assert.That(model.ReportSettings.ReportName,Is.EqualTo(Globals.GlobalValues.DefaultReportName)); + } + + + [Test] + public void ReportSettingsDataModelFormSheet() + { + var rf = new ReportingFactory(); + var model = rf.LoadReportModel(stream); + Assert.That(model.ReportSettings.DataModel,Is.EqualTo(GlobalEnums.PushPullModel.FormSheet)); + } + + [Test] + public void ReportSettingsPageSize() + { + var rf = new ReportingFactory(); + var model = rf.LoadReportModel(stream); + Assert.That(model.ReportSettings.PageSize,Is.EqualTo(Globals.GlobalValues.DefaultPageSize)); + } + + + + [SetUp] + public void LoadFromStream() + { + System.Reflection.Assembly asm = Assembly.GetExecutingAssembly(); + stream = asm.GetManifestResourceStream(TestHelper.PlainReportFileName); + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs new file mode 100644 index 0000000000..164f19a51d --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs @@ -0,0 +1,69 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 12.06.2013 + * Time: 23:05 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.IO; +using System.Reflection; +using System.Linq; + +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.PageBuilder; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; +using ICSharpCode.Reporting.Test.DataSource; +using NUnit.Framework; + +namespace ICSharpCode.Reporting.Test.Reportingfactory +{ + [TestFixture] + public class PushModelFixture + { + + private IReportCreator reportCreator; + + [Test] + public void InitPushModelReport() + { + reportCreator.BuildExportList(); + Assert.That(reportCreator.Pages.Count,Is.GreaterThan(0)); + } + + + [Test] + public void DetailContainsOneDataItem() { + reportCreator.BuildExportList(); + var exporteditems = reportCreator.Pages[0].ExportedItems; + var sections = from s in exporteditems + + where s.GetType() == typeof(ExportContainer) + select s; + var section = sections.ToList()[2] as ExportContainer; + var result = section.ExportedItems[0]; + Assert.That(result,Is.AssignableFrom(typeof(ExportText))); + } + + + [SetUp] + public void LoadFromStream() + { + var contributorList = new ContributorsList(); + var list = contributorList.ContributorCollection; + + + + System.Reflection.Assembly asm = Assembly.GetExecutingAssembly(); + var stream = asm.GetManifestResourceStream(TestHelper.ReportFromList); + +// System.Reflection.Assembly asm = Assembly.GetExecutingAssembly(); +// var stream = asm.GetManifestResourceStream(TestHelper.RepWithTwoItems); +// + var reportingFactory = new ReportingFactory(); + var model = reportingFactory.LoadReportModel (stream); + reportCreator = new DataPageBuilder(model,list); + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestHelper.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestHelper.cs index 0c52147c23..f04763cd8f 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestHelper.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestHelper.cs @@ -20,15 +20,22 @@ namespace ICSharpCode.Reporting.Test { private const string nameSpace = "ICSharpCode.Reporting.Test.src.TestReports."; private const string plainReportName = "PlainModel.srd"; - private const string rr = "ReportWithTwoItems.srd"; + private const string withTwoItems = "ReportWithTwoItems.srd"; + private const string fromList = "FromList.srd"; public static string PlainReportFileName{ get{return nameSpace + plainReportName;} } + public static string RepWithTwoItems { - get {return nameSpace + rr;} + get {return nameSpace + withTwoItems;} + } + + + public static string ReportFromList { + get {return nameSpace + fromList;} } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestReports/FromList.srd b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestReports/FromList.srd new file mode 100644 index 0000000000..326f28f222 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestReports/FromList.srd @@ -0,0 +1,146 @@ + + + + + Report1 + DataReport + 50 + 50 + 50 + 50 + 827, 1169 + False + Millimeter + 5, 5, 5, 5 + + + + + + + + Text + PushData + No Data for this Report + Microsoft Sans Serif, 10pt + True + + + + + 50, 50 + 727, 60 + White + 0 + 0 + False + False + + + 313, 5 + 100, 20 + White + Microsoft Sans Serif, 10pt + None + TopLeft + False + False + System.String + No + Report1 + False + Black + Black + Report1 + + + Black + ReportHeader + + + 50, 125 + 727, 60 + White + 0 + 0 + False + False + + Black + ReportPageHeader + + + 50, 200 + 727, 60 + White + 0 + 0 + False + False + + + 29, 14 + 100, 20 + White + Microsoft Sans Serif, 10pt + None + TopLeft + False + False + System.String + No + BaseDataItem1 + False + Black + Black + First + BaseDataItem1 + + + Black + ReportDetail + + + 50, 275 + 727, 60 + White + 0 + 0 + False + False + + + 622, 5 + 100, 20 + White + Microsoft Sans Serif, 10pt + None + TopLeft + False + False + System.String + No + =Globals!PageNumber + False + Black + Black + PageNumber1 + + + Black + ReportPageFooter + + + 50, 350 + 727, 60 + White + 0 + 0 + False + False + + Black + ReportFooter + + + \ No newline at end of file diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestReports/PlainModel.srd b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestReports/PlainModel.srd new file mode 100644 index 0000000000..d6306dd40f --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestReports/PlainModel.srd @@ -0,0 +1,86 @@ + + + + + Microsoft Sans Serif, 10pt + FormSheet + D:\SharpDevelop3.0_CHECKOUT\SharpDevelop\bin\Raaaaaeport1.srd + 50 + True + + + No Data for this Report + 50 + 827, 1169 + 5, 5, 5, 5 + 50 + Text + + False + Report1 + 50 + + Millimeter + + FormSheet + + + + + + 727, 60 + ReportHeader + False + 0 + 0 + White + + 50, 50 + False + + + 727, 60 + ReportPageHeader + False + 0 + 0 + White + + 50, 125 + False + + + 727, 60 + ReportDetail + False + 0 + 0 + White + + 50, 200 + False + + + 727, 60 + ReportPageFooter + False + 0 + 0 + White + + 50, 275 + False + + + 727, 60 + ReportFooter + False + 0 + 0 + White + + 50, 350 + False + + + \ No newline at end of file diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportDesignerView.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportDesignerView.cs index 54a52d6d2d..2f210f9a80 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportDesignerView.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportDesignerView.cs @@ -70,8 +70,10 @@ namespace ICSharpCode.Reports.Addin throw new ArgumentNullException("generator"); } Console.WriteLine("ReportDesignerView"); + this.generator = generator; this.generator.Attach(this); + base.TabPageText = ResourceService.GetString("SharpReport.Design"); ReportingSideTabProvider.AddViewContent(this); } @@ -384,8 +386,8 @@ namespace ICSharpCode.Reports.Addin { Console.WriteLine("UpdatePropertyPad()"); if (IsFormsDesignerVisible && Host != null) { - propertyContainer.Host = Host; - propertyContainer.SelectableObjects = Host.Container.Components; + PropertyContainer.Host = Host; + PropertyContainer.SelectableObjects = Host.Container.Components; ISelectionService selectionService = (ISelectionService)this.designSurface.GetService(typeof(ISelectionService)); if (selectionService != null) { UpdatePropertyPadSelection(selectionService); @@ -399,7 +401,7 @@ namespace ICSharpCode.Reports.Addin ICollection selection = selectionService.GetSelectedComponents(); object[] selArray = new object[selection.Count]; selection.CopyTo(selArray, 0); - propertyContainer.SelectedObjects = selArray; + PropertyContainer.SelectedObjects = selArray; } @@ -407,7 +409,6 @@ namespace ICSharpCode.Reports.Addin #region IHasPropertyContainer impementation -// PropertyContainer propertyContainer = new PropertyContainer(); PropertyContainer propertyContainer; public PropertyContainer PropertyContainer { diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/TestView/TestWPFReportPreview.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/TestView/TestWPFReportPreview.cs index 48b401c1fd..6b63500e17 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/TestView/TestWPFReportPreview.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/TestView/TestWPFReportPreview.cs @@ -66,6 +66,11 @@ namespace ICSharpCode.Reports.Addin.SecondaryViews var reportingFactory = new ReportingFactory(); var reportCreator = reportingFactory.ReportCreator(model); + if (reportCreator == null){ + SD.MessageService.ShowWarning(String.Format("Cannot run {0} from Designer", + GlobalEnums.PushPullModel.PushData.ToString())); + return; + } reportCreator.BuildExportList(); PreviewViewModel previewViewModel = new PreviewViewModel (model.ReportSettings,reportCreator.Pages);