diff --git a/src/AddIns/Analysis/SourceAnalysis/SourceAnalysis.csproj b/src/AddIns/Analysis/SourceAnalysis/SourceAnalysis.csproj index 9993f1164c..d0b10ce5d3 100644 --- a/src/AddIns/Analysis/SourceAnalysis/SourceAnalysis.csproj +++ b/src/AddIns/Analysis/SourceAnalysis/SourceAnalysis.csproj @@ -6,7 +6,7 @@ SourceAnalysis Debug AnyCPU - {3EAA45A9-735C-4AC7-A799-947B93EA449D} + {C16BEA37-FEE8-4792-B860-48F5BFBD39A9} ..\..\..\..\AddIns\Analysis\SourceAnalysis False False @@ -83,7 +83,6 @@ - {2748AD25-9C63-4E12-877B-4DCE96FBED54} ICSharpCode.SharpDevelop diff --git a/src/AddIns/BackendBindings/FSharpBinding/FSharpBinding.csproj b/src/AddIns/BackendBindings/FSharpBinding/FSharpBinding.csproj index 3766f87d14..00859b39e3 100644 --- a/src/AddIns/BackendBindings/FSharpBinding/FSharpBinding.csproj +++ b/src/AddIns/BackendBindings/FSharpBinding/FSharpBinding.csproj @@ -62,7 +62,9 @@ - + + UserControl + diff --git a/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj b/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj index 9812228760..bf45f26cb4 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj +++ b/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj @@ -5,7 +5,7 @@ AnyCPU 8.0.40607 2.0 - {e1b288a2-08ee-4318-8bbb-8ab72c69e33e} + {E1B288A2-08EE-4318-8BBB-8AB72C69E33E} ICSharpCode.WixBinding WixBinding Library @@ -107,7 +107,9 @@ - + + Component + @@ -127,7 +129,9 @@ - + + Component + @@ -225,9 +229,6 @@ ICSharpCode.Core False - - - {0162E499-42D0-409B-AA25-EED21F75336B} AvalonEdit.AddIn @@ -245,7 +246,6 @@ Always - {8035765F-D51F-4A0C-A746-2FD100E19419} ICSharpCode.SharpDevelop.Widgets diff --git a/src/AddIns/DisplayBindings/ILSpyAddIn/ILSpyAddIn.csproj b/src/AddIns/DisplayBindings/ILSpyAddIn/ILSpyAddIn.csproj index e0218efa12..869677d37e 100644 --- a/src/AddIns/DisplayBindings/ILSpyAddIn/ILSpyAddIn.csproj +++ b/src/AddIns/DisplayBindings/ILSpyAddIn/ILSpyAddIn.csproj @@ -71,7 +71,9 @@ - + + Form + SetILSpyPathDialog.cs @@ -129,8 +131,5 @@ False - - - - + \ No newline at end of file diff --git a/src/AddIns/DisplayBindings/IconEditor/IconEditor.csproj b/src/AddIns/DisplayBindings/IconEditor/IconEditor.csproj index 291f643110..7bd11dabd3 100644 --- a/src/AddIns/DisplayBindings/IconEditor/IconEditor.csproj +++ b/src/AddIns/DisplayBindings/IconEditor/IconEditor.csproj @@ -52,7 +52,9 @@ IconPanel.cs - + + UserControl + PickFormatDialog.cs @@ -61,7 +63,9 @@ EditorPanel.cs - + + UserControl + Always diff --git a/src/AddIns/Misc/AddInManager/Project/AddInManager.csproj b/src/AddIns/Misc/AddInManager/Project/AddInManager.csproj index 3f4f669cda..ba33653564 100644 --- a/src/AddIns/Misc/AddInManager/Project/AddInManager.csproj +++ b/src/AddIns/Misc/AddInManager/Project/AddInManager.csproj @@ -53,13 +53,19 @@ - + + Form + ManagerForm.cs - + + Component + - + + Form + AboutForm.cs diff --git a/src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.csproj b/src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.csproj index 488a198197..5c44cb08f4 100644 --- a/src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.csproj +++ b/src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.csproj @@ -79,7 +79,9 @@ Configuration\GlobalAssemblyInfo.cs - + + UserControl + RegisterFiletypesPanel.cs @@ -95,7 +97,6 @@ ICSharpCode.Core False - Always diff --git a/src/AddIns/Misc/ICSharpCode.Reporting.Tests/Factory/ReportingFactoryFixture.cs b/src/AddIns/Misc/ICSharpCode.Reporting.Tests/Factory/ReportingFactoryFixture.cs new file mode 100644 index 0000000000..6fe6fe4694 --- /dev/null +++ b/src/AddIns/Misc/ICSharpCode.Reporting.Tests/Factory/ReportingFactoryFixture.cs @@ -0,0 +1,39 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 19.03.2013 + * Time: 19:14 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.IO; +using System.Reflection; + +using NUnit.Framework; + +namespace ICSharpCode.Reporting.Tests.Factory +{ + [TestFixture] + public class ReportingFactoryFixture + { + private const string nS = "ICSharpCode.Reporting.Tests.TestReports."; + private const string reportName = "PlainModel.srd"; + private Stream stream; + + [Test] + public void CreateFormSheetBuilder() + { + var r = new ReportingFactory(); + var x = r.CreatePageBuilder(stream); + Assert.That(x,Is.Null); + } + + [SetUp] + public void LoadFromStream() + { + System.Reflection.Assembly asm = Assembly.GetExecutingAssembly(); + stream = asm.GetManifestResourceStream(nS + reportName); + } + } +} diff --git a/src/AddIns/Misc/ICSharpCode.Reporting.Tests/Model/LoadPlainModelFixture.cs b/src/AddIns/Misc/ICSharpCode.Reporting.Tests/Model/LoadPlainModelFixture.cs new file mode 100644 index 0000000000..75a05a7d29 --- /dev/null +++ b/src/AddIns/Misc/ICSharpCode.Reporting.Tests/Model/LoadPlainModelFixture.cs @@ -0,0 +1,86 @@ +/* + * 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 NUnit.Framework; + +namespace ICSharpCode.Reporting.Tests.Model +{ + [TestFixture] + public class LoadPlainModelFixture + { + private const string nS = "ICSharpCode.Reporting.Tests.TestReports."; + private const string reportName = "PlainModel.srd"; + 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(nS + reportName); + } + + + } +} diff --git a/src/AddIns/Misc/ICSharpCode.Reporting.Tests/Model/ReportModelFixture.cs b/src/AddIns/Misc/ICSharpCode.Reporting.Tests/Model/ReportModelFixture.cs new file mode 100644 index 0000000000..dddd3c81e0 --- /dev/null +++ b/src/AddIns/Misc/ICSharpCode.Reporting.Tests/Model/ReportModelFixture.cs @@ -0,0 +1,48 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 19.03.2013 + * Time: 19:02 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using ICSharpCode.Reporting.Items; +using NUnit.Framework; + +namespace ICSharpCode.Reporting.Tests.Model +{ + [TestFixture] + public class ReportModelFixture + { + private ReportModel model; + + [Test] + public void CanCreateReportModel() + { + Assert.That(model,Is.Not.Null); + } + + + [Test] + public void ModelInitializeReportSettings() + { + Assert.That(model.ReportSettings,Is.Not.Null); + } + + + [Test] + public void ModelReturnsPlainReportName() + { + Assert.That(model.ReportSettings.ReportName,Is.EqualTo(Globals.GlobalValues.DefaultReportName)); + } + + + [SetUp] + public void CreateModel() + { + model = ReportModel.Create(); + } + + } +} diff --git a/src/AddIns/Misc/ICSharpCode.Reporting.Tests/Model/ReportSettingsFixture.cs b/src/AddIns/Misc/ICSharpCode.Reporting.Tests/Model/ReportSettingsFixture.cs new file mode 100644 index 0000000000..bbf760e8fa --- /dev/null +++ b/src/AddIns/Misc/ICSharpCode.Reporting.Tests/Model/ReportSettingsFixture.cs @@ -0,0 +1,51 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 19.03.2013 + * Time: 19:10 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Drawing; +using ICSharpCode.Reporting.Globals; +using ICSharpCode.Reporting.Items; +using NUnit.Framework; + +namespace ICSharpCode.Reporting.Tests +{ + [TestFixture] + public class ReportSettingsFixture + { + ReportSettings reportSettings; + + [Test] + public void DefaultConstructureShouldReturnStandardValues() + { + Assert.IsNotNull(reportSettings,"Should not be 'null'"); + Assert.AreEqual(GlobalValues.DefaultReportName,reportSettings.ReportName); + } + + + [Test] + public void DefaultPageSize () + { + Assert.AreEqual(GlobalValues.DefaultPageSize,reportSettings.PageSize); + } + + + [Test] + public void LandScape_True_Return_PageSize_For_LandScape () + { + reportSettings.Landscape = true; + var landscapeSize = new Size(Globals.GlobalValues.DefaultPageSize.Height, + Globals.GlobalValues.DefaultPageSize.Width); + Assert.That(reportSettings.PageSize,Is.EqualTo(landscapeSize)); + } + + [SetUp] + public void Setup () { + reportSettings = new ReportSettings(); + } + } +} diff --git a/src/AddIns/Misc/ICSharpCode.Reporting.Tests/TestReports/PlainModel.srd b/src/AddIns/Misc/ICSharpCode.Reporting.Tests/TestReports/PlainModel.srd new file mode 100644 index 0000000000..d6306dd40f --- /dev/null +++ b/src/AddIns/Misc/ICSharpCode.Reporting.Tests/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/PackageManagement/SharpDevelop.EnvDTE/SharpDevelop.EnvDTE.vbproj b/src/AddIns/Misc/PackageManagement/SharpDevelop.EnvDTE/SharpDevelop.EnvDTE.vbproj index e002abf0b0..cd33019d03 100644 --- a/src/AddIns/Misc/PackageManagement/SharpDevelop.EnvDTE/SharpDevelop.EnvDTE.vbproj +++ b/src/AddIns/Misc/PackageManagement/SharpDevelop.EnvDTE/SharpDevelop.EnvDTE.vbproj @@ -1,7 +1,7 @@  - {6FB1260D-68A2-41A0-BB09-F5F710842E99} + {1B753D7F-7C77-4D5E-B928-02982690879C} Debug AnyCPU Library @@ -121,11 +121,7 @@ - - - - - + diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj new file mode 100644 index 0000000000..0351c2a900 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj @@ -0,0 +1,170 @@ + + + + {40CA84D4-ACFC-4646-9CDD-B87262D34093} + Debug + AnyCPU + Library + ICSharpCode.Reporting + ICSharpCode.Reporting + v4.5 + + + Properties + False + False + False + False + obj\$(Configuration)\ + 4 + + + AnyCPU + 4194304 + False + False + Auto + 4096 + + + ..\..\..\..\..\AddIns\Misc\SharpDevelopReporting\ + True + Full + False + False + DEBUG;TRACE + obj\ + + + bin\Release\ + False + None + True + False + TRACE + + + + 3.0 + + + 3.0 + + + + 3.5 + + + + 3.5 + + + 4.0 + + + + 3.5 + + + 3.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WpfReportViewer.xaml + Code + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs new file mode 100644 index 0000000000..0f873ba336 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs @@ -0,0 +1,83 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 11.05.2013 + * Time: 19:56 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Drawing; +using System.Linq; + +using ICSharpCode.Reporting.Interfaces.Export; + +namespace ICSharpCode.Reporting.Arrange +{ + /// + /// Description of ArrangeStrategy. + /// + /// + public interface IArrangeStrategy + { + void Arrange(IExportColumn exportColumn); + } + + + internal class ContainerArrangeStrategy:IArrangeStrategy + { + public ContainerArrangeStrategy() + { + } + + + public void Arrange(IExportColumn exportColumn) + { + if (exportColumn == null) + throw new ArgumentNullException("exportColumn"); + var container = exportColumn as IExportContainer; + if ((container != null) && (container.ExportedItems.Count > 0)) { + + + FindBiggestRectangle(container); + var resizeable = from resize in container.ExportedItems + where ((resize.CanGrow == true)) + select resize; + + if (resizeable.Any()) { + if (!BiggestRectangle.IsEmpty) { + var containerRectangle = new Rectangle(container.Location,container.Size); + var desiredRectangle = Rectangle.Union(containerRectangle,BiggestRectangle); + container.DesiredSize = new Size(container.Size.Width,desiredRectangle.Size.Height + 5); + } + } + } + } + + private void FindBiggestRectangle (IExportContainer container) + { + BiggestRectangle = Rectangle.Empty; + /* + foreach (var item in container.ExportedItems) + { + if (item.DesiredSize.Height > BiggestRectangle.Size.Height) + { + BiggestRectangle = new Rectangle(new Point(container.Location.X + item.Location.X, + container.Location.Y + item.Location.Y) + , item.DesiredSize); + } + } + */ + foreach (var item in container.ExportedItems + .Where(item => item.DesiredSize.Height > BiggestRectangle.Size.Height)) + { + BiggestRectangle = new Rectangle(new Point(container.Location.X + item.Location.X, + container.Location.Y + item.Location.Y) + ,item.DesiredSize); + } + } + + public Rectangle BiggestRectangle {get; private set;} + } + +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/MeasurementStrategy.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/MeasurementStrategy.cs new file mode 100644 index 0000000000..2a668b2c2d --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/MeasurementStrategy.cs @@ -0,0 +1,46 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 22.04.2013 + * Time: 19:11 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Drawing; +using ICSharpCode.Reporting.Globals; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Items; + +namespace ICSharpCode.Reporting.Arrange +{ + /// + /// Description of ArrangeStrategy. + /// + public interface IMeasurementStrategy + { + Size Measure(IPrintableObject reportItem,Graphics graphics); + } + + + internal class ContainerMeasurementStrategy:IMeasurementStrategy + { + public ContainerMeasurementStrategy() + { + } + + public Size Measure(IPrintableObject reportItem,Graphics graphics) + { + return reportItem.Size; + } + } + + internal class TextBasedMeasurementStrategy:IMeasurementStrategy + { + + public Size Measure(IPrintableObject reportItem, Graphics graphics) + { + return MeasurementService.Measure((ITextItem)reportItem,graphics); + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/AbstractColumn.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/AbstractColumn.cs new file mode 100644 index 0000000000..eed93e3b9d --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/AbstractColumn.cs @@ -0,0 +1,57 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 21.05.2013 + * Time: 20:16 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Xml.Serialization; + +namespace ICSharpCode.Reporting.BaseClasses +{ + /// + /// Description of AbstractColumn. + /// + public class AbstractColumn + { + private Type dataType; + private string dataTypeName; + + public AbstractColumn() { + this.dataType = typeof(System.String); + } + + + public AbstractColumn(string columnName, Type dataType){ + this.ColumnName = columnName; + this.dataType = dataType; + } + + public string ColumnName {get;set;} + + + + public string DataTypeName { + get { + return this.dataType.ToString(); + } + set { + dataTypeName = value; + this.dataType = Type.GetType(dataTypeName,true,true); + } + } + + [XmlIgnoreAttribute] + public Type DataType { + get { + return dataType; + } + set { + dataType = value; + } + } + + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/GroupColumn.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/GroupColumn.cs new file mode 100644 index 0000000000..708f69a922 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/GroupColumn.cs @@ -0,0 +1,38 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 24.05.2013 + * Time: 20:10 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.ComponentModel; + +namespace ICSharpCode.Reporting.BaseClasses +{ + /// + /// Description of GroupColumn. + /// + public class GroupColumn : SortColumn + { + + public GroupColumn():this("",0,ListSortDirection.Ascending) + { + } + + public GroupColumn(string columnName,int groupLevel, ListSortDirection sortDirection):base(columnName,sortDirection) + { + if (GroupLevel < 0) { + throw new ArgumentException("groupLevel"); + } + this.GroupLevel = groupLevel; + + } + + + public int GroupLevel {get;private set;} + + + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/Page.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/Page.cs new file mode 100644 index 0000000000..b15c026634 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/Page.cs @@ -0,0 +1,125 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 03.04.2013 + * Time: 20:35 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using System.Drawing; + +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Interfaces.Export; + +namespace ICSharpCode.Reporting.BaseClasses +{ + /// + /// Description of Page. + /// + /// + + public class Page:IExportContainer,IPage + { + public Page(IPageInfo pageInfo,Size pageSize) + { + if (pageInfo == null) { + throw new ArgumentNullException("pageInfo"); + } + PageInfo = pageInfo; + Name = "Page"; + Size = pageSize; + exportedItems = new List(); + } + + public bool IsFirstPage {get;set;} + + + public IPageInfo PageInfo {get;private set;} + + + public string Name {get;set;} + + + public System.Drawing.Size Size {get;set;} + + + public System.Drawing.Point Location {get;set;} + + + public List exportedItems; + + public List ExportedItems { + get { return exportedItems; } + } + + + public IExportContainer CreateExportColumn() + { + throw new NotImplementedException(); + } + + public ICSharpCode.Reporting.Arrange.IArrangeStrategy GetArrangeStrategy() + { + throw new NotImplementedException(); + } + + public Size DesiredSize { + get { + throw new NotImplementedException(); + } + set { + throw new NotImplementedException(); + } + } + + public Color ForeColor { + get { + throw new NotImplementedException(); + } + set { + throw new NotImplementedException(); + } + } + + public Color BackColor { + get { + throw new NotImplementedException(); + } + set { + throw new NotImplementedException(); + } + } + + + public Color FrameColor { + get { + throw new NotImplementedException(); + } + set { + throw new NotImplementedException(); + } + } + + + public IExportColumn Parent { + get { + return null; + } + set { + throw new NotImplementedException(); + } + } + + public bool CanGrow {get;set;} + + public bool CanShrink {get;set;} + + public Rectangle DisplayRectangle { + get { + return new Rectangle(Location,Size); + } + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/PageInfo.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/PageInfo.cs new file mode 100644 index 0000000000..ecaf63ecbe --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/PageInfo.cs @@ -0,0 +1,50 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 05.04.2013 + * Time: 19:50 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using ICSharpCode.Reporting.Interfaces.Export; + +namespace ICSharpCode.Reporting.BaseClasses +{ + /// + /// Description of PageInfo. + /// + /// + + + + public class PageInfo:IPageInfo + { + public PageInfo() + { + } + + public int PageNumber {get;set;} + + + + public int TotalPages {get;set;} + + + + public string ReportName {get;set;} + + + public string ReportFileName {get;set;} + + + public string ReportFolder { + get{ + return System.IO.Path.GetDirectoryName(this.ReportFileName); + } + } + + public DateTime ExecutionTime {get;set;} + + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/SortColumn.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/SortColumn.cs new file mode 100644 index 0000000000..aa26f9c158 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/SortColumn.cs @@ -0,0 +1,49 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 21.05.2013 + * Time: 20:20 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.ComponentModel; + +namespace ICSharpCode.Reporting.BaseClasses +{ + /// + /// Description of SortColumn. + /// + public class SortColumn : AbstractColumn { + + private ListSortDirection sortDirection = ListSortDirection.Ascending; + private bool caseSensitive; + + + public SortColumn():this(String.Empty,ListSortDirection.Ascending,typeof(System.String),false) + { + } + + + public SortColumn(string columnName,ListSortDirection sortDirection) + :this(columnName,sortDirection,typeof(System.String),false){ + } + + + public SortColumn(string columnName, ListSortDirection sortDirection, Type type,bool caseSensitive ):base (columnName,type) + { + this.caseSensitive = caseSensitive; + this.sortDirection = sortDirection; + } + + #region properties + + public ListSortDirection SortDirection {get;set;} + + + public bool CaseSensitive {get;private set;} + + + #endregion + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Collections.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Collections.cs new file mode 100644 index 0000000000..b7726c813c --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Collections.cs @@ -0,0 +1,117 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 21.05.2013 + * Time: 20:03 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Globalization; +using System.Linq; + +using ICSharpCode.Reporting.BaseClasses; +using ICSharpCode.Reporting.Items; + +namespace ICSharpCode.Reporting +{ + /// + /// Description of Collections. + /// + + public class ColumnCollection: Collection{ + + public ColumnCollection() + { + } + + public AbstractColumn Find (string columnName) + { + if (String.IsNullOrEmpty(columnName)) { + throw new ArgumentNullException("columnName"); + } + + return this.FirstOrDefault(x => 0 == String.Compare(x.ColumnName,columnName,true,CultureInfo.InvariantCulture)); + } + + + public void AddRange (IEnumerable items) + { + foreach (AbstractColumn item in items){ + this.Add(item); + } + } + + + /// + /// The Culture is used for direct String Comparison + /// + + public static CultureInfo Culture + { + get { return CultureInfo.CurrentCulture;} + } + } + + + + public class SortColumnCollection: ColumnCollection + { + public SortColumnCollection() + { + } + + public new AbstractColumn Find (string columnName) + { + if (String.IsNullOrEmpty(columnName)) { + throw new ArgumentNullException("columnName"); + } + + return this.FirstOrDefault(x => 0 == String.Compare(x.ColumnName,columnName,true,CultureInfo.InvariantCulture)); + } + + + public void AddRange (IEnumerable items) + { + foreach (SortColumn item in items){ + this.Add(item); + } + } + } + + + public class GroupColumnCollection: SortColumnCollection + { + public GroupColumnCollection() + { + } + + public new AbstractColumn Find (string columnName) + { + if (String.IsNullOrEmpty(columnName)) { + throw new ArgumentNullException("columnName"); + } + + return this.FirstOrDefault(x => 0 == String.Compare(x.ColumnName,columnName,true,CultureInfo.InvariantCulture)); + } + } + + + public class ReportItemCollection : Collection + { + + // Trick to get the inner list as List (InnerList always has that type because we only use + // the parameterless constructor on Collection) + + private List InnerList { + get { return (List)base.Items; } + } + + private void Sort(IComparer comparer) + { + InnerList.Sort(comparer); + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Configuration/AssemblyInfo.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Configuration/AssemblyInfo.cs new file mode 100644 index 0000000000..e8c10361d9 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Configuration/AssemblyInfo.cs @@ -0,0 +1,14 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 16.03.2013 + * Time: 20:24 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System.Security; + +[assembly: SecurityRules(SecurityRuleSet.Level1)] + +[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ICSharpCode.Reporting.Test")] +[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ICSharpCode.Reports.Addin")] \ No newline at end of file diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataManager/Listhandling/CollectionSource.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataManager/Listhandling/CollectionSource.cs new file mode 100644 index 0000000000..91c1592653 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataManager/Listhandling/CollectionSource.cs @@ -0,0 +1,406 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 21.05.2013 + * Time: 20:09 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Globalization; +using System.Linq; +using System.Reflection; + +using ICSharpCode.Reporting.BaseClasses; +using ICSharpCode.Reporting.DataManager.Listhandling; +using ICSharpCode.Reporting.DataSource; +using ICSharpCode.Reporting.DataSource.Comparer; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Interfaces.Data; +using ICSharpCode.Reporting.Items; + +namespace ICSharpCode.Reporting.DataManager.Listhandling +{ + /// + /// Description of CollectionHandling. + /// + internal class CollectionSource:IDataViewHandling + { + + private PropertyDescriptorCollection listProperties; + private DataCollection baseList; + private ReportSettings reportSettings; + private Type itemType; + + public CollectionSource(IList list,ReportSettings reportSettings) + { + + if (list.Count > 0) { + itemType = list[0].GetType(); + this.baseList = new DataCollection (itemType); + this.baseList.AddRange(list); + } + this.reportSettings = reportSettings; + this.listProperties = this.baseList.GetItemProperties(null); + IndexList = new IndexList(); + } + + public int Count + { + get { + return this.baseList.Count; + } + } + + public Collection AvailableFields { + get { + var availableFields = new Collection(); + foreach (PropertyDescriptor p in this.listProperties){ + availableFields.Add (new AbstractColumn(p.Name,p.PropertyType)); + } + return availableFields; + } + } + + public object Current { + get { + return baseList[((BaseComparer)IndexList[CurrentPosition]).ListIndex]; + } + } + + +// public object CurrentFromPosition(int pos) +// { + // BaseComparer bc = GetComparer(value); +// Current = baseList[bc.ListIndex]; +// return baseList[((BaseComparer)IndexList[CurrentPosition]).ListIndex]; +// } + + + public int CurrentPosition { + + get { + return IndexList.CurrentPosition; + } + set { + if ((value > -1)|| (value > this.IndexList.Count)){ + this.IndexList.CurrentPosition = value; + } + +// BaseComparer bc = GetComparer(value); +// Current = baseList[bc.ListIndex]; + +// current = this.baseList[((BaseComparer)IndexList[value]).ListIndex]; + } + } + + + public bool MoveNext() + { + this.IndexList.CurrentPosition ++; + return this.IndexList.CurrentPosition a.ObjectArray[0]); + var x = sorted.GroupBy(a => a.ObjectArray[0]); + + Console.WriteLine("GroupBy()"); + foreach (var element in x) { + Console.WriteLine("{0} - {1} ",element.Key.ToString(),element is BaseComparer); + foreach (var xx in element) { + Console.WriteLine("...{0}",((BaseComparer)xx).ObjectArray[0].ToString()); + } + } + + Console.WriteLine("--------------- "); + + var aa = BuildGroup_1(unsortedList,reportSettings.GroupColumnCollection); +// ShowIndexList(IndexList); + } + + + private Dictionary BuildGroup_1 (IndexList list,GroupColumnCollection groups) { + var dictionary = new Dictionary(); + PropertyDescriptor[] groupProperties = BuildSortProperties (groups); + foreach (var element in list) { + string groupValue = ExtractValue (element,groupProperties); + if (!dictionary.ContainsKey(groupValue)) { + dictionary[groupValue] = new IndexList(); + } + + dictionary[groupValue].Add(element); + } + + Console.WriteLine("Dictonary "); + foreach (var el in dictionary.Values) { + Console.WriteLine(el.Count.ToString()); + foreach (var element in el) { + Console.WriteLine("-- {0}",element.ToString()); + } + } + return dictionary; + } + + + private IndexList BuildGroup (IndexList source,GroupColumnCollection groups) + { + string compareValue = String.Empty; + var idlist = new IndexList(); + + PropertyDescriptor[] groupProperties = BuildSortProperties (groups); + + GroupComparer groupComparer = null; + + foreach (BaseComparer element in source) { + var groupValue = ExtractValue(element,groupProperties); +// var query2 = idlist.FirstOrDefault( s => ((GroupComparer)s).ObjectArray[0] == groupValue) as GroupComparer; +// if (query2 == null) { +// groupComparer = CreateGroupHeader(element); +// idlist.Add(groupComparer); +// } else { +// Console.WriteLine("xx"); +// } + if (compareValue != groupValue) { + groupComparer = CreateGroupHeader(element); + idlist.Add(groupComparer); + } + groupComparer.IndexList.Add(element); + + compareValue = groupValue; + } + ShowGrouping(ref idlist); + return idlist; + } + + + void ShowGrouping(ref IndexList idlist) + { + Console.WriteLine("----ShowGrouping---"); + foreach (GroupComparer el in idlist) { + Console.WriteLine("{0}", el.ToString()); + if (el.IndexList.Any()) { + foreach (var element in el.IndexList) { + Console.WriteLine("--{0}", element.ToString()); + } + } + } + } + + + string ExtractValue(BaseComparer element,PropertyDescriptor[] groupProperties) + { + var rowItem = baseList[element.ListIndex]; + var values = FillComparer(groupProperties, rowItem); +// return element.ObjectArray[0].ToString(); + return values[0].ToString(); + } + + + static GroupComparer CreateGroupHeader (BaseComparer sc) + { + var gc = new GroupComparer(sc.ColumnCollection,sc.ListIndex,sc.ObjectArray); + gc.IndexList = new IndexList(); + return gc; + } + + #endregion + + #region BuildIndexList + + IndexList BuildSortIndex(Collection sortColumnsCollection) + { + + IndexList indexList = BuildIndexInternal(sortColumnsCollection); + + if (indexList[0].ObjectArray.GetLength(0) == 1) { + + IEnumerable sortedList = GenericSorter (indexList); + indexList.Clear(); + indexList.AddRange(sortedList); + } + else { + indexList.Sort(); + } + return indexList; + } + + + + IndexList BuildIndexInternal(Collection sortColumnsCollection) + { + var indexList = new IndexList(); + PropertyDescriptor[] sortProperties = BuildSortProperties(sortColumnsCollection); + for (int rowIndex = 0; rowIndex < this.baseList.Count; rowIndex++) { + var rowItem = this.baseList[rowIndex]; + var values = FillComparer(sortProperties, rowItem); + indexList.Add(new SortComparer(sortColumnsCollection, rowIndex, values)); + } + return indexList; + } + + #endregion + + #region Sorting delegates + + public void Sort() + { + if ((this.reportSettings.SortColumnsCollection != null)) { + if (this.reportSettings.SortColumnsCollection.Count > 0) { + IndexList = this.BuildSortIndex (reportSettings.SortColumnsCollection); + } else { + IndexList = this.BuildIndexInternal(reportSettings.SortColumnsCollection); + } + } + } + + static IEnumerable GenericSorter (List list) + { + + List sortedList = null; + ListSortDirection sortDirection = GetSortDirection(list); + + sortedList = sortDirection == ListSortDirection.Ascending ? list.AsQueryable().AscendingOrder().ToList() : list.AsQueryable().DescendingOrder().ToList(); + return sortedList; + } + + + static ListSortDirection GetSortDirection(List list) + { + BaseComparer bc = list[0]; + var sortColumn = bc.ColumnCollection[0] as SortColumn; + ListSortDirection sd = sortColumn.SortDirection; + return sd; + } + + + Object[] FillComparer(PropertyDescriptor[] sortProperties, object rowItem) + { + object[] values = new object[sortProperties.Length]; + for (int criteriaIndex = 0; criteriaIndex < sortProperties.Length; criteriaIndex++) { + object value = sortProperties[criteriaIndex].GetValue(rowItem); + if (value != null && value != DBNull.Value) { + if (!(value is IComparable)) { + throw new InvalidOperationException("ReportDataSource:BuildSortArray - > This type doesn't support IComparable." + value.ToString()); + } + values[criteriaIndex] = value; + } + } + return values; + } + + private PropertyDescriptor[] BuildSortProperties (Collection sortColumnCollection) + { + var sortProperties = new PropertyDescriptor[sortColumnCollection.Count]; + var descriptorCollection = this.baseList.GetItemProperties(null); + + for (var criteriaIndex = 0; criteriaIndex < sortColumnCollection.Count; criteriaIndex++){ + var descriptor = descriptorCollection.Find (sortColumnCollection[criteriaIndex].ColumnName,true); + + if (descriptor == null){ + throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, + "Die Liste enthält keine Spalte [{0}].", + sortColumnCollection[criteriaIndex].ColumnName)); + } + sortProperties[criteriaIndex] = descriptor; + } + return sortProperties; + } + + + BaseComparer GetComparer(int position) + { + var bc = (BaseComparer)IndexList[position]; + return bc; + } + + #endregion + + #region Debug Code + + private static void ShowIndexList (IndexList list) + { + foreach (BaseComparer element in list) { + var groupComparer = element as GroupComparer; + if (groupComparer == null) continue; + if (groupComparer.IndexList.Any()) { + var ss = String.Format("{0} with {1} Children",element.ObjectArray[0],groupComparer.IndexList.Count); + System.Console.WriteLine(ss); + foreach (BaseComparer c in groupComparer.IndexList) { + Console.WriteLine("---- {0}",c.ObjectArray[0]); + } + } + } + } + + static string WrongColumnName(string propertyName) + { + return String.Format(CultureInfo.InvariantCulture, "Error : <{0}> missing!", propertyName); + } + + #endregion + + + public void Reset() + { + throw new NotImplementedException(); + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataManager/Listhandling/IndexList.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataManager/Listhandling/IndexList.cs new file mode 100644 index 0000000000..4c39eb05dc --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataManager/Listhandling/IndexList.cs @@ -0,0 +1,27 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 21.05.2013 + * Time: 20:54 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using ICSharpCode.Reporting.DataSource.Comparer; + +namespace ICSharpCode.Reporting.DataManager.Listhandling +{ + /// + /// Description of IndexList. + /// + public class IndexList :List + { + + public IndexList() + { + } + + public int CurrentPosition {get;set;} + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/Comparer/BaseComparer.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/Comparer/BaseComparer.cs new file mode 100644 index 0000000000..7186a333d5 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/Comparer/BaseComparer.cs @@ -0,0 +1,92 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 21.05.2013 + * Time: 20:57 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.ObjectModel; +using ICSharpCode.Reporting.BaseClasses; + +namespace ICSharpCode.Reporting.DataSource.Comparer +{ + /// + /// Description of BaseComparer. + /// + public class BaseComparer : IComparable { + + private int listIndex; + private object[] objectArray; + + /// + /// Default constructor - initializes all fields to default values + /// + + public BaseComparer(Collection columnCollection , int listIndex, object[] values) { + this.ColumnCollection = columnCollection; + this.listIndex = listIndex; + this.objectArray = values; + } + + /// + /// Interface method from IComparable + /// + /// + /// Interface method from IComparable + /// + /// + /// a + public virtual int CompareTo(object obj) { + return 0; + } + + /// + /// Ausgeben der Werte als Pseudo-CSV + /// + public override string ToString() + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + builder.AppendFormat("{0};", this.listIndex); + foreach (object value in objectArray) + { + if (value == null || value == DBNull.Value) + { + builder.AppendFormat(""); + } + else if (value.GetType() == typeof(string)) + { + builder.AppendFormat("\"{0}\"", (string)value); + } + else if (value is IFormattable) + { + builder.AppendFormat("{0}", ((IFormattable)value).ToString("g", System.Globalization.CultureInfo.InvariantCulture)); + } + else + { + builder.AppendFormat("[{0}]", value.ToString()); + } + builder.Append(';'); + } + return builder.ToString(); + } + + + public int ListIndex { + get { + return listIndex; + } + } + + public object[] ObjectArray { + get { + return objectArray; + } + } + + + public Collection ColumnCollection {get;private set;} + + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/Comparer/GroupComparer.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/Comparer/GroupComparer.cs new file mode 100644 index 0000000000..77c011c4cd --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/Comparer/GroupComparer.cs @@ -0,0 +1,29 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 24.05.2013 + * Time: 20:17 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.ObjectModel; +using ICSharpCode.Reporting.BaseClasses; +using ICSharpCode.Reporting.DataManager.Listhandling; + +namespace ICSharpCode.Reporting.DataSource.Comparer +{ + /// + /// Description of GroupComparer. + /// + public class GroupComparer :SortComparer + { + + public GroupComparer (Collection owner, int listIndex, object[] values):base(owner,listIndex,values) + { + IndexList = new IndexList(); + } + + public IndexList IndexList {get;set;} + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/Comparer/SortComparer.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/Comparer/SortComparer.cs new file mode 100644 index 0000000000..d32cf61ac7 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/Comparer/SortComparer.cs @@ -0,0 +1,104 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 22.05.2013 + * Time: 20:06 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Globalization; + +using ICSharpCode.Reporting.BaseClasses; + +namespace ICSharpCode.Reporting.DataSource.Comparer +{ + /// + /// Description of SortComparer. + /// + public class SortComparer : BaseComparer { + + public SortComparer(Collection owner, int listIndex, object[] values):base(owner,listIndex,values) + { + } + + + internal int CompareTo(SortComparer value) + { + // we shouldn't get to this point + if (value == null) + throw new ArgumentNullException("value"); + + if (value.ObjectArray.Length != base.ObjectArray.Length) + throw new InvalidOperationException(); + + int compare = 0; + + for (int index = 0; index < base.ObjectArray.Length; index++) + { + object leftValue = base.ObjectArray[index]; + + object rightValue = value.ObjectArray[index]; + + // Indizes sind hier deckungsgleich + + SortColumn sortColumn = (SortColumn)base.ColumnCollection[index]; + + bool descending = (sortColumn.SortDirection == ListSortDirection.Descending); + + // null means equl + if (leftValue == null || leftValue == System.DBNull.Value) + { + if (rightValue != null && rightValue != System.DBNull.Value) + { + return (descending) ? 1 : -1; + } + + // Beide Null + continue; + } + + if (rightValue == null || rightValue == System.DBNull.Value) + { + return (descending) ? -1 : 1; + } + + + if (leftValue.GetType() != rightValue.GetType()){ + string s = String.Format(CultureInfo.CurrentCulture, + "{0} {1} {2}",this.GetType().ToString(), + leftValue.GetType().ToString(), + rightValue.GetType().ToString()); + + throw new ArgumentException(s); + } + if (leftValue.GetType() == typeof(string)) + { + compare = String.Compare((string)leftValue, (string)rightValue, + !sortColumn.CaseSensitive, CultureInfo.CurrentCulture); + } + else + { + compare = ((IComparable)leftValue).CompareTo(rightValue); + } + + // Sind ungleich, tauschen je nach Richtung + if (compare != 0) + { + return (descending) ? -compare : compare; + } + } + + // Gleich Werte, dann Index bercksichtigen + return this.ListIndex.CompareTo(value.ListIndex); + } + public override int CompareTo(object obj) { + base.CompareTo(obj); + return this.CompareTo((SortComparer)obj); + } + + + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/Comparer/SortExtension.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/Comparer/SortExtension.cs new file mode 100644 index 0000000000..831c2dcdd1 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/Comparer/SortExtension.cs @@ -0,0 +1,32 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 23.05.2013 + * Time: 19:51 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Linq; +namespace ICSharpCode.Reporting.DataSource.Comparer +{ + /// + /// Description of SortExtension. + /// + internal static class SortExtension + { + + public static IOrderedQueryable AscendingOrder(this IQueryable source ) + { + + return source.OrderBy(x => x.ObjectArray[0]); + } + + public static IOrderedQueryable DescendingOrder(this IQueryable source ) + { + + return source.OrderByDescending(x => x.ObjectArray[0]); + } + } + +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/DataCollection.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/DataCollection.cs new file mode 100644 index 0000000000..aca077e9f2 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/DataCollection.cs @@ -0,0 +1,205 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 20.05.2013 + * Time: 17:55 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Diagnostics; +using System.Linq; +using System.Reflection; + +namespace ICSharpCode.Reporting.DataSource +{ + /// + /// Description of DataCollection. + /// + internal class DataCollection : IList,ITypedList + { + Collection list = new Collection(); + Type elementType; + + public DataCollection(Type elementType) + { + this.elementType = elementType; + } + + public T this[int index] + { + get { + return list[index]; + } + set { + T oldValue = list[index]; + if (!object.Equals(oldValue, value)) { + list[index] = value; + } + } + } + + public int Count + { + [DebuggerStepThrough] + get { + return list.Count; + } + } + + public bool IsReadOnly + { + get { + return false; + } + } + + public int IndexOf(T item) + { + return list.IndexOf(item); + } + + public void Insert(int index, T item) + { + list.Insert(index, item); + } + + public void RemoveAt(int index) + { + list.RemoveAt(index); + } + + public void Add(T item) + { + list.Add(item); + } + + + public void AddRange(IList range) + { + foreach(T t in range) { + Add(t); + } + } + + + public void Clear(){ + list = new Collection(); + } + + public bool Contains(T item) + { + return list.Contains(item); + } + + public void CopyTo(T[] array, int arrayIndex) + { + list.CopyTo(array, arrayIndex); + } + + public bool Remove(T item) + { + if (list.Remove(item)) { + return true; + } + return false; + } + + #region ITypedList Member + + public PropertyDescriptorCollection GetItemProperties(PropertyDescriptor[] listAccessors){ + if (listAccessors != null && listAccessors.Length > 0){ + var t = this.elementType; + + t = listAccessors.Aggregate(t, + (current, pd) => (Type) PropertyTypeHash.Instance[current, pd.Name]); + + // if t is null an empty list will be generated + return ExtendedTypeDescriptor.GetProperties(t); + } + return ExtendedTypeDescriptor.GetProperties(elementType); + } + + + public string GetListName(PropertyDescriptor[] listAccessors){ + return elementType.Name; + } + + public static Type GetElementType(IList list, Type parentType, string propertyName) + { + DataCollection al = null; + object element = null; + al = CheckForArrayList(list); + if (al == null) + { + if (list.Count > 0) + { + element = list[0]; + } + } + if (al == null && element == null) + { + var pi = parentType.GetProperty(propertyName); + if (pi != null) + { + object parentObject = null; + try + { + parentObject = Activator.CreateInstance(parentType); + } + catch(Exception) {} + if (parentObject != null) + { + list = pi.GetValue(parentObject, null) as IList; + al = CheckForArrayList(list); + } + } + } + if (al != null) + { + return al.elementType; + } + else if (element != null) + { + return element.GetType(); + } + return null; + } + + private static DataCollection CheckForArrayList(object l) + { + var list = l as IList; + if (list == null) + return null; + if (list.GetType().FullName == "System.Collections.ArrayList+ReadOnlyArrayList") + { + var fi = list.GetType().GetField("_list", BindingFlags.NonPublic | BindingFlags.Instance); + if (fi != null) + { + list = (IList) fi.GetValue(list); + } + } +// ReSharper disable SuspiciousTypeConversion.Global + return list as DataCollection; +// ReSharper restore SuspiciousTypeConversion.Global + } + #endregion + + + [DebuggerStepThrough] + public IEnumerator GetEnumerator() + { + return list.GetEnumerator(); + } + + [DebuggerStepThrough] + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() + { + return list.GetEnumerator(); + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/ExtendedPropertyDescriptor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/ExtendedPropertyDescriptor.cs new file mode 100644 index 0000000000..3ce56dff2e --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/ExtendedPropertyDescriptor.cs @@ -0,0 +1,96 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 20.05.2013 + * Time: 18:05 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections; +using System.ComponentModel; +using System.Reflection; + +namespace ICSharpCode.Reporting.DataSource +{ + /// + /// Description of ExtendedPropertyDescriptor. + /// + internal class ExtendedPropertyDescriptor : PropertyDescriptor + { + + Type componentType; + Type propertyType; + PropertyInfo prop; + + public ExtendedPropertyDescriptor (string name, Type componentType, Type propertyType) + : base (name, null) + { + this.componentType = componentType; + this.propertyType = propertyType; + } + + + public override object GetValue (object component) + { + var x = component.GetType(); + if (!componentType.IsAssignableFrom(component.GetType())){ + return null; + } + + if (prop == null) { + prop = componentType.GetProperty (Name); + } + + object obj = prop.GetValue (component, null); + if (obj != null) { + if (obj is IList){ + PropertyTypeHash.Instance[componentType, Name] = DataCollection.GetElementType((IList)obj, componentType, Name); + } + } + return obj; + } + + + public override void SetValue(object component, object value) + { + if (IsReadOnly){ + return; + } + if (prop == null){ + prop = componentType.GetProperty (Name); + } + prop.SetValue (component, value, null); + } + + public override void ResetValue(object component) + { + return; + } + + public override bool CanResetValue(object component) + { + return false; + } + + public override bool ShouldSerializeValue(object component) + { + return false; + } + + public override Type ComponentType + { + get { return componentType; } + } + + public override bool IsReadOnly + { + get { return false; } + } + + public override Type PropertyType + { + get { return propertyType; } + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/ExtendedTypeDescriptor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/ExtendedTypeDescriptor.cs new file mode 100644 index 0000000000..5a19164ba3 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/ExtendedTypeDescriptor.cs @@ -0,0 +1,65 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 20.05.2013 + * Time: 17:59 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections; +using System.ComponentModel; +using System.Reflection; + +namespace ICSharpCode.Reporting.DataSource +{ + /// + /// Description of ExtendedTypeDescriptor. + /// + internal class ExtendedTypeDescriptor + { + private static Hashtable collections = new Hashtable(); + + private static bool IsAllowedProperty(string name) + { + return true; // alle erlaubt + } + + + public static PropertyDescriptorCollection GetProperties(Type memberType) + { + if (memberType == null) + return PropertyDescriptorCollection.Empty; + + PropertyDescriptorCollection pdc; + if ((pdc = (PropertyDescriptorCollection) collections[memberType]) != null) + return (pdc); + + PropertyInfo[] allProps = memberType.GetProperties(); + int l = allProps.Length; + for (int i = 0; i < allProps.Length; i++) + { + PropertyInfo pi = allProps[i]; + if (!IsAllowedProperty(pi.Name)) + { + allProps[i] = null; + l--; + } + } + + PropertyDescriptor[] descriptors = new PropertyDescriptor[l]; + + int j = 0; + foreach(PropertyInfo pinfo in allProps) + { + if (pinfo != null) + { + descriptors[j++] = new ExtendedPropertyDescriptor(pinfo.Name, memberType, pinfo.PropertyType); + } + } + PropertyDescriptorCollection result = new PropertyDescriptorCollection(descriptors); + collections.Add(memberType, result); + return result; + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/PropertyTypeHash.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/PropertyTypeHash.cs new file mode 100644 index 0000000000..e0369d5293 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/PropertyTypeHash.cs @@ -0,0 +1,53 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 20.05.2013 + * Time: 18:02 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections; + +namespace ICSharpCode.Reporting.DataSource +{ + /// + /// Description of PropertyTypeHash. + /// + internal class PropertyTypeHash + { + static PropertyTypeHash instance = new PropertyTypeHash(); + + static public PropertyTypeHash Instance + { + get { return instance; } + } + + Hashtable types = new Hashtable(); + + private static string MakeIndex(Type t, string name) + { + return t.FullName + '.' + name; + } + + public object this[Type type, string fieldName] + { + get + { + return types[MakeIndex(type, fieldName)]; + } + set + { + if (value == null) + return; + string key = MakeIndex(type, fieldName); + if (!types.Contains(key)) + types.Add(key, value); + } + } + + private PropertyTypeHash() + { + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs new file mode 100644 index 0000000000..39eef69ea2 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs @@ -0,0 +1,176 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 05.05.2013 + * Time: 19:42 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Documents; +using System.Windows.Media; + +using ICSharpCode.Reporting.Items; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; +using Brush = System.Windows.Media.Brush; +using FontFamily = System.Windows.Media.FontFamily; +using Image = System.Windows.Controls.Image; +using Pen = System.Windows.Media.Pen; +using Size = System.Windows.Size; + +namespace ICSharpCode.Reporting.ExportRenderer +{ + /// + /// Description of FixedDocumentCreator. + /// + internal class FixedDocumentCreator + { + BrushConverter brushConverter ; + ReportSettings reportSettings; + + public FixedDocumentCreator(ReportSettings reportSettings) + { + if (reportSettings == null) + throw new ArgumentNullException("reportSettings"); + this.reportSettings = reportSettings; + Console.WriteLine("FixedDocumentCreator()"); + brushConverter = new BrushConverter(); + } + + + public UIElement CreateContainer(ExportContainer container) + { +// http://tech.pro/tutorial/736/wpf-tutorial-creating-a-custom-panel-control + + var canvas = CreateCanvas(container); +// canvas.Measure(new Size(reportSettings.PageSize.Width,reportSettings.PageSize.Height)); + + var size = new Size(container.DesiredSize.Width,container.DesiredSize.Height); + + 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.UpdateLayout(); + + return canvas; + + } + + public TextBlock CreateTextBlock(ExportText exportText) + { + var textBlock = new TextBlock(); + textBlock.Text = exportText.Text; + textBlock.Foreground = ConvertBrush(exportText.ForeColor); + SetFont(textBlock,exportText); + textBlock.TextWrapping = TextWrapping.WrapWithOverflow; + +// string [] inlines = exportText.Text.Split(System.Environment.NewLine.ToCharArray()); + //string [] inlines = "jmb,.n,knn-.n.-n.n-.n.n.-"; +// for (int i = 0; i < inlines.Length; i++) { +// if (inlines[i].Length > 0) { +// textBlock.Inlines.Add(new Run(inlines[i])); + //// textBlock.Inlines.Add(new LineBreak()); +// } +// } +// var li = textBlock.Inlines.LastInline; +// textBlock.Inlines.Remove(li); +// SetDimension(textBlock,exportText.StyleDecorator); +// textBlock.Background = ConvertBrush(exportText.StyleDecorator.BackColor); +// SetContendAlignment(textBlock,exportText.StyleDecorator); + SetPosition(textBlock,exportText); + SetDimension(textBlock,exportText); + textBlock.Background = ConvertBrush(exportText.BackColor); + return textBlock; + } + + + Canvas CreateCanvas(ExportContainer container) + { + var canvas = new Canvas(); + SetDimension(canvas, container); + SetPosition(canvas,container); + canvas.Background = ConvertBrush(System.Drawing.Color.Red); + return canvas; + } + + + static void SetDimension (FrameworkElement element,ExportColumn exportColumn) + { + element.Width = exportColumn.DesiredSize.Width; + element.Height = exportColumn.DesiredSize.Height; + } + + + static void SetPosition (FrameworkElement element,ExportColumn exportColumn) { + FixedPage.SetLeft(element,exportColumn.Location.X ); + FixedPage.SetTop(element,exportColumn.Location.Y); + } + + void SetFont(TextBlock textBlock,ExportText exportText) + { + textBlock.FontFamily = new FontFamily(exportText.Font.FontFamily.Name); + + textBlock.FontSize = exportText.Font.Size * 96/72; + + if (exportText.Font.Bold) { + textBlock.FontWeight = FontWeights.Bold; + } + if (exportText.Font.Underline) { + CreateUnderline(textBlock,exportText); + } + + if (exportText.Font.Italic) { + textBlock.FontStyle = System.Windows.FontStyles.Italic ; + } + if (exportText.Font.Strikeout) { + CreateStrikeout(textBlock,exportText); + } + } + + + void CreateStrikeout (TextBlock textBlock,ExportColumn exportColumn ) + { + var strikeOut = new TextDecoration(); + strikeOut.Location = TextDecorationLocation.Strikethrough; + + Pen p = CreateWpfPen(exportColumn); + strikeOut.Pen = p ; + strikeOut.PenThicknessUnit = TextDecorationUnit.FontRecommended; + textBlock.TextDecorations.Add(strikeOut); + } + + + void CreateUnderline(TextBlock textBlock,ExportColumn exportColumn) + { + var underLine = new TextDecoration(); + Pen p = CreateWpfPen(exportColumn); + underLine.Pen = p ; + underLine.PenThicknessUnit = TextDecorationUnit.FontRecommended; + textBlock.TextDecorations.Add(underLine); + } + + + Pen CreateWpfPen(ExportColumn exportColumn) + { + var myPen = new Pen(); + myPen.Brush = ConvertBrush(exportColumn.ForeColor); + myPen.Thickness = 1.5; + return myPen; + } + + + Brush ConvertBrush(System.Drawing.Color color) + { + if (brushConverter.IsValid(color.Name)){ + return brushConverter.ConvertFromString(color.Name) as SolidColorBrush; + } else{ + return brushConverter.ConvertFromString("Black") as SolidColorBrush; + } + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/BaseExporter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/BaseExporter.cs new file mode 100644 index 0000000000..484a53f7ac --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/BaseExporter.cs @@ -0,0 +1,36 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 28.04.2013 + * Time: 18:59 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.ObjectModel; +using ICSharpCode.Reporting.Interfaces.Export; + +namespace ICSharpCode.Reporting.Exporter +{ + /// + /// Description of Baseexport. + /// + public class BaseExporter + { + public BaseExporter(Collection pages) + { + if (pages == null) { + throw new ArgumentException("pages"); + } + + Pages = pages; + } + + public virtual void Run () { + + } + + + protected Collection Pages {get; set;} + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs new file mode 100644 index 0000000000..a1b59f5e1b --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs @@ -0,0 +1,59 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 18.04.2013 + * Time: 20:06 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; + +using ICSharpCode.Reporting.Exporter.Visitors; +using ICSharpCode.Reporting.Interfaces.Export; + +namespace ICSharpCode.Reporting.Exporter +{ + /// + /// Description of DebugExporter. + /// + public class DebugExporter:BaseExporter + { + private DebugVisitor visitor; + + public DebugExporter(Collection pages):base(pages) + { + visitor = new DebugVisitor(); + } + + + public override void Run () { + foreach (var page in Pages) { + ShowDebug(page); + } + } + + + void ShowDebug(IExportContainer container) + { + foreach (var item in container.ExportedItems) { + var exportContainer = item as IExportContainer; + var acceptor = item as IAcceptor; + if (exportContainer != null) { + if (acceptor != null) { + Console.WriteLine("--container--"); + acceptor.Accept(visitor); + } + ShowDebug(item as IExportContainer); + } else { + if (acceptor != null) { + Console.WriteLine("..Item..."); + acceptor.Accept(visitor); + } + } + } + } + + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/AbstractVisitor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/AbstractVisitor.cs new file mode 100644 index 0000000000..6be4ce0ada --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/AbstractVisitor.cs @@ -0,0 +1,24 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 28.04.2013 + * Time: 19:49 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; + +namespace ICSharpCode.Reporting.Exporter.Visitors +{ + /// + /// Description of AbstractVisitor. + /// + public abstract class AbstractVisitor : IVisitor + { + public abstract void Visit(ExportColumn exportColumn); + public abstract void Visit(ExportContainer exportColumn); + public abstract void Visit(ExportText exportColumn); + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/DebugVisitor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/DebugVisitor.cs new file mode 100644 index 0000000000..34af5a218d --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/DebugVisitor.cs @@ -0,0 +1,41 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 18.04.2013 + * Time: 20:09 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; + +namespace ICSharpCode.Reporting.Exporter.Visitors +{ + +// http://www.remondo.net/visitor-pattern-example-csharp/ +// http://www.codeproject.com/Articles/42240/Visitor-Design-Pattern +// http://www.remondo.net/strategy-pattern-example-csharp/ + + + public class DebugVisitor : AbstractVisitor + { + public override void Visit(ExportColumn exportColumn) + { + Console.WriteLine("Visit ExportColumn {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.Location); + } + + + + public override void Visit(ExportContainer exportColumn) + { + Console.WriteLine("Visit ExportContainer {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.Location); + } + + public override void Visit(ExportText exportColumn) + { + Console.WriteLine("Visit ExportText {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.Location); + } + } + +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/IAcceptor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/IAcceptor.cs new file mode 100644 index 0000000000..03f227975f --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/IAcceptor.cs @@ -0,0 +1,20 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 20.04.2013 + * Time: 18:30 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; + +namespace ICSharpCode.Reporting.Exporter.Visitors +{ + /// + /// Description of IAcceptor. + /// + public interface IAcceptor + { + void Accept(IVisitor visitor); + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/IVisitor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/IVisitor.cs new file mode 100644 index 0000000000..d0c775add7 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/IVisitor.cs @@ -0,0 +1,21 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 18.04.2013 + * Time: 20:09 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; + +namespace ICSharpCode.Reporting.Exporter.Visitors +{ + public interface IVisitor + { + void Visit(ExportColumn exportColumn); + void Visit(ExportContainer exportColumn); + void Visit(ExportText exportColumn); + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/WpfVisitor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/WpfVisitor.cs new file mode 100644 index 0000000000..6b5714109d --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/WpfVisitor.cs @@ -0,0 +1,63 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 06.05.2013 + * Time: 20:10 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Documents; +using System.Windows.Media; + +using ICSharpCode.Reporting.ExportRenderer; +using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.Items; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; + +namespace ICSharpCode.Reporting.Exporter.Visitors +{ + /// + /// Description of WpfVisitor. + /// + internal class WpfVisitor: AbstractVisitor + { + private readonly FixedDocumentCreator documentCreator; + private readonly ReportSettings reportSettings; + + public WpfVisitor(ReportSettings reportSettings) + { + if (reportSettings == null) + throw new ArgumentNullException("reportSettings"); + this.reportSettings = reportSettings; + documentCreator = new FixedDocumentCreator(reportSettings); + } + + public override void Visit(ExportColumn exportColumn) + { +// Console.WriteLine("Wpf-Visit ExportColumn {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.Location); + } + + + public override void Visit(ExportContainer exportColumn) + { +// Console.WriteLine("Wpf-Visit ExportContainer {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.Location); + var canvas = documentCreator.CreateContainer(exportColumn); + UIElement = canvas; + } + + + public override void Visit(ExportText exportColumn) + { +// Console.WriteLine("Wpf-Visit ExportText {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.DesiredSize); + var textBlock = documentCreator.CreateTextBlock(exportColumn); + UIElement = textBlock; + } + + + public UIElement UIElement {get; private set;} + + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs new file mode 100644 index 0000000000..173308e507 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs @@ -0,0 +1,103 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 28.04.2013 + * Time: 18:01 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.ObjectModel; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Documents; + +using ICSharpCode.Reporting.Exporter.Visitors; +using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.Items; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; + +namespace ICSharpCode.Reporting.Exporter +{ + /// + /// Description of PrintExporter. + /// + public class WpfExporter:BaseExporter + { + private WpfVisitor visitor; + private ReportSettings reportSettings; + + public WpfExporter(ReportSettings reportSettings,Collection pages):base(pages) + { + if (reportSettings == null) + throw new ArgumentNullException("reportSettings"); + this.reportSettings = reportSettings; + visitor = new WpfVisitor(reportSettings); + } + + + public override void Run () { + InitFixedPage(); + foreach (var page in Pages) { + InternalRun(page); + } + } + + + void InitFixedPage() + { + fixedPage = new FixedPage(); + fixedPage.Width = reportSettings.PageSize.Width; + fixedPage.Height = reportSettings.PageSize.Height; + } + + FixedPage fixedPage; + + public FixedPage FixedPage { + get { return fixedPage; } + } + + + void InternalRun(IExportContainer container) + { + Canvas canvas = null ; + foreach (var item in container.ExportedItems) { + var exportContainer = item as IExportContainer; + var acceptor = item as IAcceptor; + if (exportContainer != null) { + if (acceptor != null) { + acceptor.Accept(visitor); + canvas = (Canvas)visitor.UIElement; + fixedPage.Children.Add(canvas); + foreach (IAcceptor element in exportContainer.ExportedItems) { + element.Accept(visitor); + var ui = visitor.UIElement; + Canvas.SetLeft(ui,((IExportColumn)element).Location.X); + Canvas.SetTop(ui, ((IExportColumn)element).Location.Y); + canvas.Children.Add(ui); + } +// var size = new Size(exportContainer.DesiredSize.Width,exportContainer.DesiredSize.Height); +// canvas.Measure(size); +// canvas.Arrange(new Rect(new System.Windows.Point(exportContainer.Location.X,exportContainer.Location.Y),size )); +// canvas.UpdateLayout(); +// var exportArrange = exportContainer.GetArrangeStrategy(); +// exportArrange.Arrange(exportContainer); + } +// InternalRun(item as IExportContainer); + } else { + if (acceptor != null) { + Console.WriteLine("..Item..."); + 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); + } + } + } + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ExportColumnFactory.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ExportColumnFactory.cs new file mode 100644 index 0000000000..ac36ba42fa --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ExportColumnFactory.cs @@ -0,0 +1,32 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 09.04.2013 + * Time: 19:51 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using ICSharpCode.Reporting.BaseClasses; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.Items; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; + +namespace ICSharpCode.Reporting.Factories +{ + /// + /// Description of ExportColumnFactory. + /// + internal class ExportColumnFactory + { + public ExportColumnFactory() + { + } + + public static IExportColumn CreateItem (IPrintableObject item) { + var export = item.CreateExportColumn(); + return export; + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ReportCreatorFactory.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ReportCreatorFactory.cs new file mode 100644 index 0000000000..5cfe01ba9f --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ReportCreatorFactory.cs @@ -0,0 +1,46 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 01.06.2013 + * Time: 18:59 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using ICSharpCode.Reporting.Globals; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Items; +using ICSharpCode.Reporting.PageBuilder; + +namespace ICSharpCode.Reporting.Factories +{ + /// + /// Description of ReportCreatorFactory. + /// + internal class ReportCreatorFactory { + + public static IReportCreator ExporterFactory(IReportModel reportModel) + { + IReportCreator reportCreator = null; + switch (reportModel.ReportSettings.DataModel) { + case GlobalEnums.PushPullModel.FormSheet: + { + reportCreator = new FormPageBuilder(reportModel); + break; + } + + case GlobalEnums.PushPullModel.PullData: + { + break; + } + + case GlobalEnums.PushPullModel.PushData: + { + break; + } + + } + return reportCreator; + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/SectionFactory.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/SectionFactory.cs new file mode 100644 index 0000000000..84efdadced --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/SectionFactory.cs @@ -0,0 +1,30 @@ +/* + * 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 +{ + /// + /// Description of SectionFactory. + /// + internal sealed class SectionFactory + { + private SectionFactory () + { + + } + public static BaseSection Create(string sectionName) { + if (String.IsNullOrEmpty(sectionName)) { + throw new ArgumentException("sectionName"); + } + return new BaseSection(sectionName); + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/CreateGraphics.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/CreateGraphics.cs new file mode 100644 index 0000000000..e6885fa247 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/CreateGraphics.cs @@ -0,0 +1,28 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 24.04.2013 + * Time: 19:53 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Drawing; + +namespace ICSharpCode.Reporting.Globals +{ + /// + /// Description of CreateGraphics. + /// + public class CreateGraphics + { + public static Graphics FromSize (Size size){ + if (size == null) { + throw new ArgumentNullException("size"); + } + Bitmap bitmap = new Bitmap(size.Width,size.Height); + var graphics = Graphics.FromImage(bitmap); + return graphics; + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/GlobalEnums.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/GlobalEnums.cs new file mode 100644 index 0000000000..1df929de30 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/GlobalEnums.cs @@ -0,0 +1,50 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 17.03.2013 + * Time: 17:30 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; + +namespace ICSharpCode.Reporting.Globals +{ + /// + /// Description of GlobalEnums. + /// + public class GlobalEnums + { + public enum ReportSection { + ReportHeader, + ReportPageHeader, + ReportDetail, + ReportPageFooter, + ReportFooter + } + + ///Technics to get the data + /// Push : report get's a ready filld dataset or something tah implements IList + /// Pull : report has to fill data by themself + /// FormSheet : FormSheet report, just labels and images are allowed + /// + /// + public enum PushPullModel { + PushData, + PullData, + FormSheet + } + + + /// + /// FormSheet means a blank form with Labels, Lines and Checkboxes + /// DataReport handles all Reports with Data + /// + public enum ReportType { + FormSheet, + DataReport, + } + + + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/GlobalValues.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/GlobalValues.cs new file mode 100644 index 0000000000..11b5a7bfdb --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/GlobalValues.cs @@ -0,0 +1,42 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 17.03.2013 + * Time: 17:57 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Drawing; +namespace ICSharpCode.Reporting.Globals +{ + /// + /// Description of GlobalValues. + /// + public static class GlobalValues + { + public static string ReportExtension {get {return ".srd";}} + + public static string DefaultReportName {get { return "Report1";}} + + public static Size DefaultPageSize {get {return new Size(827,1169);}} + + public static string PlainFileName + { + get { + return DefaultReportName + ReportExtension; + } + } + + + public static Font DefaultFont + { + get { + return new Font("Microsoft Sans Serif", + 10, + FontStyle.Regular, + GraphicsUnit.Point); + } + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/MeasurementService.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/MeasurementService.cs new file mode 100644 index 0000000000..47dabbd838 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/MeasurementService.cs @@ -0,0 +1,44 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 30.04.2013 + * Time: 19:44 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Drawing; +using ICSharpCode.Reporting.Items; + +namespace ICSharpCode.Reporting.Globals +{ + /// + /// Description of MeasurementService. + /// + internal class MeasurementService + { + + public MeasurementService() + { + } + + public static Size Measure (ITextItem item,Graphics graphics) { + + if (!item.CanGrow) { + return item.Size; + } + if (!String.IsNullOrEmpty(item.Text)) { + SizeF size = graphics.MeasureString(item.Text.TrimEnd(), + item.Font, + item.Size.Width); + var i = (int)size.Height/item.Font.Height; + if (size.Height < item.Size.Height) { + return item.Size; + } + return new Size(item.Size.Width,(int)Math.Ceiling(size.Height)); + } + + return item.Size; + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Data/IDataViewHandling.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Data/IDataViewHandling.cs new file mode 100644 index 0000000000..9864be01fd --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Data/IDataViewHandling.cs @@ -0,0 +1,51 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 21.05.2013 + * Time: 20:35 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections; +using System.Collections.ObjectModel; + +using ICSharpCode.Reporting.BaseClasses; +using ICSharpCode.Reporting.DataManager.Listhandling; + +namespace ICSharpCode.Reporting.Interfaces.Data +{ + /// + /// Description of IDataViewHandling. + /// + public interface IDataViewHandling:IEnumerator{ + + void Sort (); + + void Group(); + + void Bind(); + +// void Fill (int position,ReportItemCollection collection); + + //rausnehmen +// void Fill (IDataItem item); + + void Fill(ReportItemCollection collection); + + IndexList IndexList {get;} + +// object CurrentFromPosition(int pos); + +// CurrentItemsCollection FillDataRow(); +// CurrentItemsCollection FillDataRow(int pos); + // + Collection AvailableFields {get;} + + int Count {get;} + + int CurrentPosition {get;set;} + +// IExpressionEvaluatorFacade ExpressionEvaluator {get;} + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportColumn.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportColumn.cs new file mode 100644 index 0000000000..8bed181a92 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportColumn.cs @@ -0,0 +1,27 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 08.04.2013 + * Time: 20:10 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Drawing; +using ICSharpCode.Reporting.Arrange; +using ICSharpCode.Reporting.BaseClasses; +using ICSharpCode.Reporting.Exporter; + +namespace ICSharpCode.Reporting.Interfaces.Export +{ + /// + /// Description of IExportColumn. + /// + public interface IExportColumn:IReportObject + { + IArrangeStrategy GetArrangeStrategy(); + Size DesiredSize {get;set;} + IExportColumn Parent {get;set;} + Rectangle DisplayRectangle {get;} + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportContainer.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportContainer.cs new file mode 100644 index 0000000000..ba7732a5b2 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportContainer.cs @@ -0,0 +1,23 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 12.04.2013 + * Time: 20:28 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; + +namespace ICSharpCode.Reporting.Interfaces.Export +{ + /// + /// Description of IExportContainer. + /// + public interface IExportContainer:IExportColumn + { + List ExportedItems {get;} + + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IPage.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IPage.cs new file mode 100644 index 0000000000..dbda99b25b --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IPage.cs @@ -0,0 +1,22 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 11.04.2013 + * Time: 19:58 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; + +namespace ICSharpCode.Reporting.Interfaces.Export +{ + /// + /// Description of IPage. + /// + public interface IPage:IExportContainer + { + bool IsFirstPage {get;set;} + IPageInfo PageInfo {get;} + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IPageInfo.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IPageInfo.cs new file mode 100644 index 0000000000..35d39a3fc6 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IPageInfo.cs @@ -0,0 +1,24 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 11.04.2013 + * Time: 19:59 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; + +namespace ICSharpCode.Reporting.Interfaces.Export +{ + /// + /// Description of IPageInfo. + /// + public interface IPageInfo + { + int PageNumber {get;set;} + int TotalPages {get;set;} + string ReportName {get;set;} + string ReportFileName {get;set;} + string ReportFolder {get;} + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IDataItem.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IDataItem.cs new file mode 100644 index 0000000000..77c34ff106 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IDataItem.cs @@ -0,0 +1,26 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 29.05.2013 + * Time: 20:10 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; + +namespace ICSharpCode.Reporting.Interfaces +{ + /// + /// Description of IDataItem. + /// + public interface IDataItem + { + + string ColumnName { get; set; } +// string MappingName { get; } +// string BaseTableName { get; set; } + string DBValue {get;set;} + string Name {get;set;} + string DataType {get;set;} + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IPrintableObject.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IPrintableObject.cs new file mode 100644 index 0000000000..ffb288029e --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IPrintableObject.cs @@ -0,0 +1,36 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 06.04.2013 + * Time: 19:55 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Drawing; +using ICSharpCode.Reporting.Arrange; +using ICSharpCode.Reporting.Interfaces.Export; + +namespace ICSharpCode.Reporting.Interfaces +{ + /// + /// Description of IPrintObject. + /// + public interface IReportObject { + string Name{get;set;} + Size Size {get;set;} + Point Location {get;set;} + Color ForeColor {get;set;} + Color BackColor {get;set;} + Color FrameColor{get;set;} + bool CanGrow {get;set;} + } + + + public interface IPrintableObject:IReportObject { + IExportColumn CreateExportColumn(); + IMeasurementStrategy MeasurementStrategy (); + + } + +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportContainer.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportContainer.cs new file mode 100644 index 0000000000..210eddd9f1 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportContainer.cs @@ -0,0 +1,23 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 16.04.2013 + * Time: 19:53 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.Items; + +namespace ICSharpCode.Reporting.Interfaces +{ + /// + /// Description of IReportContainer. + /// + public interface IReportContainer :IPrintableObject + { + List Items {get;} + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportCreator.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportCreator.cs new file mode 100644 index 0000000000..ab49ffe72e --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportCreator.cs @@ -0,0 +1,33 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 21.03.2013 + * Time: 20:06 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; + +using ICSharpCode.Reporting.BaseClasses; +using ICSharpCode.Reporting.Interfaces.Export; + +namespace ICSharpCode.Reporting.Interfaces +{ + /// + /// Description of IReportCreator. + /// + public interface IReportCreator + { + void BuildExportList (); + Collection Pages {get;} + +// PagesCollection Pages{get;} +// event EventHandler PageCreated; +// event EventHandler SectionRendering; +// event EventHandler GroupHeaderRendering; +// event EventHandler GroupFooterRendering; +// event EventHandler RowRendering; + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportModel.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportModel.cs new file mode 100644 index 0000000000..98bdb9b927 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportModel.cs @@ -0,0 +1,37 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 17.03.2013 + * Time: 17:20 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using ICSharpCode.Reporting.Items; + +namespace ICSharpCode.Reporting.Interfaces +{ + /// + /// Description of IReportModel. + /// + public interface IReportModel + { + ReportSettings ReportSettings {get;set;} + List SectionCollection {get;} + /* + ISection ReportHeader {get;} + ISection PageHeader {get;} + ISection DetailSection {get;} + ISection PageFooter {get;} + ISection ReportFooter {get;} + + GlobalEnums.PushPullModel DataModel {get;} + */ + IReportContainer ReportHeader {get;} + IReportContainer PageHeader {get;} + IReportContainer DetailSection {get;} + IReportContainer PageFooter {get;} + IReportContainer ReportFooter {get;} + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseDataItem.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseDataItem.cs new file mode 100644 index 0000000000..8424e0e07a --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseDataItem.cs @@ -0,0 +1,30 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 29.05.2013 + * Time: 20:08 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using ICSharpCode.Reporting.Interfaces; + +namespace ICSharpCode.Reporting.Items +{ + /// + /// Description of BaseDataItem. + /// + public class BaseDataItem:BaseTextItem,IDataItem + { + public BaseDataItem() + { + } + + public virtual string DBValue {get;set;} + + public virtual string ColumnName {get;set;} + + public string DataType {get;set;} + + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseSection.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseSection.cs new file mode 100644 index 0000000000..cba4d2445f --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseSection.cs @@ -0,0 +1,35 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 19.03.2013 + * Time: 20:19 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; + +namespace ICSharpCode.Reporting.Items +{ + /// + /// Description of BaseSection. + /// + +public class BaseSection:ReportContainer,IReportContainer + { + #region Constructors + + public BaseSection() + { + } + + public BaseSection (string name) { + Name = name; + } + + #endregion + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseTextItem.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseTextItem.cs new file mode 100644 index 0000000000..a885d4a5ae --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseTextItem.cs @@ -0,0 +1,61 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 07.04.2013 + * Time: 18:23 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Drawing; +using ICSharpCode.Reporting.Arrange; +using ICSharpCode.Reporting.Globals; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; + +namespace ICSharpCode.Reporting.Items +{ + /// + /// Description of BaseTextItem. + /// + public interface ITextItem:IPrintableObject + { + Font Font {get;set;} + string Text {get;set;} + } + + public class BaseTextItem:PrintableItem,ITextItem + { + public BaseTextItem(){ + Name = "BaseTextItem"; + Font = GlobalValues.DefaultFont; + } + + + public Font Font {get;set;} + + public string Text {get;set;} + + public override IExportColumn CreateExportColumn() + { + var ex = new ExportText(); + ex.Name = Name; + ex.Location = Location; + ex.ForeColor = ForeColor; + ex.BackColor = BackColor; + ex.FrameColor = FrameColor; + ex.Size = Size; + ex.Font = Font; + ex.Text = Text; + ex.CanGrow = CanGrow; + return ex; + } + + public override ICSharpCode.Reporting.Arrange.IMeasurementStrategy MeasurementStrategy() + { + return new TextBasedMeasurementStrategy(); + } + + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/PrintableItem.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/PrintableItem.cs new file mode 100644 index 0000000000..baa295bd4b --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/PrintableItem.cs @@ -0,0 +1,45 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 06.04.2013 + * Time: 20:15 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Drawing; +using ICSharpCode.Reporting.Arrange; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Interfaces.Export; + +namespace ICSharpCode.Reporting.Items +{ + public class PrintableItem : IPrintableObject + { + public string Name { get; set; } + + public Point Location { get; set; } + + public Size Size { get; set; } + + + public virtual IExportColumn CreateExportColumn() + { + return null; + } + + public virtual IMeasurementStrategy MeasurementStrategy () + { + return null; + } + + public Color ForeColor {get;set;} + + public Color BackColor {get;set;} + + public Color FrameColor {get;set;} + + public bool CanGrow {get;set;} + + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportContainer.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportContainer.cs new file mode 100644 index 0000000000..298483d479 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportContainer.cs @@ -0,0 +1,53 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 16.04.2013 + * Time: 19:51 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using ICSharpCode.Reporting.Arrange; +using ICSharpCode.Reporting.Exporter; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; + +namespace ICSharpCode.Reporting.Items +{ + /// + /// Description of ReportContainer. + /// + public class ReportContainer:PrintableItem,IReportContainer + { + + public ReportContainer() + { + items = new List(); + } + + private List items; + + public List Items { + get { return items; } + } + + + public override IExportColumn CreateExportColumn() + { + return new ExportContainer(){ + Name = this.Name, + Size = this.Size, + Location = this.Location, + CanGrow = this.CanGrow, + }; + } + + + public override IMeasurementStrategy MeasurementStrategy() + { + return new ContainerMeasurementStrategy(); + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportModel.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportModel.cs new file mode 100644 index 0000000000..9a6d05cc3d --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportModel.cs @@ -0,0 +1,88 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 17.03.2013 + * Time: 17:18 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using ICSharpCode.Reporting.Factories; +using ICSharpCode.Reporting.Globals; +using ICSharpCode.Reporting.Interfaces; + +namespace ICSharpCode.Reporting.Items +{ + /// + /// Description of ReportModel. + /// + public class ReportModel :IReportModel + { + + public ReportModel() { + SectionCollection = new List(); + } + + + #region Sections + + public IReportContainer ReportHeader + { + get { + return (BaseSection)SectionCollection[0]; + } + } + + + public IReportContainer PageHeader + { + get { + return (BaseSection)SectionCollection[1]; + } + } + + + public IReportContainer DetailSection + { + get { + return (BaseSection)SectionCollection[2]; + } + } + + + public IReportContainer PageFooter + { + get { + return (BaseSection)SectionCollection[3]; + } + } + + public IReportContainer ReportFooter + { + get { + return (BaseSection)SectionCollection[4]; + } + } + + #endregion + + + ReportSettings reportSettings ; + + public ReportSettings ReportSettings + { + get { + if (this.reportSettings == null) { + this.reportSettings = new ReportSettings(); + } + return reportSettings; + } + set { + reportSettings = value; + } + } + + public List SectionCollection {get; private set;} + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportSettings.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportSettings.cs new file mode 100644 index 0000000000..ed9321db6b --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportSettings.cs @@ -0,0 +1,144 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 17.03.2013 + * Time: 17:41 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Drawing; +using System.IO; + +using ICSharpCode.Reporting.Globals; + +namespace ICSharpCode.Reporting.Items +{ + /// + /// Description of ReportSettings. + /// + public class ReportSettings + { + + + public ReportSettings() + { + this.pageSize = Globals.GlobalValues.DefaultPageSize; + BaseValues(); + } + + + void BaseValues() + { + +// this.UseStandardPrinter = true; +// this.GraphicsUnit = GraphicsUnit.Pixel; +// this.Padding = new Padding(5); +// this.DefaultFont = GlobalValues.DefaultFont; + this.ReportType = GlobalEnums.ReportType.FormSheet; +// + this.DataModel = GlobalEnums.PushPullModel.FormSheet; +// +// this.CommandType = System.Data.CommandType.Text; +// this.ConnectionString = String.Empty; +// this.CommandText = String.Empty; +// +// this.TopMargin = GlobalValues.DefaultPageMargin.Left; +// this.BottomMargin = GlobalValues.DefaultPageMargin.Bottom; +// this.LeftMargin = GlobalValues.DefaultPageMargin.Left; +// this.RightMargin = GlobalValues.DefaultPageMargin.Right; +// +// this.availableFields = new AvailableFieldsCollection(); +// this.groupingsCollection = new GroupColumnCollection(); + this.SortColumnsCollection = new SortColumnCollection(); + GroupColumnCollection = new GroupColumnCollection(); +// this.sqlParameters = new SqlParameterCollection(); +// this.parameterCollection = new ParameterCollection(); +// this.NoDataMessage = "No Data for this Report"; + } + + + private string reportName; + +// [Category("Base Settings")] +// [DefaultValueAttribute ("")] + public string ReportName + { + get { + if (string.IsNullOrEmpty(reportName)) { + reportName = Globals.GlobalValues.DefaultReportName; + } + return reportName; + } + set { + if (reportName != value) { + reportName = value; + } + } + } + + private string fileName; +// [Category("Base Settings")] +// [XmlIgnoreAttribute] + public string FileName + { + get { + if (String.IsNullOrEmpty(fileName)) { + fileName = GlobalValues.PlainFileName; + } + return Path.GetFullPath(fileName); + } + set { + fileName = value; + } + } + + +// [Category("Page Settings")] + public int BottomMargin {get;set;} + + +// [Category("Page Settings")] + public int TopMargin {get;set;} + + + +// [Category("Page Settings")] + public int LeftMargin {get;set;} + + + +// [Category("Page Settings")] + public int RightMargin {get;set;} + + private Size pageSize; + + public Size PageSize { + get { + if (!Landscape) { + return pageSize; + } else { + return new Size(pageSize.Height,pageSize.Width); + } + } + set { pageSize = value; } + } + +// [Category("Page Settings")] +// public Size PageSize {get;set;} + +// [Category("Page Settings")] + public bool Landscape {get;set;} + +// [Category("Data")] + public GlobalEnums.PushPullModel DataModel {get;set;} + + +// [Browsable(true), Category("Base Settings")] + public GlobalEnums.ReportType ReportType {get;set;} + + public SortColumnCollection SortColumnsCollection {get;private set;} + + public GroupColumnCollection GroupColumnCollection {get;private 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 new file mode 100644 index 0000000000..deeb9bd393 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs @@ -0,0 +1,155 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 03.04.2013 + * Time: 20:32 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Drawing; +using System.Linq; + +using ICSharpCode.Reporting.BaseClasses; +using ICSharpCode.Reporting.Globals; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.PageBuilder.Converter; + +namespace ICSharpCode.Reporting.PageBuilder +{ + /// + /// Description of BasePageBuilder. + /// + public class BasePageBuilder:IReportCreator + { + Graphics graphics; + + public BasePageBuilder(IReportModel reportModel) + { + if (reportModel == null) { + throw new ArgumentNullException("reportModel"); + } + ReportModel = reportModel; + Pages = new Collection(); + graphics = CreateGraphics.FromSize(reportModel.ReportSettings.PageSize); + } + + + protected IPage InitNewPage(){ + var pi = CreatePageInfo(); + return new Page(pi,ReportModel.ReportSettings.PageSize); + } + + #region create Sections + + protected 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); + CurrentLocation = new Point (ReportModel.ReportSettings.LeftMargin,r.Bottom + 1); + AddSectionToPage(header); + } + } + + + protected void BuildPageHeader() + { + + var pageHeader = CreateSection(ReportModel.PageHeader,CurrentLocation); + DetailStart = new Point(ReportModel.ReportSettings.LeftMargin,pageHeader.Location.Y + pageHeader.Size.Height +1); + AddSectionToPage(pageHeader); + } + + + protected void BuildPageFooter() + { + Console.WriteLine("FormPageBuilder - 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); + + var pageFooter = CreateSection(ReportModel.PageFooter,CurrentLocation); + AddSectionToPage(pageFooter); + } + + + protected void BuildReportFooter() + { + Console.WriteLine("FormPageBuilder - 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); + + var reportFooter = CreateSection(ReportModel.ReportFooter,CurrentLocation); + AddSectionToPage(reportFooter); + } + + #endregion + + protected virtual void WritePages() + { + CurrentPage = InitNewPage(); + CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin,ReportModel.ReportSettings.TopMargin); + 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 header = containerConverter.Convert(); + return header; + } + + + protected void AddSectionToPage(IExportContainer header) + { + header.Parent = CurrentPage; + CurrentPage.ExportedItems.Add(header); + } + + + IPageInfo CreatePageInfo() + { + var pi = new PageInfo(); + pi.PageNumber = Pages.Count +1; + pi.ReportName = ReportModel.ReportSettings.ReportName; + pi.ReportFileName = ReportModel.ReportSettings.FileName; + return pi; + } + + + protected virtual void AddPage(IPage page) { + if (Pages.Count == 0) { + page.IsFirstPage = true; + } + Pages.Add(page); + } + + + public virtual void BuildExportList() + { + this.Pages.Clear(); + } + + protected IReportModel ReportModel {get; private set;} + + protected Point CurrentLocation {get; set;} + + protected IPage CurrentPage {get; set;} + + protected Point DetailStart {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 new file mode 100644 index 0000000000..6faaa87df8 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs @@ -0,0 +1,73 @@ +/* + * 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 +{ + /// + /// Description of SectionConverter. + /// + internal class ContainerConverter + { + private Graphics graphics; + + public ContainerConverter(Graphics graphics,IReportContainer reportContainer,Point currentLocation ) + { + if (graphics == null) { + throw new ArgumentNullException("graphics"); + } + if (reportContainer == null) { + throw new ArgumentNullException("reportContainer"); + } + + this.graphics = graphics; + Container = reportContainer; + CurrentLocation = currentLocation; + } + + + 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); + item.Parent = exportContainer; + 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/DataPageBuilder.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs new file mode 100644 index 0000000000..ef69d3666f --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs @@ -0,0 +1,56 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 06.06.2013 + * Time: 20:27 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using ICSharpCode.Reporting.Items; + +namespace ICSharpCode.Reporting.PageBuilder +{ + /// + /// Description of DataPageBuilder. + /// + public class DataPageBuilder:BasePageBuilder + { + public DataPageBuilder(ReportModel reportModel, IEnumerable list):base(reportModel) + { + List = list; + } + + + public override void BuildExportList() + { + base.BuildExportList(); + WritePages (); + } + + + void BuilDetail() + { + Console.WriteLine("FormPageBuilder - 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); + } + + + protected override void WritePages() + { + base.WritePages(); + BuilDetail(); + base.AddPage(CurrentPage); + Console.WriteLine("------{0}---------",ReportModel.ReportSettings.PageSize); + } + + + + public IEnumerable List {get; private set;} + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs new file mode 100644 index 0000000000..0b8ec77f96 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs @@ -0,0 +1,55 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 08.04.2013 + * Time: 20:09 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Drawing; +using ICSharpCode.Reporting.Arrange; +using ICSharpCode.Reporting.BaseClasses; +using ICSharpCode.Reporting.Exporter; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Interfaces.Export; + +namespace ICSharpCode.Reporting.PageBuilder.ExportColumns +{ + /// + /// Description of BaseExportColumn. + /// + public class ExportColumn:IExportColumn + { + + public string Name {get;set;} + + public Size Size {get;set;} + + public Point Location {get;set;} + + public virtual IArrangeStrategy GetArrangeStrategy () + { + return null; + } + + public Size DesiredSize {get;set;} + + public Color ForeColor {get;set;} + + public Color BackColor {get;set;} + + public Color FrameColor {get;set;} + + public IExportColumn Parent {get;set;} + + public bool CanGrow {get;set;} + + + public Rectangle DisplayRectangle { + get { + return new Rectangle(Location,Size); + } + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportContainer.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportContainer.cs new file mode 100644 index 0000000000..ad09bfd257 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportContainer.cs @@ -0,0 +1,44 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 12.04.2013 + * Time: 20:27 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using ICSharpCode.Reporting.Arrange; +using ICSharpCode.Reporting.Exporter; +using ICSharpCode.Reporting.Exporter.Visitors; +using ICSharpCode.Reporting.Interfaces.Export; + +namespace ICSharpCode.Reporting.PageBuilder.ExportColumns +{ + /// + /// Description of BaseExportContainer. + /// + public class ExportContainer:ExportColumn,IExportContainer,IAcceptor + { + public ExportContainer() + { + exportedItems = new List(); + } + + List exportedItems; + + public List ExportedItems { + get { return exportedItems; } + } + + public void Accept(IVisitor visitor) + { + visitor.Visit(this); + } + + public override ICSharpCode.Reporting.Arrange.IArrangeStrategy GetArrangeStrategy() + { + return new ContainerArrangeStrategy(); + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportText.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportText.cs new file mode 100644 index 0000000000..9f23b6260c --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportText.cs @@ -0,0 +1,45 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 10.04.2013 + * Time: 20:00 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Drawing; +using ICSharpCode.Reporting.Exporter; +using ICSharpCode.Reporting.Exporter.Visitors; +using ICSharpCode.Reporting.Interfaces.Export; + +namespace ICSharpCode.Reporting.PageBuilder.ExportColumns +{ + /// + /// Description of ExportText. + /// + /// + public interface IExportText : IExportColumn + { + Font Font {get;set;} + string Text {get;set;} + } + + + public class ExportText:ExportColumn,IExportText,IAcceptor + { + public ExportText() + { + } + + public void Accept(IVisitor visitor) + { + visitor.Visit(this); + } + + public Font Font {get;set;} + + + public string Text {get;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 new file mode 100644 index 0000000000..7e95719007 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs @@ -0,0 +1,60 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 03.04.2013 + * Time: 20:21 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Drawing; +using System.Linq; + +using ICSharpCode.Reporting.Globals; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Interfaces.Export; + +namespace ICSharpCode.Reporting.PageBuilder +{ + /// + /// Description of FormPageBuilder. + /// + public class FormPageBuilder:BasePageBuilder + { + + public FormPageBuilder(IReportModel reportModel):base(reportModel) + { + + } + + + public override void BuildExportList() + { + base.BuildExportList(); + WritePages (); + } + + + + void BuilDetail() + { + Console.WriteLine("FormPageBuilder - 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); + } + + + protected override void WritePages() + { + base.WritePages(); + BuilDetail(); + 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 new file mode 100644 index 0000000000..c952d36bc8 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportingFactory.cs @@ -0,0 +1,80 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 17.03.2013 + * Time: 17:09 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Xml; + +using ICSharpCode.Reporting.Factories; +using ICSharpCode.Reporting.Globals; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Items; +using ICSharpCode.Reporting.PageBuilder; +using ICSharpCode.Reporting.Xml; + +namespace ICSharpCode.Reporting +{ + /// + /// Description of Reporting. + /// + public class ReportingFactory + { + public ReportingFactory() + { + } + + public IReportCreator ReportCreator (ReportModel reportModel) { + if (reportModel == null) + throw new ArgumentNullException("reportModel"); + IReportCreator builder = null; + if (reportModel.ReportSettings.DataModel == GlobalEnums.PushPullModel.FormSheet) { + builder = new FormPageBuilder(reportModel); + } + return builder; + } + + + + + internal IReportCreator ReportCreator (Stream stream) + { + IReportModel reportModel = LoadReportModel (stream); + IReportCreator builder = null; + builder = ReportCreatorFactory.ExporterFactory(reportModel); + return builder; + } + + object ExporterFactory(IReportModel reportModel) + { + throw new NotImplementedException(); + } + + + internal ReportModel LoadReportModel (Stream stream) + { + var doc = new XmlDocument(); + doc.Load(stream); + var rm = LoadModel(doc); + return rm; + } + + static ReportModel LoadModel(XmlDocument doc) + { + var loader = new ModelLoader(); + object root = loader.Load(doc.DocumentElement); + + var model = root as ReportModel; + if (model == null) { +// throw new IllegalFileFormatException("ReportModel"); + } + return model; + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/PreviewViewModel.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/PreviewViewModel.cs new file mode 100644 index 0000000000..79ebd78f17 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/PreviewViewModel.cs @@ -0,0 +1,72 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 05/04/2013 + * Time: 17:06 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Diagnostics; +using System.Windows.Documents; +using System.Windows.Markup; + +using ICSharpCode.Reporting.Exporter; +using ICSharpCode.Reporting.ExportRenderer; +using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.Items; + +namespace ICSharpCode.Reporting.WpfReportViewer +{ + /// + /// Description of PreviewViewModel. + /// + public class PreviewViewModel:INotifyPropertyChanged + { + + private FixedDocument document ; + + public PreviewViewModel(ReportSettings reportSettings, Collection pages) + { + if (pages == null) + throw new ArgumentNullException("pages"); + if (reportSettings == null) + throw new ArgumentNullException("reportSettings"); + Document = new FixedDocument(); + var s = Document.DocumentPaginator.PageSize; + Document.DocumentPaginator.PageSize = new System.Windows.Size(reportSettings.PageSize.Width,reportSettings.PageSize.Height); + var wpfExporter = new WpfExporter(reportSettings,pages); + wpfExporter.Run(); + var fixedPage = wpfExporter.FixedPage; + AddPageToDocument(Document,fixedPage); + } + + static void AddPageToDocument(FixedDocument fixedDocument,FixedPage page) + { + var pageContent = new PageContent(); + ((IAddChild)pageContent).AddChild(page); + fixedDocument.Pages.Add(pageContent); + } + + public FixedDocument Document + { + get {return document;} + set { + this.document = value; + OnNotifyPropertyChanged ("Document"); + } + } + + + public event PropertyChangedEventHandler PropertyChanged; + + void OnNotifyPropertyChanged(string num0) + { + if (PropertyChanged != null) { + PropertyChanged(this,new PropertyChangedEventArgs(num0)); + } + } + } +} \ No newline at end of file diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/WpfReportViewer/WpfReportViewer.xaml.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/WpfReportViewer/WpfReportViewer.xaml.cs new file mode 100644 index 0000000000..6da3235c5f --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/WpfReportViewer/WpfReportViewer.xaml.cs @@ -0,0 +1,45 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 12.05.2011 + * Time: 21:01 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Windows.Controls; +using System.Windows.Documents; + + +namespace ICSharpCode.Reporting.WpfReportViewer +{ + + public interface IWpfReportViewer + { + IDocumentPaginatorSource Document {set;} + void SetBinding (PreviewViewModel model); + } + /// + /// Interaction logic for WpfReportViewer.xaml + /// + + public partial class WpfReportViewer : UserControl,IWpfReportViewer + { + public WpfReportViewer() + { + InitializeComponent(); + } + + public void SetBinding (PreviewViewModel model) + { + this.DataContext = model; + } + + + public IDocumentPaginatorSource Document { + set { + this.DocumentViewer.Document = value; + } + } + } +} \ No newline at end of file diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Xml/ModelLoader.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Xml/ModelLoader.cs new file mode 100644 index 0000000000..e737d2be97 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Xml/ModelLoader.cs @@ -0,0 +1,30 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 19.03.2013 + * Time: 20:13 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using ICSharpCode.Reporting.Items; + +namespace ICSharpCode.Reporting.Xml +{ + /// + /// Description of ModelLoader. + /// + internal class ModelLoader: MycroParser + { + + protected override Type GetTypeByName(string ns, string name) + { +// var b = typeof(BaseSection).Assembly.GetType("ICSharpCode.Reporting.Items" + "." + name); + var s = typeof(BaseSection).Assembly.GetType(typeof(BaseSection).Namespace + "." + name); + Console.WriteLine("getTypeByname <{0}>",s.Name); + return typeof(BaseSection).Assembly.GetType(typeof(BaseSection).Namespace + "." + name); + + } + + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Xml/MycroParser.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Xml/MycroParser.cs new file mode 100644 index 0000000000..215411ffba --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Xml/MycroParser.cs @@ -0,0 +1,233 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 19.03.2013 + * Time: 20:14 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.ComponentModel; +using System.Diagnostics; +using System.Collections; +using System.Collections.Generic; +using System.Xml; +using System.Reflection; + +namespace ICSharpCode.Reporting.Xml +{ + /// + /// Description of MycroParser. + /// + public interface IMycroXaml + { + void Initialize(object parent); + object ReturnedObject + { + get; + } + } + + /// + /// See http://www.codeproject.com/dotnet/MycroXaml.asp + /// + internal abstract class MycroParser + { + public object Load(XmlElement element) + { + return ProcessNode(element, null); + } + + protected abstract Type GetTypeByName(string ns, string name); + + private object ProcessNode(XmlNode node, object parent) + { + object ret=null; + if (node is XmlElement) + { + // instantiate the class + string ns=node.Prefix; + string cname=node.LocalName; + Console.WriteLine ("ProcessNode(XmlNode node, object parent) {0}",cname); + Type t=GetTypeByName(ns, cname); + if (t == null) { + Console.WriteLine("\t Not found {0}",t.FullName); +// t = GetTypeByName (ns,"ErrorItem"); + } + + Trace.Assert(t != null, "Type "+cname+" could not be determined."); +// Debug.WriteLine("Looking for " + cname + " and got " + t.FullName); + Console.WriteLine("Looking for " + cname + " and got " + t.FullName); + try + { + ret=Activator.CreateInstance(t); + } + catch(Exception e) + { + Trace.Fail("Type "+cname+" could not be instantiated:\r\n"+e.Message); + } + + // support the ISupportInitialize interface + if (ret is ISupportInitialize) { + ((ISupportInitialize)ret).BeginInit(); + } + + // If the instance implements the IMicroXaml interface, then it may need + // access to the parser. + if (ret is IMycroXaml) { + ((IMycroXaml)ret).Initialize(parent); + } + + // implements the class-property-class model + ProcessAttributes(node, ret, t); + ProcessChildProperties(node, ret); + + // support the ISupportInitialize interface + if (ret is ISupportInitialize) { + ((ISupportInitialize)ret).EndInit(); + } + + // If the instance implements the IMicroXaml interface, then it has the option + // to return an object that replaces the instance created by the parser. + if (ret is IMycroXaml) { + ret=((IMycroXaml)ret).ReturnedObject; + } + + } + return ret; + } + + protected void ProcessChildProperties(XmlNode node, object parent) + { + var t=parent.GetType(); + + // children of a class must always be properties + foreach(XmlNode child in node.ChildNodes) + { + if (!(child is XmlElement)) continue; + string pname=child.LocalName; + var pi=t.GetProperty(pname); + + if (pi==null) + { + // Special case--we're going to assume that the child is a class instance + // not associated with the parent object +// Trace.Fail("Unsupported property: "+pname); + System.Console.WriteLine("Unsupported property: "+pname); + continue; + } + + // a property can only have one child node unless it's a collection + foreach(XmlNode grandChild in child.ChildNodes) + { + if (grandChild is XmlText) { + SetPropertyToString(parent, pi, child.InnerText); + break; + } + else if (grandChild is XmlElement) + { + var propObject=pi.GetValue(parent, null); + var obj=ProcessNode(grandChild, propObject); + + // A null return is valid in cases where a class implementing the IMicroXaml interface + // might want to take care of managing the instance it creates itself. See DataBinding + if (obj != null) + { + + // support for ICollection objects + if (propObject is ICollection) + { + MethodInfo mi=t.GetMethod("Add", new Type[] {obj.GetType()}); + if (mi != null) + { + try + { + mi.Invoke(obj, new object[] {obj}); + } + catch(Exception e) + { + Trace.Fail("Adding to collection failed:\r\n"+e.Message); + } + } + else if (propObject is IList) + { + try + { + ((IList)propObject).Add(obj); + } + catch(Exception e) + { + Trace.Fail("List/Collection add failed:\r\n"+e.Message); + } + } + } + else if (!pi.CanWrite) { + Trace.Fail("Unsupported read-only property: "+pname); + } + else + { + // direct assignment if not a collection + try + { + pi.SetValue(parent, obj, null); + } + catch(Exception e) + { + Trace.Fail("Property setter for "+pname+" failed:\r\n"+e.Message); + } + } + } + } + } + } + } + + private void ProcessAttributes(XmlNode node, object ret, Type type) + { + // process attributes + foreach(XmlAttribute attr in node.Attributes) + { + string pname=attr.Name; + string pvalue=attr.Value; + + // it's either a property or an event + PropertyInfo pi=type.GetProperty(pname); + + if (pi != null) + { + // it's a property! + SetPropertyToString(ret, pi, pvalue); + } + else + { + // who knows what it is??? + Trace.Fail("Failed acquiring property information for "+pname); + } + } + } + + static void SetPropertyToString(object obj, PropertyInfo pi, string value) + { + Console.WriteLine("MP - SetPropertyToString {0} - {1}",pi.Name,value.ToString()); + // it's string, so use a type converter. + TypeConverter tc=TypeDescriptor.GetConverter(pi.PropertyType); + try + { + if (tc.CanConvertFrom(typeof(string))) + { + object val=tc.ConvertFromInvariantString(value); + pi.SetValue(obj, val, null); + } else if (pi.PropertyType == typeof(Type)) { + pi.SetValue(obj, Type.GetType(value), null); + } + } + catch(Exception e) + { + String s = String.Format("Property setter for {0} failed {1}\r\n",pi.Name, + e.Message); + System.Console.WriteLine("MycroParser : {0}",s); + } + } + + } +} 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 new file mode 100644 index 0000000000..4dbb3adcf2 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/ICSharpCode.Reporting.Test.csproj @@ -0,0 +1,99 @@ + + + + {97CA9CE5-B966-48DF-BB59-F00FFC534B1F} + Debug + AnyCPU + Library + ICSharpCode.Reporting.Test + ICSharpCode.Reporting.Test + v4.5 + + + Properties + False + False + False + False + obj\$(Configuration)\ + 4 + + + AnyCPU + 4194304 + False + False + Auto + 4096 + + + ..\..\..\..\..\..\..\bin\UnitTests\ + True + Full + False + True + DEBUG;TRACE + obj\ + + + bin\Release\ + False + None + True + False + TRACE + + + + ..\..\..\..\..\..\Tools\NUnit\nunit.framework.dll + + + + 3.5 + + + + + 3.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {40CA84D4-ACFC-4646-9CDD-B87262D34093} + ICSharpCode.Reporting + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/DataSource/CollectionHandlingFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/DataSource/CollectionHandlingFixture.cs new file mode 100644 index 0000000000..6ec8f7c4f5 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/DataSource/CollectionHandlingFixture.cs @@ -0,0 +1,196 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 20.05.2013 + * Time: 18:15 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using ICSharpCode.Reporting.BaseClasses; +using ICSharpCode.Reporting.DataManager.Listhandling; +using ICSharpCode.Reporting.DataSource; +using ICSharpCode.Reporting.Items; +using NUnit.Framework; + +namespace ICSharpCode.Reporting.Test.DataSource +{ + [TestFixture] + public class CollectionHandlingFixture + { + + private ContributorCollection list; + + [Test] + public void CanInitDataCollection() + { + var collectionSource = new CollectionSource (list,new ReportSettings()); + Assert.That(collectionSource,Is.Not.Null); + } + + [Test] + public void CurrentpositionShouldZeroAfterBind () { + var collectionSource = new CollectionSource (list,new ReportSettings()); + collectionSource.Bind(); + Assert.That(collectionSource.CurrentPosition,Is.EqualTo(0)); + } + + [Test] + public void CurrentPositionIsTwo () { + var collectionSource = new CollectionSource (list,new ReportSettings()); + collectionSource.Bind(); + collectionSource.MoveNext(); + collectionSource.MoveNext(); + Assert.That(collectionSource.CurrentPosition,Is.EqualTo(2)); + } + + [Test] + public void CollectionCountIsEqualToListCount() { + var collectionSource = new CollectionSource (list,new ReportSettings()); + Assert.That(collectionSource.Count,Is.EqualTo(list.Count)); + } + + + [Test] + public void AvailableFieldsEqualContibutorsPropertyCount() { + var collectionSource = new CollectionSource (list,new ReportSettings()); + Assert.That(collectionSource.AvailableFields.Count,Is.EqualTo(6)); + } + + #region Fill + + [Test] + public void TypeOfReportItemIsString () { + var ric = new ReportItemCollection(){ + new BaseDataItem(){ + ColumnName = "Lastname" + + }, + new BaseDataItem(){ + ColumnName = "Firstname" + } + }; + var collectionSource = new CollectionSource (list,new ReportSettings()); + collectionSource.Bind(); + collectionSource.Fill(ric); + foreach (BaseDataItem element in ric) { + Assert.That(element.DataType,Is.EqualTo("System.String")); + } + } + + + [Test] + public void FillReportItemCollection () { + var ric = new ReportItemCollection(){ + new BaseDataItem(){ + ColumnName = "Lastname" + + }, + new BaseDataItem(){ + ColumnName = "Firstname" + } + }; + var collectionSource = new CollectionSource (list,new ReportSettings()); + collectionSource.Bind(); + collectionSource.Fill(ric); + foreach (BaseDataItem element in ric) { + Assert.That(element.DBValue,Is.Not.EqualTo(String.Empty)); + } + } + + #endregion + + + #region Grouping + + [Test] + public void GroupbyOneColumn () { + var rs = new ReportSettings(); + rs.GroupColumnCollection.Add( new GroupColumn("GroupItem",1,ListSortDirection.Ascending)); + var collectionSource = new CollectionSource (list,rs); + collectionSource.Bind(); + } + + + [Test] + public void bla () { + var s = list.OrderBy(a => a.Lastname); + var x = s.GroupBy(y => y.GroupItem); + foreach (var group in x) { + Console.WriteLine("{0} - {1}",group.Key,group.GetType().ToString()); + foreach (var element in group) { + Console.WriteLine(element.Firstname); + } + } + } + #endregion + + #region Sort + + + [Test] + public void CreateUnsortedIndex() { + var collectionSource = new CollectionSource (list,new ReportSettings()); + collectionSource.Bind(); + Assert.That(collectionSource.IndexList.Count,Is.EqualTo(collectionSource.Count)); + Assert.That(collectionSource.IndexList.CurrentPosition,Is.EqualTo(0)); + } + + + [Test] + [ExpectedException(typeof(InvalidOperationException))] + public void SortColumnNotExist() { + var rs = new ReportSettings(); + rs.SortColumnsCollection.Add(new SortColumn("aa",ListSortDirection.Ascending)); + var collectionSource = new CollectionSource (list,rs); + collectionSource.Bind(); + Assert.That(collectionSource.IndexList,Is.Not.Null); + Assert.That(collectionSource.IndexList.Count,Is.EqualTo(0)); + } + + + [Test] + public void SortOneColumnAscending() { + var rs = new ReportSettings(); + rs.SortColumnsCollection.Add(new SortColumn("Lastname",ListSortDirection.Ascending)); + var collectionSource = new CollectionSource (list,rs); + collectionSource.Bind(); + string compare = collectionSource.IndexList[0].ObjectArray[0].ToString(); + foreach (var element in collectionSource.IndexList) { + string result = String.Format("{0} - {1}",element.ListIndex,element.ObjectArray[0]); + Console.WriteLine(result); + Assert.That(compare,Is.LessThanOrEqualTo(element.ObjectArray[0].ToString())); + compare = element.ObjectArray[0].ToString(); + } + } + + + [Test] + public void SortTwoColumnsAscending() { + var rs = new ReportSettings(); + rs.SortColumnsCollection.Add(new SortColumn("Lastname",ListSortDirection.Ascending)); + rs.SortColumnsCollection.Add(new SortColumn("RandomInt",ListSortDirection.Ascending)); + var collectionSource = new CollectionSource (list,rs); + collectionSource.Bind(); + string compare = collectionSource.IndexList[0].ObjectArray[0].ToString(); + foreach (var element in collectionSource.IndexList) { + string result = String.Format("{0} - {1} - {2}",element.ListIndex,element.ObjectArray[0],element.ObjectArray[1].ToString()); + Console.WriteLine(result); + Assert.That(compare,Is.LessThanOrEqualTo(element.ObjectArray[0].ToString())); + compare = element.ObjectArray[0].ToString(); + } + } + + #endregion + + + [SetUp] + public void CreateList() { + var contributorList = new ContributorsList(); + list = contributorList.ContributorCollection; + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/DataSource/ContributorsList.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/DataSource/ContributorsList.cs new file mode 100644 index 0000000000..3cb64fc205 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/DataSource/ContributorsList.cs @@ -0,0 +1,100 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 20.05.2013 + * Time: 18:09 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; + +namespace ICSharpCode.Reporting.Test.DataSource +{ + /// + /// Description of ContributorsList. + /// + public class ContributorsList + { + ContributorCollection contributorCollection; + + public ContributorsList() + { + this.contributorCollection = CreateContributorsList(); + } + + public ContributorCollection ContributorCollection { + get { return contributorCollection; } + } + + private ContributorCollection CreateContributorsList () { + + DateTime d1 = new DateTime(2000,11,11); + DateTime d2 = new DateTime(2000,01,01); + DateTime d3 = new DateTime(2000,12,24); + + ContributorCollection list = new ContributorCollection(); + + list.Add(new Contributor("Christoph","Wille","Senior Project Wrangler",17,new DateTime(1960,12,8),"F")); + list.Add(new Contributor("Bernhard","Spuida","Senior Project Wrangler",25,new DateTime(1962,2,24),"D")); + + + list.Add(new Contributor("Daniel","Grunwald","Technical Lead",12,d1,"F")); + + list.Add(new Contributor("Matt","Ward","NUnit",7,d1,"F")); + list.Add(new Contributor("David","Srbecky","Debugger",1,d1,"C")); + list.Add(new Contributor("Peter","Forstmeier","SharpDevelop.Reports",7,d1,"D")); + + list.Add(new Contributor("Alexander","Zeitler","SharpDevelop.Reports",3,d2,"D")); + list.Add(new Contributor("Markus","Palme","Prg.",6,d2,"R")); + list.Add(new Contributor("Georg","Brandl","Prg.",5,d2,"R")); + list.Add(new Contributor("Roman","Taranchenko","",2,d2,"U")); + list.Add(new Contributor("Denis","Erchoff","",13,d2,"U")); + + list.Add(new Contributor("Ifko","Kovacka","",31,d3,"A")); + list.Add(new Contributor("Nathan","Allen","",5,d3,"A")); + list.Add(new Contributor("Dickon","Field","DBTools",10,d3,"U")); + + list.Add(new Contributor("Troy","Simpson","Prg.",9,d3,"C")); + list.Add(new Contributor("David","Alpert","Prg.",6,d3,"C")); + return list; + } + } + + public class ContributorCollection: List + { + } + + public class Contributor { + + + public Contributor(string lastname, string firstname,string job,int randomInt,DateTime randomDate,string groupItem) + { + this.Lastname = lastname; + this.Firstname = firstname; + this.Job = job; + this.RandomDate = randomDate; + this.RandomInt = randomInt; + this.GroupItem = groupItem; + } + + + public string Lastname {get;private set;} + + + public string Firstname {get;private set;} + + + public string Job {get; private set;} + + + public int RandomInt {get; private set;} + + + public DateTime RandomDate {get;private set;} + + + public string GroupItem {get; private set;} + + } +} 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 new file mode 100644 index 0000000000..dd66be2304 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Model/Report_TwoItemsFixture.cs @@ -0,0 +1,69 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 07.04.2013 + * Time: 18:01 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Drawing; +using System.IO; +using System.Reflection; + +using ICSharpCode.Reporting.Items; +using NUnit.Framework; + +namespace ICSharpCode.Reporting.Test.Model +{ + [TestFixture] + public class ReportTwoItemsFixture + { + + private ReportModel model; + + [Test] + public void LoadModelWithItems() + { + Assert.That(model,Is.Not.Null); + } + + + [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 ItemIsTextItem() { + var item = model.ReportHeader.Items[0]; + Assert.That(item,Is.AssignableFrom(typeof(BaseTextItem))); + } + + + [Test] + public void IsLocationSet() { + var item = model.ReportHeader.Items[0]; + Assert.That(item.Location,Is.Not.EqualTo(Point.Empty)); + } + + + [SetUp] + public void LoadModelFromStream() + { + System.Reflection.Assembly asm = Assembly.GetExecutingAssembly(); + var stream = asm.GetManifestResourceStream(TestHelper.RepWithTwoItems); + var rf = new ReportingFactory(); + model = rf.LoadReportModel(stream); + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/BaseConvertFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/BaseConvertFixture.cs new file mode 100644 index 0000000000..7b1f09bbb0 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/BaseConvertFixture.cs @@ -0,0 +1,59 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 08.04.2013 + * Time: 20:20 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Reflection; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.PageBuilder; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; +using NUnit.Framework; + +namespace ICSharpCode.Reporting.Test.PageBuilder +{ + [TestFixture] + public class BaseConvertFixture + { + private IReportCreator reportCreator; + + + [Test] + public void CurrentPageContainFiveItems() { + reportCreator.BuildExportList(); + var page = reportCreator.Pages[0]; + Assert.That(page.ExportedItems.Count, Is.EqualTo(5)); + } + + + [Test] + public void PageItemIsBaseExportContainer() { + reportCreator.BuildExportList(); + var page = reportCreator.Pages[0]; + Assert.That(page.ExportedItems[0],Is.InstanceOf(typeof(ExportContainer))); + } + + + [Test] + public void ExportContainerContainsExportText() { + reportCreator.BuildExportList(); + var page = reportCreator.Pages[0]; + var firstItem = (ExportContainer)page.ExportedItems[0]; + var result = firstItem.ExportedItems[0]; + Assert.That(result,Is.InstanceOf(typeof(ExportText))); + } + + + [SetUp] + public void LoadFromStream() + { + System.Reflection.Assembly asm = Assembly.GetExecutingAssembly(); + var stream = asm.GetManifestResourceStream(TestHelper.RepWithTwoItems); + var reportingFactory = new ReportingFactory(); + reportCreator = reportingFactory.ReportCreator(stream); + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerArrangeStrategyFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerArrangeStrategyFixture.cs new file mode 100644 index 0000000000..6d850c6b2b --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerArrangeStrategyFixture.cs @@ -0,0 +1,144 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 15.05.2013 + * Time: 19:54 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Drawing; +using ICSharpCode.Reporting.Arrange; +using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; +using NUnit.Framework; + +namespace ICSharpCode.Reporting.Test.PageBuilder +{ + [TestFixture] + public class ContainerArrangeStrategyFixture + { + ContainerArrangeStrategy strategy; + + [Test] + public void ContainerNoChildren() { + var param = new ExportContainer(); + var size = param.Size; + strategy.Arrange(param); + Assert.That(param.Size, Is.EqualTo(size)); + } + + [Test] + public void ItemAtTopOfContainer() { + var container = CreateContainer(); + container.ExportedItems[0].Location = container.Location; + strategy.Arrange(container); + + var containerRect = new Rectangle(container.Location,container.DesiredSize); + var itemRect = new Rectangle(container.ExportedItems[0].Location,container.ExportedItems[0].Size); + +// Console.WriteLine("{0} - {1} - {2} - {3}",containerRect,containerRect.Bottom,itemRect,itemRect.Bottom); + Assert.That(containerRect.Contains(itemRect)); + + } + + + [Test] + public void ItemAtTopBottomOfContainer() { + var container = CreateContainer(); + container.ExportedItems[0].Location = new Point (container.Location.X, + container.Location.Y + container.DesiredSize.Height - container.ExportedItems[0].Size.Height); + strategy.Arrange(container); + + var containerRect = new Rectangle(container.Location,container.DesiredSize); + var itemRect = new Rectangle(container.ExportedItems[0].Location,container.ExportedItems[0].Size); + +// Console.WriteLine("{0} - {1} - {2} - {3}",containerRect,containerRect.Bottom,itemRect,itemRect.Bottom); + Assert.That(containerRect.Contains(itemRect)); + } + + + [Test] + public void FindBiggestRectangle () { + var container = CreateContainer(); + var secondItem = CreateCanGrowText(container); + container.ExportedItems.Add(secondItem); + + strategy.Arrange(container); + var expected = new Rectangle(new Point(container.Location.X + secondItem.Location.X, + container.Location.Y + secondItem.Location.Y), + secondItem.Size); + Assert.That(strategy.BiggestRectangle,Is.EqualTo(expected)); + } + + + [Test] + public void ContainerResizeIfItemCanGrow () { + var container = CreateContainer(); + + container.ExportedItems.Add(CreateCanGrowText(container)); + strategy.Arrange(container); + var containerRect = new Rectangle(container.Location,container.DesiredSize); + var arrangeRect = new Rectangle(new Point(container.Location.X + strategy.BiggestRectangle.Left, + strategy.BiggestRectangle.Top), + strategy.BiggestRectangle.Size); + +// Console.WriteLine("{0} - {1} - {2} - {3}",containerRect,containerRect.Bottom,strategy.BiggestRectangle,strategy.BiggestRectangle.Bottom); + Assert.That(containerRect.Contains(arrangeRect)); + Assert.That(containerRect.Bottom,Is.EqualTo(arrangeRect.Bottom + 5)); + } + + [Test] + public void ResizedContainerExeed5Points() { + var container = CreateContainer(); + container.ExportedItems.Add(CreateCanGrowText(container)); + strategy.Arrange(container); + var containerRect = new Rectangle(container.Location,container.DesiredSize); + var arrangeRect = new Rectangle(new Point(container.Location.X + strategy.BiggestRectangle.Left, + strategy.BiggestRectangle.Top), + strategy.BiggestRectangle.Size); + + Assert.That(containerRect.Bottom,Is.EqualTo(arrangeRect.Bottom + 5)); + } + + + private IExportText CreateCanGrowText(IExportContainer container) { + var secondItem = new ExportText(){ + Name = "Item1", + Location = new Point(80,10), + Size = new Size (20,70), + DesiredSize = new Size (20,70), + CanGrow = true, + Parent = container + }; + return secondItem; + } + + + private IExportContainer CreateContainer () { + + var container = new ExportContainer(){ + Size = new Size (720,60), + Location = new Point(50,50), + Name ="Section" + }; + + var item1 = new ExportText(){ + Name = "Item1", + Location = new Point(10,10), + Size = new Size (60,20), + Parent = container + }; + + container.ExportedItems.Add(item1); + container.DesiredSize = container.Size; + return container; + } + + [TestFixtureSetUp] + public void Init() + { + strategy = new ContainerArrangeStrategy(); + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerConverterFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerConverterFixture.cs new file mode 100644 index 0000000000..22bc01f0df --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerConverterFixture.cs @@ -0,0 +1,87 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 17.04.2013 + * Time: 20:14 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Drawing; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.Items; +using ICSharpCode.Reporting.PageBuilder.Converter; +using NUnit.Framework; + +namespace ICSharpCode.Reporting.Test.PageBuilder +{ + [TestFixture] + public class ContainerConverterFixture + { + private IReportContainer container; + private Graphics graphics; + + [Test] + public void ConverterReturnExportContainer() { + var converter = new ContainerConverter(graphics,container,new Point(30,30)); + var result = converter.Convert(); + Assert.That(result,Is.InstanceOf(typeof(IExportContainer))); + } + + + [Test] + public void ConverterReturnExportContainerwithTwoItems() + { + var converter = new ContainerConverter(graphics,container,new Point(30,30)); + var result = converter.Convert(); + Assert.That(result.ExportedItems.Count,Is.EqualTo(2)); + } + + + [Test] + public void LocationIsAdjusted() { + var location = new Point(30,30); + var converter = new ContainerConverter(graphics,container,location); + var result = converter.Convert(); + Assert.That(result.Location,Is.EqualTo(location)); + } + + [Test] + public void ParentInChildsIsSet () { + var converter = new ContainerConverter(graphics,container,container.Location); + var result = converter.Convert(); + foreach (var element in result.ExportedItems) { + Assert.That(element.Parent,Is.Not.Null); + } + } + + + [TestFixtureSetUp] + public void Init() + { + container = new BaseSection(){ + Size = new Size (720,60), + Location = new Point(50,50), + Name ="Section" + }; + + var item1 = new BaseTextItem(){ + Name = "Item1", + Location = new Point(10,10), + Size = new Size (60,20) + }; + + var item2 = new BaseTextItem(){ + Name = "Item2", + Location = new Point(80,10), + Size = new Size (60,20) + }; + container.Items.Add(item1); + container.Items.Add(item2); + + Bitmap bitmap = new Bitmap(700,1000); + graphics = Graphics.FromImage(bitmap); + } + } +} 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 new file mode 100644 index 0000000000..5dc23ab3a2 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/DataPageBuilderFixture.cs @@ -0,0 +1,61 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 06.06.2013 + * Time: 20:29 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Linq; +using System.Reflection; +using ICSharpCode.Reporting.Exporter; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Items; +using ICSharpCode.Reporting.PageBuilder; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; +using NUnit.Framework; + +namespace ICSharpCode.Reporting.Test.PageBuilder +{ + [TestFixture] + public class DataPageBuilderFixture + { + private IReportCreator reportCreator; + + [Test] + public void CanInitDataPageBuilder() + { + var dpb = new DataPageBuilder (new ReportModel(),new System.Collections.Generic.List()); +// dpb.DataSource(new ReportModel(),new System.Collections.Generic.List()); + Assert.That(dpb,Is.Not.Null); + } + + + [Test] + public void PageContainsFiveSections() + { + reportCreator.BuildExportList(); + var x = reportCreator.Pages[0].ExportedItems; + var y = from s in x + where s.GetType() == typeof(ExportContainer) + select s; + Assert.That(y.ToList().Count,Is.EqualTo(5)); + Console.WriteLine("-------ShowDebug---------"); + var ex = new DebugExporter(reportCreator.Pages); + ex.Run(); + } + + + [SetUp] + public void LoadFromStream() + { + System.Reflection.Assembly asm = Assembly.GetExecutingAssembly(); + var stream = asm.GetManifestResourceStream(TestHelper.RepWithTwoItems); + var reportingFactory = new ReportingFactory(); +// reportCreator = reportingFactory.ReportCreator(stream); + var model = reportingFactory.LoadReportModel (stream); + reportCreator = new DataPageBuilder(model,new System.Collections.Generic.List()); + } + } +} 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/PageBuilderFixture.cs new file mode 100644 index 0000000000..91b5915bf9 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageBuilderFixture.cs @@ -0,0 +1,85 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 03.04.2013 + * Time: 20:09 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.IO; +using System.Reflection; + +using ICSharpCode.Reporting.BaseClasses; +using ICSharpCode.Reporting.Exporter; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.PageBuilder; +using NUnit.Framework; + +namespace ICSharpCode.Reporting.Test.PageBuilder +{ + [TestFixture] + public class PageBuilderFixture + { + + private IReportCreator reportCreator; + + [Test] + public void CanCreateFormsPageBuilder() + { + Assert.IsNotNull(reportCreator); + } + + + #region Pages + + [Test] + public void PagesCountIsZero () { + Assert.That(reportCreator.Pages.Count,Is.EqualTo(0)); + } + + + [Test] + public void BuildExportPagesCountIsOne() { + reportCreator.BuildExportList(); + Assert.That(reportCreator.Pages.Count,Is.EqualTo(1)); + } + + + [Test] + public void CurrentPageIsSet() { + + reportCreator.BuildExportList(); + Assert.That(reportCreator.Pages[0],Is.Not.Null); + } + + + [Test] + public void CurrentPageIsFirstPage() { + reportCreator.BuildExportList(); + Assert.That(reportCreator.Pages[0].IsFirstPage,Is.True); + } + + #endregion + + [Test] + public void ParentOfSectionsIsPage() { + reportCreator.BuildExportList(); + var page = reportCreator.Pages[0]; + foreach (var element in page.ExportedItems) { + Assert.That(element.Parent,Is.Not.Null); + Assert.That(element.Parent,Is.AssignableTo(typeof(IPage))); + } + } + + [SetUp] + public void LoadFromStream() + { + System.Reflection.Assembly asm = Assembly.GetExecutingAssembly(); + var stream = asm.GetManifestResourceStream(TestHelper.RepWithTwoItems); + var reportingFactory = new ReportingFactory(); + reportCreator = reportingFactory.ReportCreator(stream); + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageFixture.cs new file mode 100644 index 0000000000..b427fc2dd7 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageFixture.cs @@ -0,0 +1,78 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 24.04.2013 + * Time: 19:55 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.IO; +using System.Reflection; +using System.Drawing; +using ICSharpCode.Reporting.Exporter; +using ICSharpCode.Reporting.Globals; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.PageBuilder; +using NUnit.Framework; + +namespace ICSharpCode.Reporting.Test.PageBuilder +{ + [TestFixture] + public class PageFixture + { + + private IReportCreator reportCreator; + + [Test] + public void CreateGraphicsFromPageSize () { + reportCreator.BuildExportList(); + var page = reportCreator.Pages[0]; + Graphics g = CreateGraphics.FromSize(page.Size); + Assert.That(g,Is.Not.Null); + } +// http://www.dev102.com/2008/10/09/measure-string-size-in-pixels-c/ + //http://www.codeproject.com/Articles/2118/Bypass-Graphics-MeasureString-limitations + //http://codebetter.com/patricksmacchia/2009/08/31/reveal-hidden-api-usage-tricks-from-any-net-application/ + + + [Test] + public void GraphicsIsSameSizeAsPage() { + reportCreator.BuildExportList(); + var page = reportCreator.Pages[0]; + var graphics = CreateGraphics.FromSize(page.Size); + Assert.That(graphics.VisibleClipBounds.Width,Is.EqualTo(page.Size.Width)); + Assert.That(graphics.VisibleClipBounds.Height,Is.EqualTo(page.Size.Height)); + } + + #region PageInfo + + [Test] + public void PageInfoPageNumberIsOne() { + reportCreator.BuildExportList(); + var pageInfo = reportCreator.Pages[0].PageInfo; + Assert.That(pageInfo.PageNumber,Is.EqualTo(1)); + } + + + [Test] + public void PageInfoReportName() { + reportCreator.BuildExportList(); + var pi = reportCreator.Pages[0].PageInfo; + Assert.That(pi.ReportName,Is.EqualTo("Report1")); + } + + + #endregion + + [SetUp] + public void LoadFromStream() + { + System.Reflection.Assembly asm = Assembly.GetExecutingAssembly(); + var stream = asm.GetManifestResourceStream(TestHelper.RepWithTwoItems); + var reportingFactory = new ReportingFactory(); + reportCreator = reportingFactory.ReportCreator(stream); + } + } +} 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 new file mode 100644 index 0000000000..9e8889ffab --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs @@ -0,0 +1,73 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 21.04.2013 + * Time: 18:18 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Drawing; +using System.Linq; +using System.Reflection; + +using ICSharpCode.Reporting.Exporter; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; +using NUnit.Framework; + +namespace ICSharpCode.Reporting.Test.PageBuilder +{ + [TestFixture] + public class PageLayoutFixture + { + private IReportCreator reportCreator; + + [Test] + public void PageContainsFiveSections() + { + reportCreator.BuildExportList(); + var x = reportCreator.Pages[0].ExportedItems; + var y = from s in x + where s.GetType() == typeof(ExportContainer) + select s; + Assert.That(y.ToList().Count,Is.EqualTo(5)); + Console.WriteLine("-------ShowDebug---------"); + var ex = new DebugExporter(reportCreator.Pages); + ex.Run(); + } + + + [Test] + public void SectionsInPageDoNotOverlap() + { + Point referencePoint = Point.Empty; + var referenceRect = Rectangle.Empty; + + reportCreator.BuildExportList(); + foreach (var item in reportCreator.Pages[0].ExportedItems) { + var p2 = new Point(item.Location.X,item.Location.Y); + + Console.WriteLine("{0} - {1} - {2}- <{3}>",p2,item.Size.Height,item.Name,item.DisplayRectangle); + if (item.Name != "ReportFooter") { + Assert.That(p2.Y,Is.GreaterThan(referencePoint.Y),item.Name); + var t = referenceRect.IntersectsWith(item.DisplayRectangle); + Assert.That(referenceRect.IntersectsWith(item.DisplayRectangle),Is.False); + } + referencePoint = new Point(item.Location.X,item.Location.Y + item.Size.Height); + referenceRect = item.DisplayRectangle; + } + } + + + [SetUp] + public void LoadFromStream() + { + System.Reflection.Assembly asm = Assembly.GetExecutingAssembly(); + var stream = asm.GetManifestResourceStream(TestHelper.RepWithTwoItems); + var reportingFactory = new ReportingFactory(); + reportCreator = reportingFactory.ReportCreator(stream); + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Properties/AssemblyInfo.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..faf3de5584 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Properties/AssemblyInfo.cs @@ -0,0 +1,31 @@ +#region Using directives + +using System; +using System.Reflection; +using System.Runtime.InteropServices; + +#endregion + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ICSharpCode.Reporting.Test")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ICSharpCode.Reporting.Test")] +[assembly: AssemblyCopyright("Copyright 2013")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// This sets the default COM visibility of types in the assembly to invisible. +// If you need to expose a type to COM, use [ComVisible(true)] on that type. +[assembly: ComVisible(false)] + +// The assembly version has following format : +// +// Major.Minor.Build.Revision +// +// You can specify all the values or you can use the default the Revision and +// Build Numbers by using the '*' as shown below: +[assembly: AssemblyVersion("1.0.*")] diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/ReportItems/TextItemFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/ReportItems/TextItemFixture.cs new file mode 100644 index 0000000000..404e790edf --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/ReportItems/TextItemFixture.cs @@ -0,0 +1,53 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 25.04.2013 + * Time: 19:45 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using ICSharpCode.Reporting.Globals; +using ICSharpCode.Reporting.Items; +using ICSharpCode.Reporting.PageBuilder.ExportColumns; +using NUnit.Framework; + +namespace ICSharpCode.Reporting.Test.ReportItems +{ + [TestFixture] + public class TextItemFixture + { + [Test] + public void IsNameSetOnInitialize() { + var ti = new BaseTextItem(); + Assert.That (ti.Name,Is.EqualTo("BaseTextItem")); + } + + + [Test] + public void ChangeName() { + var newName = "changed"; + var ti = new BaseTextItem(); + ti.Name = newName; + Assert.That(ti.Name,Is.EqualTo(newName)); + } + + + [Test] + public void DefaultFontOnInitialize() { + var ti = new BaseTextItem(); + Assert.That(ti.Font,Is.EqualTo(GlobalValues.DefaultFont)); + } + + [Test] + public void CreateExportText() { + var ti = new BaseTextItem(); + var exportText = (ExportText)ti.CreateExportColumn(); + Assert.That(exportText.Name,Is.EqualTo(ti.Name)); + Assert.That(exportText.Location,Is.EqualTo(ti.Location)); + Assert.That(exportText.Size,Is.EqualTo(ti.Size)); + Assert.That(exportText.Font , Is.EqualTo(GlobalValues.DefaultFont)); + } + + } +} 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 new file mode 100644 index 0000000000..0c52147c23 --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestHelper.cs @@ -0,0 +1,57 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 03.04.2013 + * Time: 20:10 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using ICSharpCode.Reporting.Exporter; +using ICSharpCode.Reporting.Exporter.Visitors; +using ICSharpCode.Reporting.Interfaces.Export; + +namespace ICSharpCode.Reporting.Test +{ + /// + /// Description of TestHelper. + /// + public static class TestHelper + { + private const string nameSpace = "ICSharpCode.Reporting.Test.src.TestReports."; + private const string plainReportName = "PlainModel.srd"; + private const string rr = "ReportWithTwoItems.srd"; + + + public static string PlainReportFileName{ + get{return nameSpace + plainReportName;} + } + + public static string RepWithTwoItems { + get {return nameSpace + rr;} + } + + + public static void ShowDebug(IExportContainer exportContainer) + { + var visitor = new DebugVisitor(); + foreach (var item in exportContainer.ExportedItems) { + var container = item as IExportContainer; + var acceptor = item as IAcceptor; + if (container != null) { + if (acceptor != null) { + Console.WriteLine("----"); + acceptor.Accept(visitor); + } + ShowDebug(container); + } else { +// var b = item as IAcceptor; + if (acceptor != null) { + acceptor.Accept(visitor); + + } + } + } + } + } +} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestReports/ReportWithTwoItems.srd b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestReports/ReportWithTwoItems.srd new file mode 100644 index 0000000000..76739e303c --- /dev/null +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestReports/ReportWithTwoItems.srd @@ -0,0 +1,144 @@ + + + + + Report1 + FormSheet + 50 + 50 + 50 + 50 + 827, 1169 + False + Millimeter + 5, 5, 5, 5 + + + + + + + + Text + FormSheet + 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 + + + 26, 22 + 100, 20 + White + Microsoft Sans Serif, 10pt + None + TopLeft + True + False + No + TestText for Item in PageHeader + False + Black + Black + BaseTextItem2147483646 + + + Black + ReportPageHeader + + + 50, 200 + 727, 60 + White + 0 + 0 + False + False + + 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/Reports/ICSharpCode.Reports.Addin/ICSharpCode.Reports.Addin.csproj b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/ICSharpCode.Reports.Addin.csproj index 6e5a7bc362..d4daf2d576 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/ICSharpCode.Reports.Addin.csproj +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/ICSharpCode.Reports.Addin.csproj @@ -12,12 +12,12 @@ False Auto 125829120 - x86 + AnyCPU 4096 4 - false + False ..\..\..\..\..\AddIns\Misc\SharpDevelopReports\ - v4.0 + v4.5 "C:\Program Files\SharpDevelop\bin\..\AddIns\AddIns\Misc\SourceAnalysis\Settings.SourceAnalysis" publish\ true @@ -36,6 +36,8 @@ true + False + obj\$(Configuration)\ False @@ -46,6 +48,7 @@ Project ..\..\..\..\..\bin\SharpDevelop.exe AllRules.ruleset + obj\ True @@ -55,6 +58,9 @@ False AllRules.ruleset + + False + ..\Libraries\itextsharp.dll @@ -179,7 +185,9 @@ Component - + + Component + @@ -249,8 +257,11 @@ Form - + + ReportViewerSecondaryView.cs + + @@ -325,6 +336,10 @@ ICSharpCode.Data.SQLServer False + + {40CA84D4-ACFC-4646-9CDD-B87262D34093} + ICSharpCode.Reporting + {4B2239FF-8FD6-431D-9D22-1B8049BA6917} ICSharpCode.Reports.Core @@ -353,8 +368,6 @@ true - - - + \ No newline at end of file diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Commands/FormsCommand.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Commands/FormsCommand.cs index b0c9ee511d..aa977a3561 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Commands/FormsCommand.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Commands/FormsCommand.cs @@ -10,6 +10,7 @@ using ICSharpCode.Core; using ICSharpCode.Core.WinForms; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Workbench; namespace ICSharpCode.Reports.Addin.Commands { @@ -31,7 +32,8 @@ namespace ICSharpCode.Reports.Addin.Commands protected static ReportDesignerView ReportDesigner { get { - IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; +// IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + IWorkbenchWindow window =SD.Workbench.ActiveWorkbenchWindow; if (window == null) { return null; } @@ -110,8 +112,8 @@ namespace ICSharpCode.Reports.Addin.Commands } } - - public class DesignerVerbSubmenuBuilder : ISubmenuBuilder + /* + public class DesignerVerbSubmenuBuilder : IMenuItemBuilder { public ToolStripItem[] BuildSubmenu(Codon codon, object owner) { @@ -154,7 +156,7 @@ namespace ICSharpCode.Reports.Addin.Commands } } } - + */ #region Align Commands /* diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Commands/PreviewCommands.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Commands/PreviewCommands.cs index 94af309b46..51e51f8016 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Commands/PreviewCommands.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Commands/PreviewCommands.cs @@ -28,7 +28,7 @@ namespace ICSharpCode.Reports.Addin.Commands public override void Run() { - CollectParametersCommand cmd = new CollectParametersCommand(Model); + CollectParametersCommand cmd = new CollectParametersCommand(Model.ReportSettings); cmd.Run(); } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Commands/ViewCommands.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Commands/ViewCommands.cs index d13cdcfcb3..a414cfbd47 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Commands/ViewCommands.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Commands/ViewCommands.cs @@ -12,6 +12,7 @@ using ICSharpCode.Reports.Core.Dialogs; using ICSharpCode.Reports.Core.Globals; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Workbench; namespace ICSharpCode.Reports.Addin.Commands { @@ -23,23 +24,29 @@ namespace ICSharpCode.Reports.Addin.Commands public override void Run() { - WorkbenchSingleton.Workbench.ShowView(SetupDesigner()); + throw new NotImplementedException("StartViewCommand-Run"); +// SD.Workbench.ShowView(SetupDesigner()); } + /* public static ReportDesignerView SetupDesigner () { - + throw new NotImplementedException("SetupDesigner"); ReportModel model = ReportModel.Create(); - Properties customizer = new Properties(); - customizer.Set("ReportLayout",GlobalEnums.ReportLayout.ListLayout); - IReportGenerator generator = new GeneratePlainReport(model,customizer); + + var reportStructure = new ReportStructure() + { + ReportLayout = GlobalEnums.ReportLayout.ListLayout; + } + IReportGenerator generator = new GeneratePlainReport(model,reportStructure); generator.GenerateReport(); - OpenedFile file = FileService.CreateUntitledOpenedFile(GlobalValues.PlainFileName,new byte[0]); - file.SetData(generator.Generated.ToArray()); - return SetupDesigner(file); +// OpenedFile file = FileService.CreateUntitledOpenedFile(GlobalValues.PlainFileName,new byte[0]); +// file.SetData(generator.Generated.ToArray()); +// return SetupDesigner(file); + return SetupDesigner(null); } - + */ public static ReportDesignerView SetupDesigner (OpenedFile file) { @@ -56,27 +63,27 @@ namespace ICSharpCode.Reports.Addin.Commands public class CollectParametersCommand :AbstractCommand { - ReportModel model; + ReportSettings reportSettings; - public CollectParametersCommand (ReportModel model) + public CollectParametersCommand (ReportSettings reportSettings) { - if (model == null) { - throw new ArgumentNullException("model"); + if (reportSettings == null) { + throw new ArgumentNullException("ReportSettings"); } - this.model = model; + this.reportSettings = reportSettings; } public override void Run() { - if (model.ReportSettings.SqlParameters.Count > 0) { - using (ParameterDialog paramDialog = new ParameterDialog(model.ReportSettings.SqlParameters)) + if (reportSettings.SqlParameters.Count > 0) { + using (ParameterDialog paramDialog = new ParameterDialog(reportSettings.SqlParameters)) { paramDialog.ShowDialog(); if (paramDialog.DialogResult == System.Windows.Forms.DialogResult.OK) { foreach (SqlParameter bp in paramDialog.SqlParameterCollection) { - var p = model.ReportSettings.SqlParameters.Find (bp.ParameterName); + var p = reportSettings.SqlParameters.Find (bp.ParameterName); p.ParameterValue = bp.ParameterValue; } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/IDesignerGenerator.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/IDesignerGenerator.cs index 1214c378a8..5afc3de895 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/IDesignerGenerator.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/IDesignerGenerator.cs @@ -2,11 +2,13 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; -using System.ComponentModel; using System.CodeDom; using System.Collections.Generic; +using System.ComponentModel; using ICSharpCode.SharpDevelop; +using ICSharpCode.SharpDevelop.Workbench; + namespace ICSharpCode.Reports.Addin { /// diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/InternalReportLoader.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/InternalReportLoader.cs index 1d1f42f294..36da6ca46c 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/InternalReportLoader.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/InternalReportLoader.cs @@ -6,9 +6,9 @@ using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.IO; using System.Windows.Forms; + using ICSharpCode.Core; using ICSharpCode.Reports.Core; -using ICSharpCode.Reports.Core.Interfaces; using ICSharpCode.SharpDevelop; namespace ICSharpCode.Reports.Addin @@ -31,6 +31,10 @@ namespace ICSharpCode.Reports.Addin if (generator == null) { throw new ArgumentNullException("generator"); } + if (stream == null) { + throw new ArgumentNullException("stream"); + } + Console.WriteLine("---------InternalReportLoader------------"); this.host = host; this.generator = generator; this.stream = stream; @@ -38,9 +42,8 @@ namespace ICSharpCode.Reports.Addin public void LoadOrCreateReport() { - + Console.WriteLine("LoadOrCreateReport()"); Application.UseWaitCursor = true; -// Application.DoEvents(); try { IComponent cc = this.host.CreateComponent(typeof(ICSharpCode.Reports.Addin.Designer.RootReportModel),"RootReportModel"); ICSharpCode.Reports.Addin.Designer.RootReportModel rootControl = cc as ICSharpCode.Reports.Addin.Designer.RootReportModel; @@ -55,17 +58,18 @@ namespace ICSharpCode.Reports.Addin } } + private void UpdateStatusbar () { string message; - if (this.generator.ViewContent.PrimaryFile.IsDirty) { - message = String.Format("Create Report <{0}> ...",Path.GetFileName(this.generator.ViewContent.PrimaryFile.FileName)); - } else { - message = String.Format("Load Report <{0}> ...",Path.GetFileName(this.generator.ViewContent.PrimaryFile.FileName)); - } - SharpDevelop.Gui.WorkbenchSingleton.StatusBar.SetMessage(message); + if (this.generator.ViewContent.PrimaryFile.IsDirty) { + message = String.Format("Create Report <{0}> ...",Path.GetFileName(this.generator.ViewContent.PrimaryFile.FileName)); + } else { + message = String.Format("Load Report <{0}> ...",Path.GetFileName(this.generator.ViewContent.PrimaryFile.FileName)); + } + SD.StatusBar.SetMessage(message); } - + private void CreateNamedSurface () { diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDefinitionDeserializer.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDefinitionDeserializer.cs index e558df661c..9649363220 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDefinitionDeserializer.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDefinitionDeserializer.cs @@ -12,6 +12,7 @@ using ICSharpCode.Core; using ICSharpCode.Reports.Core; using ICSharpCode.Reports.Core.Interfaces; using ICSharpCode.SharpDevelop; +using ICSharpCode.SharpDevelop.Workbench; namespace ICSharpCode.Reports.Addin { @@ -31,6 +32,7 @@ namespace ICSharpCode.Reports.Addin if (stream == null) { throw new ArgumentNullException("stream"); } + Console.WriteLine("ReportDefinitionDeserializer"); this.host = host; this.stream = stream; } @@ -39,7 +41,7 @@ namespace ICSharpCode.Reports.Addin public ReportModel LoadObjectFromFileDefinition() { - + Console.WriteLine("LoadObjectFromFileDefinition()"); XmlDocument doc = new XmlDocument(); doc.Load(this.stream); if (doc.FirstChild.NodeType == XmlNodeType.XmlDeclaration) @@ -53,6 +55,7 @@ namespace ICSharpCode.Reports.Addin private ReportModel LoadObjectFromXmlDocument(XmlElement elem) { + Console.WriteLine("LoadObjectFromXmlDocumen)"); //ReportSettings OpenedFile file =(OpenedFile) host.GetService(typeof(OpenedFile)); BaseItemLoader baseItemLoader = new BaseItemLoader(); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDesignerDisplayBinding.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDesignerDisplayBinding.cs index 7d1f732632..47b75e32d6 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDesignerDisplayBinding.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDesignerDisplayBinding.cs @@ -2,9 +2,12 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; +using System.IO; +using ICSharpCode.Reports.Addin.ReportWizard; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Gui; -using ICSharpCode.Reports.Addin.ReportWizard; +using ICSharpCode.SharpDevelop.Workbench; + namespace ICSharpCode.Reports.Addin { /// @@ -12,15 +15,13 @@ namespace ICSharpCode.Reports.Addin /// public class ReportDesignerDisplayBinding:IDisplayBinding { - public ReportDesignerDisplayBinding() - { - } - public bool CanCreateContentForFile(string fileName) + public bool CanCreateContentForFile(ICSharpCode.Core.FileName fileName) { - return true; // definition in .addin does extension-based filtering + return Path.GetExtension(fileName).Equals(".srd", StringComparison.OrdinalIgnoreCase); } + public IViewContent CreateContentForFile(OpenedFile file) { if (file.IsDirty) { @@ -34,15 +35,16 @@ namespace ICSharpCode.Reports.Addin ReportDesignerView view = ICSharpCode.Reports.Addin.Commands.StartViewCommand.SetupDesigner(file); return view; } - - public bool IsPreferredBindingForFile(string fileName) + + public bool IsPreferredBindingForFile(ICSharpCode.Core.FileName fileName) { return true; } - public double AutoDetectFileContent(string fileName, System.IO.Stream fileContent, string detectedMimeType) + + public double AutoDetectFileContent(ICSharpCode.Core.FileName fileName, System.IO.Stream fileContent, string detectedMimeType) { - return 1; + throw new NotImplementedException(); } } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDesignerGenerator.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDesignerGenerator.cs index 0c6fd3f869..610f4748b5 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDesignerGenerator.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDesignerGenerator.cs @@ -2,14 +2,16 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; +using System.CodeDom; +using System.CodeDom.Compiler; +using System.Collections.Generic; using System.ComponentModel; using System.IO; using System.Windows.Forms; using System.Xml; -using System.CodeDom; -using System.CodeDom.Compiler; -using System.Collections.Generic; + using ICSharpCode.SharpDevelop; +using ICSharpCode.SharpDevelop.Workbench; namespace ICSharpCode.Reports.Addin { @@ -23,6 +25,7 @@ namespace ICSharpCode.Reports.Addin public ReportDesignerGenerator() { + Console.WriteLine("Create ReportDesignerGenerator()"); } public CodeDomProvider CodeDomProvider { @@ -39,6 +42,7 @@ namespace ICSharpCode.Reports.Addin public void Attach(ReportDesignerView viewContent) { + Console.WriteLine("ReportDesignerGenerator:Attach"); if (viewContent == null) { throw new ArgumentNullException("viewContent"); } @@ -54,13 +58,14 @@ namespace ICSharpCode.Reports.Addin public IEnumerable GetSourceFiles(out OpenedFile designerCodeFile) { + Console.WriteLine("ReportDesignerGenerator:getSourceFile"); designerCodeFile = this.viewContent.PrimaryFile; return new [] {designerCodeFile}; } public void MergeFormChanges(CodeCompileUnit unit){ - + Console.WriteLine("ReportDesignerGenerator:MergeFormChanges"); System.Diagnostics.Trace.WriteLine("Generator:MergeFormChanges"); StringWriterWithEncoding writer = new StringWriterWithEncoding(System.Text.Encoding.UTF8); XmlTextWriter xml = XmlHelper.CreatePropperWriter(writer); @@ -75,7 +80,7 @@ namespace ICSharpCode.Reports.Addin if (xml == null) { throw new ArgumentNullException("xml"); } - + Console.WriteLine("ReportDesignerGenerator:internalMergeFormChanges"); ReportDesignerWriter rpd = new ReportDesignerWriter(); XmlHelper.CreatePropperDocument(xml); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDesignerLoader.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDesignerLoader.cs index 7f27b716b4..1358524072 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDesignerLoader.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDesignerLoader.cs @@ -10,7 +10,6 @@ using System.Xml; using ICSharpCode.Reports.Core; using ICSharpCode.Reports.Core.Globals; -using ICSharpCode.SharpDevelop; namespace ICSharpCode.Reports.Addin { @@ -26,6 +25,7 @@ namespace ICSharpCode.Reports.Addin public ReportDesignerLoader(IDesignerGenerator generator, Stream stream) { + Console.WriteLine("ReportDesignerLoader:Ctor"); if (stream == null) throw new ArgumentNullException("stream"); if (generator == null) { @@ -83,6 +83,7 @@ namespace ICSharpCode.Reports.Addin public ReportModel CreateRenderableModel() { + Console.WriteLine("ReportDesignerLoader:CreateRenderableModel"); ReportModel m = new ReportModel(); generator.MergeFormChanges((System.CodeDom.CodeCompileUnit)null); XmlDocument doc = new XmlDocument(); @@ -96,6 +97,16 @@ namespace ICSharpCode.Reports.Addin return m; } + public XmlDocument CreateXmlModel() + { + Console.WriteLine("ReportDesignerLoader:CreateXmlModel"); + ReportModel m = new ReportModel(); + generator.MergeFormChanges((System.CodeDom.CodeCompileUnit)null); + XmlDocument xmlDocument = new XmlDocument(); + xmlDocument.LoadXml(generator.ViewContent.ReportFileContent); + return xmlDocument; + } + #endregion #region Dispose @@ -122,6 +133,7 @@ namespace ICSharpCode.Reports.Addin public static Type GetReportType(Type baseType) { + Console.WriteLine("ReportLoader:GetReportType"); if (baseType == null) return null; if (baseToReport == null) { baseToReport = new Dictionary(); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Dialogs/ExpressionEditor.resx b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Dialogs/ExpressionEditor.resx index 7080a7d118..1af7de150c 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Dialogs/ExpressionEditor.resx +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Dialogs/ExpressionEditor.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ 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 a4b843243f..54a52d6d2d 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportDesignerView.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportDesignerView.cs @@ -16,13 +16,15 @@ using ICSharpCode.Core; using ICSharpCode.Reports.Addin.Commands; using ICSharpCode.Reports.Addin.Designer; using ICSharpCode.Reports.Addin.SecondaryViews; + using ICSharpCode.Reports.Core; using ICSharpCode.Reports.Core.Exporter; using ICSharpCode.Reports.Core.Exporter.ExportRenderer; -using ICSharpCode.Reports.Core.Factories; using ICSharpCode.Reports.Core.Globals; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.WinForms; +using ICSharpCode.SharpDevelop.Workbench; namespace ICSharpCode.Reports.Addin { @@ -49,9 +51,9 @@ namespace ICSharpCode.Reports.Addin private ReportDesignerUndoEngine undoEngine; private XmlView xmlView; - private ReportPreview preview; + private ReportPreview reportPreview; private ReportViewerSecondaryView reportViewer; - + private TestWPFReportPreview testView; #region Constructor @@ -67,6 +69,7 @@ namespace ICSharpCode.Reports.Addin if (generator == null) { throw new ArgumentNullException("generator"); } + Console.WriteLine("ReportDesignerView"); this.generator = generator; this.generator.Attach(this); base.TabPageText = ResourceService.GetString("SharpReport.Design"); @@ -86,15 +89,22 @@ namespace ICSharpCode.Reports.Addin private void SetupSecondaryView () { + Console.WriteLine("SetupSecondaryView ()"); + xmlView = new XmlView(generator,this); SecondaryViewContents.Add(xmlView); - preview = new ReportPreview(loader,this); - SecondaryViewContents.Add(preview); + + reportPreview = new ReportPreview(loader,this); + SecondaryViewContents.Add(reportPreview); + reportViewer = new ReportViewerSecondaryView(loader,this); SecondaryViewContents.Add(reportViewer); - var p = new WPFReportPreview(loader,this); - SecondaryViewContents.Add(p); + var wpfViewer = new WPFReportPreview(loader,this); + SecondaryViewContents.Add(wpfViewer); + + testView = new TestWPFReportPreview(loader,this); + SecondaryViewContents.Add(testView); } @@ -104,6 +114,7 @@ namespace ICSharpCode.Reports.Addin private void LoadDesigner(Stream stream) { + Console.WriteLine("LoadDesigner(Stream stream)"); LoggingService.Info("Form Designer: BEGIN INITIALIZE"); CreatePanel(); defaultServiceContainer = new DefaultServiceContainer(); @@ -245,6 +256,7 @@ namespace ICSharpCode.Reports.Addin private void MergeFormChanges() { + LoggingService.Info("MergeFormChanges()"); System.Diagnostics.Trace.WriteLine("View:MergeFormChanges()"); this.designSurface.Flush(); generator.MergeFormChanges(null); @@ -266,8 +278,9 @@ namespace ICSharpCode.Reports.Addin private void StartReportExplorer () { + LoggingService.Info("StartReportExplorer ()"); ReportExplorerPad explorerPad = CheckReportExplorer(); - WorkbenchSingleton.Workbench.GetPad(typeof(ReportExplorerPad)).BringPadToFront(); + SD.Workbench.GetPad(typeof(ReportExplorerPad)).BringPadToFront(); explorerPad.AddContent(this.loader.ReportModel); explorerPad.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(ReportExplorer_PropertyChanged); } @@ -275,6 +288,7 @@ namespace ICSharpCode.Reports.Addin private void ReportExplorer_PropertyChanged (object sender,System.ComponentModel.PropertyChangedEventArgs e) { + Console.WriteLine("ReportExplorer_PropertyChanged"); this.MakeDirty(); ReportExplorerPad explorerPad = CheckReportExplorer(); IComponentChangeService change = Host.GetService(typeof(IComponentChangeService)) as IComponentChangeService; @@ -286,7 +300,7 @@ namespace ICSharpCode.Reports.Addin { ReportExplorerPad p = ReportExplorerPad.Instance; if (p == null) { - WorkbenchSingleton.Workbench.GetPad(typeof(ReportExplorerPad)).CreatePad(); + SD.Workbench.GetPad(typeof(ReportExplorerPad)).CreatePad(); } return ReportExplorerPad.Instance; } @@ -318,7 +332,8 @@ namespace ICSharpCode.Reports.Addin if (shouldUpdateSelectableObjects) { // update the property pad after the transaction is *really* finished // (including updating the selection) - WorkbenchSingleton.SafeThreadAsyncCall(UpdatePropertyPad); +// WorkbenchSingleton.SafeThreadAsyncCall(UpdatePropertyPad); + SD.MainThread.InvokeAsync(null).FireAndForget(); shouldUpdateSelectableObjects = false; } } @@ -367,6 +382,7 @@ namespace ICSharpCode.Reports.Addin private void UpdatePropertyPad() { + Console.WriteLine("UpdatePropertyPad()"); if (IsFormsDesignerVisible && Host != null) { propertyContainer.Host = Host; propertyContainer.SelectableObjects = Host.Container.Components; @@ -391,10 +407,14 @@ namespace ICSharpCode.Reports.Addin #region IHasPropertyContainer impementation - PropertyContainer propertyContainer = new PropertyContainer(); +// PropertyContainer propertyContainer = new PropertyContainer(); + PropertyContainer propertyContainer; public PropertyContainer PropertyContainer { get { + if (propertyContainer == null) { + propertyContainer = new PropertyContainer(); + } return propertyContainer; } } @@ -544,9 +564,12 @@ namespace ICSharpCode.Reports.Addin public PrintDocument PrintDocument { get { + Console.WriteLine(""); + Console.WriteLine("----ReportdesignerView:PrintDocument------"); + Console.WriteLine(""); ReportModel model = loader.CreateRenderableModel(); IReportCreator reportCreator = null; - var paramCmd = new CollectParametersCommand(model); + var paramCmd = new CollectParametersCommand(model.ReportSettings); paramCmd.Run(); switch (model.DataModel) { case GlobalEnums.PushPullModel.FormSheet : @@ -665,7 +688,7 @@ namespace ICSharpCode.Reports.Addin } - public override void Save(ICSharpCode.SharpDevelop.OpenedFile file,Stream stream) + public override void Save(OpenedFile file,Stream stream) { LoggingService.Debug("ReportDesigner: Save to: " + file.FileName); @@ -714,8 +737,8 @@ namespace ICSharpCode.Reports.Addin if (this.xmlView != null) { this.xmlView.Dispose(); } - if (this.preview != null) { - this.preview.Dispose(); + if (this.reportPreview != null) { + this.reportPreview.Dispose(); } if (this.reportViewer != null) { this.reportViewer.Dispose(); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ReportExplorerPad.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ReportExplorerPad.cs index d974521a8e..3ebf7f5298 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ReportExplorerPad.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ReportExplorerPad.cs @@ -9,6 +9,7 @@ using System.Windows.Forms; using ICSharpCode.Core.WinForms; using ICSharpCode.Reports.Core; using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Workbench; namespace ICSharpCode.Reports.Addin { diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/AbstractItem.resx b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/AbstractItem.resx index 7080a7d118..1af7de150c 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/AbstractItem.resx +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/AbstractItem.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportManagers/StandartPreviewManager.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportManagers/StandartPreviewManager.cs index 3f82e9e7eb..f47724b582 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportManagers/StandartPreviewManager.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportManagers/StandartPreviewManager.cs @@ -64,7 +64,7 @@ namespace ICSharpCode.Reports.Addin private AbstractRenderer StandartReportRenderer(ReportModel model) { - ICSharpCode.Reports.Addin.Commands.CollectParametersCommand cmd = new ICSharpCode.Reports.Addin.Commands.CollectParametersCommand(model); + ICSharpCode.Reports.Addin.Commands.CollectParametersCommand cmd = new ICSharpCode.Reports.Addin.Commands.CollectParametersCommand(model.ReportSettings); cmd.Run(); return base.SetupStandardRenderer (model,null); } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/AbstractReportGenerator.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/AbstractReportGenerator.cs index 9b018805b6..ea921b2824 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/AbstractReportGenerator.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/AbstractReportGenerator.cs @@ -24,38 +24,29 @@ namespace ICSharpCode.Reports.Addin.ReportWizard public interface IReportGenerator{ void GenerateReport (); XmlDocument XmlReport {get;} - MemoryStream Generated { - get; - } - Properties Properties{ - get; - } + MemoryStream Generated {get;} + ReportStructure ReportStructure {get;} } + public abstract class AbstractReportGenerator : IReportGenerator { private StringWriter stringWriter; - private ReportItemCollection reportItemCollection; private AvailableFieldsCollection availableFieldsCollection; private ParameterCollection parameterCollection; - - private ColumnCollection groupColumnCollection; - protected AbstractReportGenerator(ReportModel reportModel,Properties properties) + protected AbstractReportGenerator(ReportModel reportModel,ReportStructure reportStructure) { if (reportModel == null) { throw new ArgumentNullException("reportModel"); } - - if (properties == null) { - throw new ArgumentNullException("customizer"); + if (reportStructure == null) { + throw new ArgumentNullException("reportStructure"); } this.ReportModel = reportModel; - this.Properties = properties; - ReportStructure = (ReportStructure)properties.Get("Generator"); - + ReportStructure = reportStructure; this.AvailableFieldsCollection.Clear(); this.ReportItemCollection.Clear(); this.GroupColumnCollection.Clear(); @@ -72,7 +63,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard this.GroupColumnCollection.AddRange(ReportModel.ReportSettings.GroupColumnsCollection); } if (ReportStructure.SqlQueryParameters.Count > 0) { - ReportModel.ReportSettings.ParameterCollection.AddRange(ReportStructure.SqlQueryParameters); + ReportModel.ReportSettings.SqlParameters.AddRange(ReportStructure.SqlQueryParameters); } } @@ -157,14 +148,11 @@ namespace ICSharpCode.Reports.Addin.ReportWizard #endregion - protected ReportStructure ReportStructure {get;private set;} + public ReportStructure ReportStructure {get;private set;} public ReportModel ReportModel {get;private set;} - - public Properties Properties {get; private set;} - - + protected ReportItemCollection ReportItemCollection { get { if (this.reportItemCollection == null) { this.reportItemCollection = new ReportItemCollection(); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GenerateFormSheetReport.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GenerateFormSheetReport.cs index a77a3f4787..5e1be6b3dc 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GenerateFormSheetReport.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GenerateFormSheetReport.cs @@ -15,8 +15,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard /// public class GenerateFormSheetReport:GeneratePlainReport { - public GenerateFormSheetReport(ReportModel reportModel, - Properties customizer):base(reportModel,customizer) + public GenerateFormSheetReport(ReportModel reportModel,ReportStructure reportStructure ):base(reportModel,reportStructure) { if (reportModel == null) { @@ -34,7 +33,6 @@ namespace ICSharpCode.Reports.Addin.ReportWizard ListLayout layout = new ListLayout(base.ReportModel,null); layout.CreateReportHeader(); layout.CreatePageFooter(); -// base.AdjustAllNames(); base.WriteToXml(); } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GeneratePlainReport.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GeneratePlainReport.cs index 5a3d0ddca4..95dd6f8885 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GeneratePlainReport.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GeneratePlainReport.cs @@ -15,16 +15,8 @@ namespace ICSharpCode.Reports.Addin.ReportWizard public class GeneratePlainReport:AbstractReportGenerator { - public GeneratePlainReport(ReportModel reportModel,Properties customizer):base(reportModel,customizer) - { - if (reportModel == null) { - throw new ArgumentNullException("reportModel"); - } - - if (base.ReportModel.ReportSettings.DataModel != GlobalEnums.PushPullModel.FormSheet) { - throw new InvalidReportModelException(); - } - } + public GeneratePlainReport(ReportModel reportModel,ReportStructure reportStructure):base(reportModel,reportStructure) + {} public override void GenerateReport() diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GeneratePullDataReport.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GeneratePullDataReport.cs index 0a29af0427..6fe86b8a41 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GeneratePullDataReport.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GeneratePullDataReport.cs @@ -15,15 +15,11 @@ namespace ICSharpCode.Reports.Addin.ReportWizard internal class GeneratePullDataReport: AbstractReportGenerator { - - public GeneratePullDataReport(ReportModel reportModel, - Properties properties):base(reportModel,properties) - + public GeneratePullDataReport(ReportModel reportModel,ReportStructure reportStructure):base(reportModel,reportStructure) { if (reportModel == null) { throw new ArgumentNullException("reportModel"); } - base.UpdateGenerator(); base.UpdateModel(); base.SqlQueryParameters.AddRange(base.ReportStructure.SqlQueryParameters); @@ -36,8 +32,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard base.ReportModel.ReportSettings.ReportType = GlobalEnums.ReportType.DataReport; base.ReportModel.ReportSettings.DataModel = GlobalEnums.PushPullModel.PullData; base.GenerateReport(); - - GlobalEnums.ReportLayout reportLayout = (GlobalEnums.ReportLayout)base.Properties.Get("ReportLayout"); + GlobalEnums.ReportLayout reportLayout = ReportStructure.ReportLayout; AbstractLayout layout = LayoutFactory.CreateGenerator(reportLayout,base.ReportModel,base.ReportItemCollection); layout.CreateReportHeader(); layout.CreatePageHeader(); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GeneratePushDataReport.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GeneratePushDataReport.cs index a9587879aa..51da81c44f 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GeneratePushDataReport.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GeneratePushDataReport.cs @@ -24,10 +24,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard /// /// Default constructor - initializes all fields to default values /// - public GeneratePushDataReport(ReportModel reportModel, - Properties properties):base(reportModel,properties) - { - + public GeneratePushDataReport(ReportModel reportModel,ReportStructure reportStructure):base(reportModel,reportStructure){ base.UpdateGenerator(); base.UpdateModel(); } @@ -38,9 +35,9 @@ namespace ICSharpCode.Reports.Addin.ReportWizard base.ReportModel.ReportSettings.ReportType = GlobalEnums.ReportType.DataReport; base.ReportModel.ReportSettings.DataModel = GlobalEnums.PushPullModel.PushData; base.GenerateReport(); - GlobalEnums.ReportLayout reportLayout = (GlobalEnums.ReportLayout)base.Properties.Get("ReportLayout"); - - AbstractLayout layout = LayoutFactory.CreateGenerator(reportLayout,base.ReportModel,base.ReportItemCollection); + + GlobalEnums.ReportLayout reportLayout = ReportStructure.ReportLayout; + var layout = LayoutFactory.CreateGenerator(reportLayout,base.ReportModel,base.ReportItemCollection); layout.CreateReportHeader(); layout.CreatePageHeader(); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GeneratorFactory.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GeneratorFactory.cs index 245c2558eb..7787a2aa64 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GeneratorFactory.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GeneratorFactory.cs @@ -35,20 +35,19 @@ namespace ICSharpCode.Reports.Addin.ReportWizard public static class GeneratorFactory { - public static IReportGenerator Create (ReportModel model, - Properties customizer) + public static IReportGenerator Create (ReportModel model,ReportStructure reportStructure) + { IReportGenerator reportGenerator = null; switch (model.DataModel) { case GlobalEnums.PushPullModel.PullData: - reportGenerator = new GeneratePullDataReport(model,customizer); - + reportGenerator = new GeneratePullDataReport(model,reportStructure); break; case GlobalEnums.PushPullModel.PushData: - reportGenerator = new GeneratePushDataReport(model,customizer); + reportGenerator = new GeneratePushDataReport(model,reportStructure); break; case GlobalEnums.PushPullModel.FormSheet: - reportGenerator = new GenerateFormSheetReport (model,customizer); + reportGenerator = new GenerateFormSheetReport (model,reportStructure); break; } return reportGenerator; diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/AbstractLayout.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/AbstractLayout.cs index c7484a215d..c2d5b17293 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/AbstractLayout.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/AbstractLayout.cs @@ -138,7 +138,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard #endregion - protected ReportItemCollection AddItemsToContainer () + protected ReportItemCollection CreateItemsCollection () { int locationX = GlobalValues.ControlMargins.Left; diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/ListLayout.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/ListLayout.cs index 1c1d2e1b88..274cb0b3ef 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/ListLayout.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/ListLayout.cs @@ -77,7 +77,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard Size CreateDetail() { - var items = base.AddItemsToContainer(); + var items = base.CreateItemsCollection(); Container.Items.AddRange(items); return items[0].Size; } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportStructure.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportStructure.cs index 90256bff66..26fcab164b 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportStructure.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportStructure.cs @@ -25,11 +25,10 @@ namespace ICSharpCode.Reports.Addin.ReportWizard private ReportItemCollection reportItemCollection; private AvailableFieldsCollection availableFieldsCollection; - private ParameterCollection queryParameters; - public ReportStructure() { + SqlQueryParameters = new SqlParameterCollection(); } public ReportModel CreateAndFillReportModel () @@ -66,7 +65,6 @@ namespace ICSharpCode.Reports.Addin.ReportWizard if (!String.IsNullOrEmpty(this.Grouping)) { string s = "=[" + this.Grouping + "]"; - //GroupColumn g = new GroupColumn(this.Grouping,1,System.ComponentModel.ListSortDirection.Ascending); GroupColumn g = new GroupColumn(s,1,System.ComponentModel.ListSortDirection.Ascending); settings.GroupColumnsCollection.Add(g); } @@ -103,15 +101,8 @@ namespace ICSharpCode.Reports.Addin.ReportWizard public IDatabaseObjectBase IDatabaseObjectBase {get;set;} - public ParameterCollection SqlQueryParameters { - get { - if (this.queryParameters == null) { - this.queryParameters = new ParameterCollection(); - } - return queryParameters; - } - } - + + public SqlParameterCollection SqlQueryParameters {get;set;} #endregion @@ -138,12 +129,15 @@ namespace ICSharpCode.Reports.Addin.ReportWizard #endregion + public GlobalEnums.ReportLayout ReportLayout {get;set;} + #region Grouping public string Grouping {get;set;} #endregion + #region IDisposable public void Dispose(){ this.Dispose(true); @@ -164,9 +158,9 @@ namespace ICSharpCode.Reports.Addin.ReportWizard this.availableFieldsCollection.Clear(); this.availableFieldsCollection = null; } - if (this.queryParameters != null) { - this.queryParameters.Clear(); - this.queryParameters = null; + if (this.SqlQueryParameters != null) { + this.SqlQueryParameters.Clear(); + this.SqlQueryParameters = null; } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportWizardCommand.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportWizardCommand.cs index d12acafc05..ebf47a6be6 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportWizardCommand.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportWizardCommand.cs @@ -10,6 +10,7 @@ using ICSharpCode.Reports.Core; using ICSharpCode.Reports.Core.Globals; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Workbench; namespace ICSharpCode.Reports.Addin.ReportWizard { @@ -22,7 +23,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard private OpenedFile file; private ReportModel reportModel; private IReportGenerator reportGenerator; - private Properties customizer = new Properties(); +// private Properties customizer = new Properties(); private ReportStructure reportStructure; private bool canceled; @@ -36,15 +37,12 @@ namespace ICSharpCode.Reports.Addin.ReportWizard public override void Run() { reportStructure = new ReportStructure(); - customizer.Set("Generator", reportStructure); - customizer.Set("ReportLayout",GlobalEnums.ReportLayout.ListLayout); - if (GlobalValues.IsValidPrinter() == true) { - using (WizardDialog wizard = new WizardDialog("Report Wizard", customizer, WizardPath)) { + using (WizardDialog wizard = new WizardDialog("Report Wizard", reportStructure, WizardPath)) { if (wizard.ShowDialog() == DialogResult.OK) { reportModel = reportStructure.CreateAndFillReportModel (); - CreateReportFromModel(reportModel); + CreateReportFromModel(reportModel,reportStructure); } else{ this.canceled = true; @@ -56,9 +54,9 @@ namespace ICSharpCode.Reports.Addin.ReportWizard } - private void CreateReportFromModel (ReportModel model) + private void CreateReportFromModel (ReportModel model,ReportStructure reportStructure) { - reportGenerator = GeneratorFactory.Create (model,customizer); + reportGenerator = GeneratorFactory.Create (model,reportStructure); file.MakeDirty(); reportGenerator.GenerateReport(); } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/BaseSettingsPanel.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/BaseSettingsPanel.cs index 89f24e73ca..92d2a39f29 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/BaseSettingsPanel.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/BaseSettingsPanel.cs @@ -42,9 +42,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard{ private RadioButton radioStandardLayout; private RadioButton radioLandscape; - ReportStructure generator; - Properties customizer; - + ReportStructure reportStructure; bool initDone; public BaseSettingsPanel(){ @@ -157,36 +155,35 @@ namespace ICSharpCode.Reports.Addin.ReportWizard{ private void UpdateGenerator () { - if (customizer == null) { - customizer = (Properties)base.CustomizationObject; - generator = (ReportStructure)customizer.Get("Generator"); - } - generator.ReportName = txtReportName.Text; + reportStructure = (ReportStructure)base.CustomizationObject; + + + reportStructure.ReportName = txtReportName.Text; if (!this.txtFileName.Text.EndsWith(GlobalValues.ReportExtension,StringComparison.OrdinalIgnoreCase)){ - generator.FileName = txtFileName.Text + GlobalValues.ReportExtension; + reportStructure.FileName = txtFileName.Text + GlobalValues.ReportExtension; } else { - generator.FileName = txtFileName.Text; + reportStructure.FileName = txtFileName.Text; } - generator.Path = this.txtPath.Text; - generator.GraphicsUnit = (GraphicsUnit)Enum.Parse(typeof(GraphicsUnit), + reportStructure.Path = this.txtPath.Text; + reportStructure.GraphicsUnit = (GraphicsUnit)Enum.Parse(typeof(GraphicsUnit), this.cboGraphicsUnit.Text); if (this.radioPullModell.Checked == true) { base.NextWizardPanelID = "PullModel"; - generator.DataModel = GlobalEnums.PushPullModel.PullData; + reportStructure.DataModel = GlobalEnums.PushPullModel.PullData; GoOn(); } else if (this.radioPushModell.Checked == true){ base.NextWizardPanelID = "PushModel"; - generator.DataModel = GlobalEnums.PushPullModel.PushData; + reportStructure.DataModel = GlobalEnums.PushPullModel.PushData; GoOn(); } else if (this.radioFormSheet.Checked == true){ - generator.DataModel = GlobalEnums.PushPullModel.FormSheet; + reportStructure.DataModel = GlobalEnums.PushPullModel.FormSheet; base.EnableNext = false; base.IsLastPanel = true; } - generator.Landscape = this.radioLandscape.Checked; + reportStructure.Landscape = this.radioLandscape.Checked; } @@ -196,11 +193,11 @@ namespace ICSharpCode.Reports.Addin.ReportWizard{ if (this.radioPullModell.Checked == true) { base.NextWizardPanelID = "PullModel"; - generator.DataModel = GlobalEnums.PushPullModel.PullData; + reportStructure.DataModel = GlobalEnums.PushPullModel.PullData; GoOn(); } else if (this.radioPushModell.Checked == true){ base.NextWizardPanelID = "PushModel"; - generator.DataModel = GlobalEnums.PushPullModel.PushData; + reportStructure.DataModel = GlobalEnums.PushPullModel.PushData; GoOn(); } else if (this.radioFormSheet.Checked == true){ // generator.DataModel = GlobalEnums.PushPullModel.FormSheet; @@ -208,10 +205,10 @@ namespace ICSharpCode.Reports.Addin.ReportWizard{ base.IsLastPanel = true; } else if(this.radioStandardLayout.Checked == true) { - generator.Landscape = false; + reportStructure.Landscape = false; } else if(this.radioLandscape.Checked == true) { - generator.Landscape = true; + reportStructure.Landscape = true; } base.EnableFinish = true; diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/LayoutPanel.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/LayoutPanel.cs index b88dda21e4..d3881d7c2c 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/LayoutPanel.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/LayoutPanel.cs @@ -3,9 +3,6 @@ using System; using System.Drawing; -using ICSharpCode.Core; -using ICSharpCode.Reports.Core; -using ICSharpCode.Reports.Core.Globals; namespace ICSharpCode.Reports.Addin.ReportWizard { @@ -15,7 +12,6 @@ namespace ICSharpCode.Reports.Addin.ReportWizard public class LayoutPanel: AbstractWizardPanel { private LayoutPanelControl layoutControl; - private Properties customizer; private ReportStructure reportStructure; public LayoutPanel() @@ -36,22 +32,14 @@ namespace ICSharpCode.Reports.Addin.ReportWizard base.EnableFinish = true; base.IsLastPanel = true; base.EnablePrevious = true; - - if (customizer == null) { - customizer = (Properties)base.CustomizationObject; - } - + reportStructure = (ReportStructure)base.CustomizationObject; if (message == DialogMessage.Activated) { - - this.layoutControl.ReportLayout = (GlobalEnums.ReportLayout)customizer.Get("ReportLayout"); - reportStructure = (ReportStructure)customizer.Get("Generator"); layoutControl.AvailableFieldsCollection = reportStructure.AvailableFieldsCollection; } else if (message == DialogMessage.Finish) { - customizer.Set ("ReportLayout",this.layoutControl.ReportLayout); - var reportStructure = (ReportStructure)customizer.Get("Generator"); + reportStructure.ReportLayout = layoutControl.ReportLayout; reportStructure.Grouping = layoutControl.GroupName; } return true; diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/PullModelPanel.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/PullModelPanel.cs index 5f2ed7fc82..4ef3ca0c50 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/PullModelPanel.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/PullModelPanel.cs @@ -3,6 +3,7 @@ using System; using System.Data; +using System.Data.SqlClient; using System.Globalization; using System.Reflection; using System.Windows.Forms; @@ -13,7 +14,6 @@ using ICSharpCode.Data.Core.Interfaces; using ICSharpCode.Data.Core.UI.UserControls; using ICSharpCode.SharpDevelop; - namespace ICSharpCode.Reports.Addin.ReportWizard { /// @@ -29,7 +29,6 @@ namespace ICSharpCode.Reports.Addin.ReportWizard private bool firstDrag; private string connectionString; private ReportStructure reportStructure; - private Properties customizer; private IDatabaseObjectBase currentNode; private ElementHost databasesTreeHost; private DatabasesTreeView databasesTree; @@ -76,13 +75,10 @@ namespace ICSharpCode.Reports.Addin.ReportWizard public override bool ReceiveDialogMessage(DialogMessage message) { - if (customizer == null) { - customizer = (Properties)base.CustomizationObject; - reportStructure = (ReportStructure)customizer.Get("Generator"); - } + this.reportStructure = (ReportStructure)base.CustomizationObject; + if (message == DialogMessage.Next) { - customizer.Set("SqlString", this.txtSqlString.Text.Trim()); reportStructure.SqlString = this.txtSqlString.Text.Trim(); reportStructure.ConnectionString = connectionString; base.EnableFinish = true; @@ -211,53 +207,52 @@ namespace ICSharpCode.Reports.Addin.ReportWizard } - private void databasesTree_SelectedItemChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs e) - { - if (e.NewValue is IDatabaseObjectBase) - { - IDatabase parentDatabase = e.NewValue as IDatabase; - - if (parentDatabase == null) - { - IDatabaseObjectBase currentDatabaseObject = e.NewValue as IDatabaseObjectBase; + private void databasesTree_SelectedItemChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs e) + { + if (e.NewValue is IDatabaseObjectBase) + { + IDatabase parentDatabase = e.NewValue as IDatabase; - while (parentDatabase == null) - { - if (currentDatabaseObject.Parent == null) - break; - else if (currentDatabaseObject.Parent is IDatabase) - { - parentDatabase = currentDatabaseObject.Parent as IDatabase; - break; - } - else - currentDatabaseObject = currentDatabaseObject.Parent; - } - } + if (parentDatabase == null) + { + IDatabaseObjectBase currentDatabaseObject = e.NewValue as IDatabaseObjectBase; + while (parentDatabase == null) + { + if (currentDatabaseObject.Parent == null) + break; + else if (currentDatabaseObject.Parent is IDatabase) + { + parentDatabase = currentDatabaseObject.Parent as IDatabase; + break; + } + else + currentDatabaseObject = currentDatabaseObject.Parent; + } + } - if (parentDatabase != null) - this.currentNode = parentDatabase; + if (parentDatabase != null) + this.currentNode = parentDatabase; - if (this.currentNode is IDatabase) - { - if (parentDatabase != null) - { - this.connectionString = "Provider=" + parentDatabase.Datasource.DatabaseDriver.ODBCProviderName + ";" + parentDatabase.ConnectionString; - this.txtSqlString.Enabled = true; + if (this.currentNode is IDatabase) + { + if (parentDatabase != null) + { + this.connectionString = parentDatabase.ConnectionString; + this.txtSqlString.Enabled = true; - if (this.firstDrag) - this.txtSqlString.Text = string.Empty; - - firstDrag = false; - } - } - else - { - this.EnableNext = false; - } - } - } + if (this.firstDrag) + this.txtSqlString.Text = string.Empty; + + firstDrag = false; + } + } + else + { + this.EnableNext = false; + } + } + } // check witch type of node we dragg private static NodeType CheckCurrentNode (IDatabaseObjectBase node) { diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/PullModelPanel.resx b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/PullModelPanel.resx index 271670364a..757195cb3e 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/PullModelPanel.resx +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/PullModelPanel.resx @@ -112,12 +112,13 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + 17, 17 - + \ No newline at end of file diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/PushModelPanel.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/PushModelPanel.cs index 74aa1a93df..2101f59543 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/PushModelPanel.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/PushModelPanel.cs @@ -25,7 +25,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard private System.Windows.Forms.TextBox txtPath; private ReportStructure reportStructure; - private Properties customizer; +// private Properties customizer; private DataSet resultDataSet; public PushModelPanel() @@ -84,13 +84,12 @@ namespace ICSharpCode.Reports.Addin.ReportWizard public override bool ReceiveDialogMessage(DialogMessage message) { - if (customizer == null) { - customizer = (Properties)base.CustomizationObject; - reportStructure = (ReportStructure)customizer.Get("Generator"); - base.NextWizardPanelID = "Layout"; - } - else if (message == DialogMessage.Activated) { + reportStructure = (ReportStructure)base.CustomizationObject; + base.NextWizardPanelID = "Layout"; + + + if (message == DialogMessage.Activated) { WriteResult(); base.EnableNext = true; } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/PushModelPanel.resx b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/PushModelPanel.resx index 7080a7d118..1af7de150c 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/PushModelPanel.resx +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/PushModelPanel.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/ResultPanel.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/ResultPanel.cs index 748cfe03a6..ae32627c38 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/ResultPanel.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/ResultPanel.cs @@ -19,6 +19,7 @@ using ICSharpCode.Reports.Core; using ICSharpCode.Reports.Core.DataAccess; using ICSharpCode.Reports.Core.Globals; using ICSharpCode.Reports.Core.Project.BaseClasses; +using ICSharpCode.Reports.Core.Project.Interfaces; using ICSharpCode.SharpDevelop; namespace ICSharpCode.Reports.Addin.ReportWizard @@ -34,11 +35,8 @@ namespace ICSharpCode.Reports.Addin.ReportWizard private System.Windows.Forms.Label label1; private System.Windows.Forms.TextBox txtSqlString; - private ReportStructure reportStructure; - private Properties customizer; private ReportModel model; - private ConnectionObject connectionObject; private DataSet resultDataSet; @@ -67,15 +65,15 @@ namespace ICSharpCode.Reports.Addin.ReportWizard DataSet dataSet = ResultPanel.CreateDataSet (); this.txtSqlString.Text = model.ReportSettings.CommandText; + + var dataAccess = new SqlDataAccessStrategy(model.ReportSettings); + switch (model.ReportSettings.CommandType) { case CommandType.Text: - this.connectionObject = CreateConnection (); - var dataAccess = new SqlDataAccessStrategy(model.ReportSettings,connectionObject); - dataSet = dataAccess.ReadData(); - dataSet.Tables[0].TableName = CreateTableName (reportStructure); + dataSet = DataSetFromSqlText(dataAccess); break; case CommandType.StoredProcedure: - dataSet = DatasetFromStoredProcedure(); + dataSet = DataSetFromStoredProcedure(dataAccess); break; case CommandType.TableDirect: MessageService.ShowError("TableDirect is not suppurted at the moment"); @@ -87,17 +85,6 @@ namespace ICSharpCode.Reports.Addin.ReportWizard } - ConnectionObject CreateConnection() - { - - var conobj = ConnectionObject.CreateInstance(this.model.ReportSettings.ConnectionString, - System.Data.Common.DbProviderFactories.GetFactory("System.Data.OleDb")); - conobj.QueryString = model.ReportSettings.CommandText; - return conobj; - - } - - string CreateTableName(ReportStructure reportStructure) { ITable t = reportStructure.IDatabaseObjectBase as ITable; @@ -114,43 +101,45 @@ namespace ICSharpCode.Reports.Addin.ReportWizard } - DataSet DatasetFromStoredProcedure() + private DataSet DataSetFromSqlText(IDataAccessStrategy dataAccess) + { + var dataSet = dataAccess.ReadData(); + dataSet.Tables[0].TableName = CreateTableName (reportStructure); + return dataSet; + } + + + private DataSet DataSetFromStoredProcedure(IDataAccessStrategy dataAccess) { - this.connectionObject = CreateConnection(); DataSet dataSet = ResultPanel.CreateDataSet(); - IProcedure procedure = reportStructure.IDatabaseObjectBase as IProcedure; - - var paramCollection = CheckParameters(procedure); + IProcedure procedure = reportStructure.IDatabaseObjectBase as IProcedure; + var sqlParamCollection = CreateSqlParameters(procedure); - if (paramCollection.Count > 0) { - FillParameters(paramCollection); - reportStructure.SqlQueryParameters.AddRange(paramCollection); + if (sqlParamCollection.Count > 0) { + reportStructure.SqlQueryParameters.AddRange(sqlParamCollection); + model.ReportSettings.SqlParameters.AddRange(sqlParamCollection); + CollectParamValues(model.ReportSettings); + } - - var dataAccess = new SqlDataAccessStrategy(model.ReportSettings,connectionObject); dataSet = dataAccess.ReadData(); dataSet.Tables[0].TableName = procedure.Name; - return dataSet; } - - void FillParameters(ParameterCollection paramCollection) - { - model.ReportSettings.ParameterCollection.AddRange(paramCollection); - CollectParametersCommand p = new CollectParametersCommand(model); + void CollectParamValues(ReportSettings reportSettings){ + + CollectParametersCommand p = new CollectParametersCommand(reportSettings); p.Run(); } - ParameterCollection CheckParameters(IProcedure procedure) + SqlParameterCollection CreateSqlParameters(IProcedure procedure) { - ParameterCollection col = new ParameterCollection(); + SqlParameterCollection col = new SqlParameterCollection(); SqlParameter par = null; foreach (var element in procedure.Items) { - DbType dbType = TypeHelpers.DbTypeFromStringRepresenation(element.DataType); par = new SqlParameter(element.Name,dbType,"",ParameterDirection.Input); @@ -158,9 +147,9 @@ namespace ICSharpCode.Reports.Addin.ReportWizard par.ParameterDirection = ParameterDirection.Input; } else if (element.ParameterMode == ParameterMode. InOut){ - par.ParameterDirection = ParameterDirection.InputOutput; + par.ParameterDirection = ParameterDirection.InputOutput; } - col.Add(par); + col.Add(par); } return col; } @@ -232,10 +221,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard public override bool ReceiveDialogMessage(DialogMessage message) { - if (customizer == null) { - customizer = (Properties)base.CustomizationObject; - reportStructure = (ReportStructure)customizer.Get("Generator"); - } + reportStructure = (ReportStructure)base.CustomizationObject; if (message == DialogMessage.Activated) { ShowData(); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/ResultPanel.resx b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/ResultPanel.resx index 7080a7d118..1af7de150c 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/ResultPanel.resx +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/ResultPanel.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/Wizard/WizardDialog.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/Wizard/WizardDialog.cs index f1a7c38fc1..aa1c9d948d 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/Wizard/WizardDialog.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/Wizard/WizardDialog.cs @@ -31,6 +31,8 @@ namespace ICSharpCode.Reports.Addin.ReportWizard ArrayList wizardPanels = new ArrayList(); int activePanelNumber = 0; + ReportStructure reportStructure; + EventHandler enableNextChangedHandler; EventHandler enableCancelChangedHandler; EventHandler nextWizardPanelIDChangedHandler; @@ -184,14 +186,14 @@ namespace ICSharpCode.Reports.Addin.ReportWizard } - public WizardDialog(string title, object customizer, string treePath) + public WizardDialog(string title, ReportStructure reportStructure, string treePath) { - + this.reportStructure = reportStructure; AddInTreeNode node = AddInTree.GetTreeNode(treePath); this.Text = title; if (node != null) { - AddNodes(customizer, node.BuildChildItems(this)); + AddNodes(this.reportStructure, node.BuildChildItems(this)); } InitializeComponents(); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/ReportPreview.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/ReportPreview.cs index 5b1cfe1f78..57f957e5bb 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/ReportPreview.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/ReportPreview.cs @@ -5,7 +5,9 @@ using System; using ICSharpCode.Core; using ICSharpCode.Reports.Core; using ICSharpCode.Reports.Core.Globals; +using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Workbench; namespace ICSharpCode.Reports.Addin.SecondaryViews { diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/ReportViewerSecondaryView.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/ReportViewerSecondaryView.cs index b0cb83ca03..9da3c85217 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/ReportViewerSecondaryView.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/ReportViewerSecondaryView.cs @@ -6,7 +6,9 @@ using ICSharpCode.Core; using ICSharpCode.Reports.Addin.Commands; using ICSharpCode.Reports.Core; using ICSharpCode.Reports.Core.Globals; +using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Workbench; namespace ICSharpCode.Reports.Addin.SecondaryViews { 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 new file mode 100644 index 0000000000..48b401c1fd --- /dev/null +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/TestView/TestWPFReportPreview.cs @@ -0,0 +1,87 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 03.05.2011 + * Time: 19:34 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.ObjectModel; +using System.Xml; + +using ICSharpCode.Reporting; +using ICSharpCode.Reporting.BaseClasses; +using ICSharpCode.Reporting.Exporter; +using ICSharpCode.Reporting.Globals; +using ICSharpCode.Reporting.Interfaces; +using ICSharpCode.Reporting.Interfaces.Export; +using ICSharpCode.Reporting.Items; +using ICSharpCode.Reporting.WpfReportViewer; +using ICSharpCode.Reporting.Xml; +using ICSharpCode.SharpDevelop; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Workbench; + +//using ICSharpCode.Reports.Addin.Commands; +//using ICSharpCode.Reports.Core; +//using ICSharpCode.Reports.Core.Exporter.ExportRenderer; +//using ICSharpCode.Reports.Core.Globals; +//using ICSharpCode.Reports.Core.WpfReportViewer; + + + + +namespace ICSharpCode.Reports.Addin.SecondaryViews +{ + /// + /// Description of WPFReportPreview. + /// + public class TestWPFReportPreview: AbstractSecondaryViewContent + { + ReportDesignerLoader designerLoader; + + ICSharpCode.Reporting.WpfReportViewer.IWpfReportViewer viewer; + +// IExportRunner exportRunner = new ExportRunner(); + + public TestWPFReportPreview(ReportDesignerLoader loader,IViewContent content):base(content) + { + this.designerLoader = loader; + viewer = new ICSharpCode.Reporting.WpfReportViewer.WpfReportViewer(); + base.TabPageText = "TestWpf View"; + Pages = new Collection(); + } + + + public Collection Pages{get;private set;} + + + protected override void LoadFromPrimary() + { + Pages.Clear(); + var xmDoc = designerLoader.CreateXmlModel(); + var modulLoader = new ModelLoader(); + ReportModel model = (ReportModel)modulLoader.Load(xmDoc.DocumentElement); + + var reportingFactory = new ReportingFactory(); + var reportCreator = reportingFactory.ReportCreator(model); + reportCreator.BuildExportList(); + + PreviewViewModel previewViewModel = new PreviewViewModel (model.ReportSettings,reportCreator.Pages); + viewer.SetBinding(previewViewModel); + } + + protected override void SaveToPrimary() + { +// throw new NotImplementedException(); + } + + + public override object Control { + get { + return viewer; + } + } + } +} diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/WPFReportPreview.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/WPFReportPreview.cs index a901fdaf87..e50955a3bd 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/WPFReportPreview.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/WPFReportPreview.cs @@ -7,12 +7,15 @@ * To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System; +using ICSharpCode.Reporting.Xml; using ICSharpCode.Reports.Addin.Commands; using ICSharpCode.Reports.Core; using ICSharpCode.Reports.Core.Exporter.ExportRenderer; using ICSharpCode.Reports.Core.Globals; using ICSharpCode.Reports.Core.WpfReportViewer; +using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Workbench; namespace ICSharpCode.Reports.Addin.SecondaryViews { @@ -41,7 +44,12 @@ namespace ICSharpCode.Reports.Addin.SecondaryViews { Pages.Clear(); ReportModel model = designerLoader.CreateRenderableModel(); - var collectCmd = new CollectParametersCommand(model); + //TODO change to designerLoader.CreateXmlModel(); +// var xmDoc = designerLoader.CreateXmlModel(); +// var modulLoader = new ModelLoader(); +// ReportModel model = (ReportModel)modulLoader.Load(xmDoc.DocumentElement); + + var collectCmd = new CollectParametersCommand(model.ReportSettings); collectCmd.Run(); switch (model.DataModel) { diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/XmlView.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/XmlView.cs index b9c177af5d..8b501b74fe 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/XmlView.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/XmlView.cs @@ -3,8 +3,10 @@ using System; using System.Windows.Forms; -using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.Core; +using ICSharpCode.SharpDevelop; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Workbench; namespace ICSharpCode.Reports.Addin.SecondaryViews { diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Services/HelpService.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Services/HelpService.cs index 453649d130..408219b3b1 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Services/HelpService.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Services/HelpService.cs @@ -68,7 +68,7 @@ namespace ICSharpCode.Reports.Addin } public void ShowHelp() { - HelpProvider.ShowHelp(f1Keyword); +// HelpProvider.ShowHelp(f1Keyword); } public void ShowHelpFromUrl(string helpUrl) diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Services/TypeDiscoveryService.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Services/TypeDiscoveryService.cs index 1f1d912c62..2a51311c80 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Services/TypeDiscoveryService.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Services/TypeDiscoveryService.cs @@ -38,11 +38,12 @@ namespace ICSharpCode.Reports.Addin //allow to work designers like columns editor in datagridview // Searching types can cause additional assemblies to be loaded, so we need to use // ToArray to prevent an exception if the collection changes. + foreach (Assembly asm in TypeResolutionService.DesignerAssemblies.ToArray()) { if (excludeGlobalTypes) { - if (GacInterop.IsWithinGac(asm.Location)) { - continue; - } +// if (GacInterop.IsWithinGac(asm.Location)) { +// continue; +// } } AddDerivedTypes(baseType, asm, types); } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/UndoRedo/UndoEngine.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/UndoRedo/UndoEngine.cs index 1e25020eb4..4b050c98c4 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/UndoRedo/UndoEngine.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/UndoRedo/UndoEngine.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.ComponentModel.Design; using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.WinForms; namespace ICSharpCode.Reports.Addin { diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Xml/ReportDefinitionParser.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Xml/ReportDefinitionParser.cs index 9fecae79d3..832e21bb9b 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Xml/ReportDefinitionParser.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Xml/ReportDefinitionParser.cs @@ -52,7 +52,7 @@ namespace ICSharpCode.Reports.Addin } //Trace.Assert(t != null, "Type "+cname+" could not be determined."); // Debug.WriteLine("Looking for " + cname + " and got " + t.FullName); - + Console.WriteLine("ReportDefinitionParser - Looking for " + cname + " and got " + t.FullName); try { ret=Activator.CreateInstance(t); @@ -223,6 +223,7 @@ namespace ICSharpCode.Reports.Addin if (tc.CanConvertFrom(typeof(string))) { object val=tc.ConvertFromInvariantString(value); + Console.WriteLine("\tRDP -> SetPropertyToString {0} - {1}",pi.Name,value.ToString()); pi.SetValue(obj, val, null); } else if (pi.PropertyType == typeof(Type)) { pi.SetValue(obj, Type.GetType(value), null); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/DerivedReportDesignerDisplayBinding.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/DerivedReportDesignerDisplayBinding.cs deleted file mode 100644 index 3ed9cc40a7..0000000000 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/DerivedReportDesignerDisplayBinding.cs +++ /dev/null @@ -1,29 +0,0 @@ -// 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; - -namespace ICSharpCode.Reports.Addin.Test.Designer -{ - /// - /// Description of DerivedReportDesignerDisplayBinding. - /// - public class DerivedReportDesignerDisplayBinding:ReportDesignerDisplayBinding - { - public DerivedReportDesignerDisplayBinding() - { - } - - /// - /// Determines whether the specified parse information contains - /// a class which is designable. - /// - /* - protected override bool IsDesignable(ParseInformation parseInfo) - { - this.parseInfo = parseInfo; - return isParseInfoDesignable; - } - */ - } -} diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/MockDesignerGenerator.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/MockDesignerGenerator.cs index 6dc8b88eab..a38c919de6 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/MockDesignerGenerator.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/MockDesignerGenerator.cs @@ -3,6 +3,8 @@ using System; using ICSharpCode.Reports.Addin; +using ICSharpCode.SharpDevelop; +using ICSharpCode.SharpDevelop.Workbench; namespace ICSharpCode.Reports.Addin.Test.Designer { @@ -29,7 +31,7 @@ namespace ICSharpCode.Reports.Addin.Test.Designer public void Attach(ReportDesignerView viewContent) { - this.view = viewContent; + this.view = viewContent; } public void Detach() @@ -37,7 +39,7 @@ namespace ICSharpCode.Reports.Addin.Test.Designer throw new NotImplementedException(); } - public System.Collections.Generic.IEnumerable GetSourceFiles(out ICSharpCode.SharpDevelop.OpenedFile designerCodeFile) + public System.Collections.Generic.IEnumerable GetSourceFiles(out OpenedFile designerCodeFile) { throw new NotImplementedException(); } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/MockOpenedFile.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/MockOpenedFile.cs index b4b99c5813..bc3762202f 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/MockOpenedFile.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/MockOpenedFile.cs @@ -5,7 +5,7 @@ using System; using System.Collections.Generic; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Gui; - +using ICSharpCode.SharpDevelop.Workbench; //Namespace adapted to namespace ICSharpCode.Reports.Addin.Test.Designer { @@ -18,7 +18,7 @@ namespace ICSharpCode.Reports.Addin.Test.Designer { } - public MockOpenedFile(string fileName) + public MockOpenedFile(string fileName):base() { this.FileName = ICSharpCode.Core.FileName.Create(fileName); } @@ -29,6 +29,10 @@ namespace ICSharpCode.Reports.Addin.Test.Designer } } + protected override void ChangeFileName(ICSharpCode.Core.FileName newValue) + { + + } public override void RegisterView(IViewContent view) { } @@ -39,9 +43,6 @@ namespace ICSharpCode.Reports.Addin.Test.Designer public override event EventHandler FileClosed { add {} remove {} } -// public override bool IsDirty { -// get { return base.IsDirty; } -// set { base.IsDirty = value; } -// } + } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/MockReportDesignerDisplayBinding.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/MockReportDesignerDisplayBinding.cs index d3122d361c..d6af28b709 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/MockReportDesignerDisplayBinding.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/MockReportDesignerDisplayBinding.cs @@ -7,6 +7,7 @@ using NUnit.Framework; namespace ICSharpCode.Reports.Addin.Test.Designer { [TestFixture] + [Ignore] public class MockReportDesignerDisplayBinding:ReportDesignerDisplayBinding { [Test] diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/MockViewContend.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/MockViewContend.cs index 468ed8876c..5fa3bd9677 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/MockViewContend.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/MockViewContend.cs @@ -4,9 +4,11 @@ using System; using System.Collections.Generic; using System.Windows.Forms; + using ICSharpCode.Core; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Workbench; namespace ICSharpCode.Reports.Addin.Test.Designer { diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/ReportDesignerDisplayBindingTestFixture.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/ReportDesignerDisplayBindingTestFixture.cs index 292fcffda9..2d7d8094d6 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/ReportDesignerDisplayBindingTestFixture.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/ReportDesignerDisplayBindingTestFixture.cs @@ -8,24 +8,27 @@ using ICSharpCode.Reports.Addin.ReportWizard; using ICSharpCode.Reports.Core; using ICSharpCode.Reports.Core.Globals; using ICSharpCode.SharpDevelop; +using ICSharpCode.SharpDevelop.Workbench; using NUnit.Framework; namespace ICSharpCode.Reports.Addin.Test.Designer { + [TestFixture] + public class ReportDesignerDisplayBindingTestFixture { - DerivedReportDesignerDisplayBinding displayBinding; - MockViewContent viewContent; + ReportDesignerDisplayBinding displayBinding; +// MockViewContent viewContent; //bool canAttachToDesignableClass; [SetUp] public void SetUp() { - displayBinding = new DerivedReportDesignerDisplayBinding(); - viewContent = new MockViewContent(); - viewContent.PrimaryFileName = FileName.Create("test.srd"); + displayBinding = new ReportDesignerDisplayBinding(); +// viewContent = new MockViewContent(); +// viewContent.PrimaryFileName = FileName.Create("test.srd"); // viewContent.TextEditorControl.Text = "text content"; // parseInfo = new ParseInformation(); // displayBinding.ParseServiceParseInfoToReturn = parseInfo; @@ -36,26 +39,36 @@ namespace ICSharpCode.Reports.Addin.Test.Designer [Test] public void CanCreateContentForFile() { - Assert.IsTrue(displayBinding.CanCreateContentForFile("test.srd")); + ICSharpCode.Core.FileName filename = new FileName("test.srd"); + Assert.IsTrue(displayBinding.CanCreateContentForFile(filename)); + } + + + [Test] + public void IsPreferredBindingForFile() + { + ICSharpCode.Core.FileName filename = new FileName("test.srd"); + Assert.IsTrue(displayBinding.IsPreferredBindingForFile(filename)); } [Test] + [Ignore] public void CanCreateContentFromFile () { -// ReportModel model = ReportModel.Create(); -// Properties customizer = new Properties(); -// customizer.Set("ReportLayout",GlobalEnums.ReportLayout.ListLayout); -// IReportGenerator generator = new GeneratePlainReport(model,customizer); -// generator.GenerateReport(); -// MockOpenedFile mof = new MockOpenedFile(GlobalValues.PlainFileName); + ReportModel model = ReportModel.Create(); + ReportStructure reportStructure = new ReportStructure() + { + ReportLayout = GlobalEnums.ReportLayout.ListLayout + }; + IReportGenerator generator = new GeneratePlainReport(model,reportStructure); + generator.GenerateReport(); + MockOpenedFile mof = new MockOpenedFile(GlobalValues.PlainFileName); OpenedFile file = new MockOpenedFile(GlobalValues.PlainFileName); -// file.SetData(generator.Generated.ToArray()); + file.SetData(generator.Generated.ToArray()); //ICSharpCode.SharpDevelop.Gui.IViewContent v = displayBinding.CreateContentForFile(new MockOpenedFile("test.srd")); //Assert.IsNotNull(v,"View should not be 'null'"); } - - } } \ No newline at end of file diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/ReportDesignerLoaderTestFixture.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/ReportDesignerLoaderTestFixture.cs index d386da77be..8333470eb7 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/ReportDesignerLoaderTestFixture.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/ReportDesignerLoaderTestFixture.cs @@ -7,6 +7,7 @@ using NUnit.Framework; namespace ICSharpCode.Reports.Addin.Test.Designer { [TestFixture] + public class ReportDesignerLoaderTestFixture { IDesignerGenerator generator; @@ -26,14 +27,20 @@ namespace ICSharpCode.Reports.Addin.Test.Designer Assert.IsInstanceOf(this.generator.ViewContent); } - + [Test] + [Ignore] + public void FixMoreTests() + { + Assert.IsNotNull(this.generator.ViewContent); + Assert.IsInstanceOf(this.generator.ViewContent); + } [TestFixtureSetUp] public void Init() { generator = new MockDesignerGenerator(); view = new ReportDesignerView(null, new MockOpenedFile("Test.srd")); generator.Attach(view); - /* + /* view.DesignerCodeFileContent = GetFormCode(); loader = new DerivedPythonDesignerLoader(generator); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/ICSharpCode.Reports.Addin.Test.csproj b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/ICSharpCode.Reports.Addin.Test.csproj index df75cb3e52..5648ad0ad2 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/ICSharpCode.Reports.Addin.Test.csproj +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/ICSharpCode.Reports.Addin.Test.csproj @@ -12,8 +12,9 @@ False 4 false - v4.0 + v4.5 C:\Users\Peter Forstmeier\AppData\Roaming\ICSharpCode/SharpDevelop3.0\Settings.SourceAnalysis + true @@ -54,7 +55,6 @@ - @@ -67,7 +67,6 @@ - diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/GeneratePlainReportFixture_1.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/GeneratePlainReportFixture_1.cs index 605fd82f84..c6bd9e702a 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/GeneratePlainReportFixture_1.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/GeneratePlainReportFixture_1.cs @@ -17,14 +17,18 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard [TestFixture] public class GeneratePlainReportFixture { + [Test] + public void GeneratePlainReport_1() { ReportModel model = ReportModel.Create(); - Properties customizer = new Properties(); - - customizer.Set("ReportLayout",GlobalEnums.ReportLayout.ListLayout); - IReportGenerator generator = new GeneratePlainReport(model,customizer); + + ReportStructure reportStructure = new ReportStructure() + { + ReportLayout = GlobalEnums.ReportLayout.ListLayout + }; + IReportGenerator generator = new GeneratePlainReport(model,reportStructure); generator.GenerateReport(); XDocument doc1 = XDocument.Load(new XmlNodeReader (generator.XmlReport)); @@ -44,7 +48,7 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard foreach (XElement a in sq) { Console.WriteLine (a.Name); - } + } } @@ -85,12 +89,15 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard private XmlDocument CreateXmlFromModel () { ReportModel model = ReportModel.Create(); - Properties customizer = new Properties(); - - customizer.Set("ReportLayout",GlobalEnums.ReportLayout.ListLayout); - IReportGenerator generator = new GeneratePlainReport(model,customizer); + ReportStructure reportStructure = new ReportStructure() + { + ReportLayout = GlobalEnums.ReportLayout.ListLayout + }; + IReportGenerator generator = new GeneratePlainReport(model,reportStructure); generator.GenerateReport(); return generator.XmlReport; } + } + } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenarateListReportFixture.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenarateListReportFixture.cs index 6622eb7c2a..094f95143d 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenarateListReportFixture.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenarateListReportFixture.cs @@ -9,9 +9,11 @@ using NUnit.Framework; namespace ICSharpCode.Reports.Addin.Test.Wizard.Generators { + [TestFixture] public class GenerateListReportFixture { + private const string reportName = "ListBasedReport"; ReportModel reportModel; @@ -55,7 +57,7 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard.Generators #region Sort_Group [Test] - public void GroupColumCollection_Grouping_Should_Set() + public void CanAddGroupColumn() { ReportModel m = ReportGenerationHelper.CreateModel(reportName,false); var rs = m.ReportSettings; @@ -68,7 +70,7 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard.Generators [Test] - public void SortColumCollection_Sorting_Should_Set() + public void CanAddSortColumn() { ReportModel m = ReportGenerationHelper.CreateModel(reportName,false); var rs = m.ReportSettings; @@ -130,7 +132,7 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard.Generators [Test] - public void Row_Should_Contain_Dataitems() + public void Row_Should_Contain_Items() { ICSharpCode.Reports.Core.BaseSection s = this.reportModel.DetailSection; ICSharpCode.Reports.Core.BaseRowItem dataRow = (ICSharpCode.Reports.Core.BaseRowItem)s.Items[0]; diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenerateFormsSheetReport.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenerateFormsSheetReport.cs index 3b77e1563a..4508add467 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenerateFormsSheetReport.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenerateFormsSheetReport.cs @@ -2,7 +2,6 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; -using ICSharpCode.Core; using ICSharpCode.Reports.Addin.ReportWizard; using ICSharpCode.Reports.Core; using ICSharpCode.Reports.Core.Globals; @@ -15,22 +14,22 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard public class GenerateFormsSheetReportFixture { - ReportModel model ; + ReportModel createdReportModel ; [Test] public void ModelContainFiveSections () { - Assert.AreEqual(5,this.model.SectionCollection.Count); + Assert.AreEqual(5,this.createdReportModel.SectionCollection.Count); } [Test] public void PageHeaderShouldContainOneItem () { - ICSharpCode.Reports.Core.BaseSection s = this.model.ReportHeader; - ReportItemCollection c = s.Items; - Assert.AreEqual(1,s.Items.Count); - ICSharpCode.Reports.Core.BaseReportItem item = s.Items[0]; + ICSharpCode.Reports.Core.BaseSection section = this.createdReportModel.ReportHeader; + ReportItemCollection c = section.Items; + Assert.AreEqual(1,section.Items.Count); + ICSharpCode.Reports.Core.BaseReportItem item = section.Items[0]; Assert.IsNotNull(item); } @@ -38,17 +37,17 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard [Test] public void DetailShouldContainNoItem () { - ICSharpCode.Reports.Core.BaseSection s = this.model.DetailSection; - Assert.AreEqual(0,s.Items.Count); + ICSharpCode.Reports.Core.BaseSection section = this.createdReportModel.DetailSection; + Assert.AreEqual(0,section.Items.Count); } [Test] public void PageFooterShouldContainOneItem () { - ICSharpCode.Reports.Core.BaseSection s = this.model.PageFooter; - Assert.AreEqual(1,s.Items.Count); - ICSharpCode.Reports.Core.BaseTextItem item = (ICSharpCode.Reports.Core.BaseTextItem)s.Items[0]; + ICSharpCode.Reports.Core.BaseSection section = this.createdReportModel.PageFooter; + Assert.AreEqual(1,section.Items.Count); + ICSharpCode.Reports.Core.BaseTextItem item = (ICSharpCode.Reports.Core.BaseTextItem)section.Items[0]; Assert.IsNotNull(item); } @@ -56,8 +55,8 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard [Test] public void PageFooterContainsPageNumberFunction() { - ICSharpCode.Reports.Core.BaseSection s = this.model.PageFooter; - ICSharpCode.Reports.Core.BaseTextItem item = (ICSharpCode.Reports.Core.BaseTextItem)s.Items[0]; + ICSharpCode.Reports.Core.BaseSection section = this.createdReportModel.PageFooter; + ICSharpCode.Reports.Core.BaseTextItem item = (ICSharpCode.Reports.Core.BaseTextItem)section.Items[0]; Assert.AreEqual("=Globals!PageNumber",item.Text); Assert.AreEqual("PageNumber1",item.Name); } @@ -67,21 +66,22 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard private ReportModel CreateModel () { ReportModel m = ReportModel.Create(); - Properties customizer = new Properties(); + + ReportStructure reportStructure = new ReportStructure() + { + ReportLayout = GlobalEnums.ReportLayout.ListLayout + }; - customizer.Set("ReportLayout",GlobalEnums.ReportLayout.ListLayout); - IReportGenerator generator = new GenerateFormSheetReport(m,customizer); + IReportGenerator generator = new GenerateFormSheetReport(m,reportStructure); generator.GenerateReport(); - ReportLoader rl = new ReportLoader(); - object root = rl.Load(generator.XmlReport.DocumentElement); + ReportLoader loader = new ReportLoader(); + object root = loader.Load(generator.XmlReport.DocumentElement); + ReportModel model = root as ReportModel; - if (model != null) { - model.ReportSettings.FileName = GlobalValues.PlainFileName; - FilePathConverter.AdjustReportName(model); - } else { - throw new InvalidReportModelException(); - } + + model.ReportSettings.FileName = GlobalValues.PlainFileName; + FilePathConverter.AdjustReportName(model); return model; } @@ -89,7 +89,9 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard [TestFixtureSetUp] public void Init() { - this.model = this.CreateModel(); + this.createdReportModel = this.CreateModel(); } + } + } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenerateListWithGroupFixture.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenerateListWithGroupFixture.cs index b6011fb054..368366b3fd 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenerateListWithGroupFixture.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenerateListWithGroupFixture.cs @@ -11,12 +11,14 @@ using ICSharpCode.Reports.Core; using ICSharpCode.Reports.Core.Globals; using NUnit.Framework; +/* namespace ICSharpCode.Reports.Addin.Test.Wizard.Generators { /// /// Description of GenerateListWithGroupFixture. /// [TestFixture] +// [Ignore] public class GenerateListWithGroupFixture { @@ -92,5 +94,7 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard.Generators #endregion + } } +*/ diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GeneratePlainReportFixture_2.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GeneratePlainReportFixture_2.cs index 79fbebd239..8313f8bc91 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GeneratePlainReportFixture_2.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GeneratePlainReportFixture_2.cs @@ -11,6 +11,7 @@ using NUnit.Framework; namespace ICSharpCode.Reports.Addin.Test.Wizard { [TestFixture] + [Ignore] public class GeneratePlainReportFixture_2 { ReportModel mockReportModel; @@ -70,14 +71,14 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard Assert.AreEqual(0,s.Items.Count); } - + /* private ReportModel CreateModel() { ReportModel m = ReportModel.Create(); Properties customizer = new Properties(); customizer.Set("ReportLayout",GlobalEnums.ReportLayout.ListLayout); - IReportGenerator generator = new GeneratePlainReport(m,customizer); + IReportGenerator generator = new GeneratePlainReport(m); generator.GenerateReport(); ReportLoader rl = new ReportLoader(); @@ -92,11 +93,11 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard } return model; } - + [TestFixtureSetUp] public void CreateModels () { this.mockReportModel = CreateModel(); - } + } */ } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenerateTableReportFixture.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenerateTableReportFixture.cs index 60599eb755..eef1a2c447 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenerateTableReportFixture.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenerateTableReportFixture.cs @@ -11,9 +11,12 @@ using NUnit.Framework; namespace ICSharpCode.Reports.Addin.Test.Wizard.Generators { + [TestFixture] + [Ignore] public class GenerateTableReportFixture { + /* private const string reportName = "TableBasedReport"; ReportModel reportModel; @@ -133,6 +136,6 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard.Generators } #endregion - + */ } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenerateTableWithGrouping.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenerateTableWithGrouping.cs index 0d82fafb82..90ae23eef8 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenerateTableWithGrouping.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/GenerateTableWithGrouping.cs @@ -18,10 +18,12 @@ using NUnit.Framework; namespace ICSharpCode.Reports.Addin.Test.Wizard.Generators { + [TestFixture] - public class GenertaeTableWithGroupFixture + [Ignore] + public class GenerateTableWithGroupFixture { - + /* private const string reportName = "TableBasedReport"; private ReportModel reportModel; @@ -107,7 +109,7 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard.Generators customizer.Set("Generator", structure); customizer.Set("ReportLayout",GlobalEnums.ReportLayout.TableLayout); - IReportGenerator generator = new GeneratePushDataReport(m,customizer); + IReportGenerator generator = new GeneratePushDataReport(m); generator.GenerateReport(); @@ -134,6 +136,6 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard.Generators } #endregion - + */ } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/ReportGenerationHelper.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/ReportGenerationHelper.cs index 0b0d863d7b..90f3762063 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/ReportGenerationHelper.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/Generators/ReportGenerationHelper.cs @@ -14,6 +14,8 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard /// /// Description of ReportGenerationHelper. /// + /// + public class ReportGenerationHelper { public static ReportModel FormSheetModel() @@ -43,26 +45,23 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard public static ReportModel CreateModel (string reportName,bool createGrouping) { - ReportStructure structure = CreateReportStructure(reportName); + ReportStructure reportStructure = CreateReportStructure(reportName); AvailableFieldsCollection abstractColumns = new AvailableFieldsCollection(); AbstractColumn a1 = new AbstractColumn("Field1",typeof(System.String)); - structure.AvailableFieldsCollection.Add(a1); + reportStructure.AvailableFieldsCollection.Add(a1); ICSharpCode.Reports.Core.BaseDataItem bri = new ICSharpCode.Reports.Core.BaseDataItem(); bri.Name ="Field1"; - structure.ReportItemCollection.Add(bri); + reportStructure.ReportItemCollection.Add(bri); if (createGrouping) { - structure.Grouping = "group"; + reportStructure.Grouping = "group"; } - ReportModel m = structure.CreateAndFillReportModel(); - ICSharpCode.Core.Properties customizer = new ICSharpCode.Core.Properties(); + ReportModel m = reportStructure.CreateAndFillReportModel(); - customizer.Set("Generator", structure); - customizer.Set("ReportLayout",GlobalEnums.ReportLayout.ListLayout); - IReportGenerator generator = new GeneratePushDataReport(m,customizer); + IReportGenerator generator = new GeneratePushDataReport(m,reportStructure); generator.GenerateReport(); ReportLoader rl = new ReportLoader(); @@ -87,4 +86,5 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard return structure; } } + } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/ReportStructureFixture.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/ReportStructureFixture.cs index 399070c618..e8e357da47 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/ReportStructureFixture.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Wizard/ReportStructureFixture.cs @@ -9,15 +9,11 @@ using NUnit.Framework; namespace ICSharpCode.Reports.Addin.Test.Wizard { + /* [TestFixture] public class ReportStructureFixture { - [Test] - public void Constructore() - { - ReportStructure rs = new ReportStructure(); - Assert.IsNotNull(rs,"ReportStructure should not be 'null'"); - } + [Test] public void FormSheetReport () @@ -57,4 +53,5 @@ namespace ICSharpCode.Reports.Addin.Test.Wizard return m; } } + */ } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj index 9985834ef6..a819aaf373 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj @@ -12,12 +12,12 @@ False Auto 123731968 - x86 + AnyCPU 4096 4 - false + False OnBuildSuccess - v4.0 + v4.5 "C:\Program Files\SharpDevelop\bin\..\AddIns\AddIns\Misc\SourceAnalysis\Settings.SourceAnalysis" ..\..\..\..\..\AddIns\Misc\SharpDevelopReports\ publish\ @@ -37,6 +37,8 @@ true + False + obj\$(Configuration)\ False @@ -44,6 +46,7 @@ true Full True + obj\ True @@ -52,6 +55,9 @@ None False + + False + ..\Libraries\Irony.dll @@ -274,8 +280,7 @@ - - + diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SortColumn.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SortColumn.cs index 80bd3d4814..7d7175d4a4 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SortColumn.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SortColumn.cs @@ -35,25 +35,16 @@ namespace ICSharpCode.Reports.Core public SortColumn(string columnName, ListSortDirection sortDirection, Type type,bool caseSensitive ):base (columnName,type) { - this.caseSensitive = caseSensitive; - this.sortDirection = sortDirection; + this.CaseSensitive = caseSensitive; + this.SortDirection = sortDirection; } #region properties - public ListSortDirection SortDirection { - get { - return sortDirection; - } - set{ - this.sortDirection = value; - } - } - public bool CaseSensitive { - get { - return caseSensitive; - } - } + public ListSortDirection SortDirection {get;set;} + + public bool CaseSensitive {get;set;} + #endregion } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/TypeHelpers.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/TypeHelpers.cs index 4327a5cd43..4668ff3038 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/TypeHelpers.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/TypeHelpers.cs @@ -22,6 +22,8 @@ namespace ICSharpCode.Reports.Core.Project.BaseClasses { switch (type.ToLower()) { + case "int": + return DbType.Int16; case "int16": return DbType.Int16; case "int32": diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataAccess/SqlDataAccess.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataAccess/SqlDataAccess.cs index 115135e345..997603bec6 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataAccess/SqlDataAccess.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataAccess/SqlDataAccess.cs @@ -3,9 +3,9 @@ using System; using System.Data; +using System.Data.SqlClient; using System.Globalization; -using ICSharpCode.Reports.Core.Factories; using ICSharpCode.Reports.Core.Project.Interfaces; namespace ICSharpCode.Reports.Core.DataAccess @@ -17,85 +17,43 @@ namespace ICSharpCode.Reports.Core.DataAccess public class SqlDataAccessStrategy:IDataAccessStrategy { - private ConnectionObject connectionObject; private ReportSettings reportSettings; - public SqlDataAccessStrategy(ReportSettings reportSettings,ConnectionObject connectionObject) + public SqlDataAccessStrategy(ReportSettings reportSettings) { if (reportSettings == null) { throw new ArgumentNullException("reportSettings"); } this.reportSettings = reportSettings; - if (connectionObject == null) { - this.connectionObject = ConnectionObjectFactory.BuildConnectionObject(reportSettings); - } else { - this.connectionObject = connectionObject; - } - } - - - public bool OpenConnection () - { - CheckConnection(); - return true; - } - - - private void CheckConnection() - { - if (this.connectionObject.Connection.State == ConnectionState.Open) { - this.connectionObject.Connection.Close(); - } - this.connectionObject.Connection.Open(); } - public DataSet ReadData() + public DataSet ReadData () { - try { - if (this.connectionObject.Connection.State == ConnectionState.Closed) { - this.connectionObject.Connection.Open(); - } - - IDbCommand command = this.connectionObject.Connection.CreateCommand(); + using (SqlConnection connection = new SqlConnection(this.reportSettings.ConnectionString)){ + connection.Open(); - if (String.IsNullOrEmpty(this.connectionObject.QueryString)) { + using (SqlCommand command = connection.CreateCommand()) { command.CommandText = reportSettings.CommandText; - } else { - command.CommandText = this.connectionObject.QueryString; - } - - command.CommandType = reportSettings.CommandType; - // We have to check if there are parameters for this Query, if so - // add them to the command - - BuildQueryParameters(command,reportSettings.SqlParameters); - IDbDataAdapter adapter = connectionObject.CreateDataAdapter(command); - DataSet ds = new DataSet(); - ds.Locale = CultureInfo.CurrentCulture; - adapter.Fill (ds); - return ds; - - } finally { - if (this.connectionObject.Connection.State == ConnectionState.Open) { - this.connectionObject.Connection.Close(); + command.CommandType = reportSettings.CommandType; + BuildQueryParameters(command,reportSettings.SqlParameters); + using (SqlDataAdapter adapter = new SqlDataAdapter(command)){ + DataSet ds = new DataSet(); + ds.Locale = CultureInfo.CurrentCulture; + adapter.Fill (ds); + return ds; + } } } } - private static void BuildQueryParameters (IDbCommand cmd, - SqlParameterCollection parameterCollection) - { + private static void BuildQueryParameters (IDbCommand cmd,SqlParameterCollection parameterCollection){ + if (parameterCollection != null && parameterCollection.Count > 0) { - - IDbDataParameter cmdPar = null; - foreach (SqlParameter par in parameterCollection) { - cmdPar = cmd.CreateParameter(); + var cmdPar = cmd.CreateParameter(); cmdPar.ParameterName = par.ParameterName; - Console.WriteLine(""); - Console.WriteLine("BuildQueryParameters {0} - {1}",par.ParameterName,par.ParameterValue); if (par.DataType != System.Data.DbType.Binary) { cmdPar.DbType = par.DataType; cmdPar.Value = par.ParameterValue; diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataManager.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataManager.cs index dd23df00f8..695df4c510 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataManager.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataManager.cs @@ -34,7 +34,7 @@ namespace ICSharpCode.Reports.Core private string dataMember; private IDataViewStrategy dataViewStrategy; private IDataNavigator dataNavigator; - private IDataAccessStrategy dataAccess; +// private IDataAccessStrategy dataAccess; #region Constructor - DataAccess @@ -55,15 +55,11 @@ namespace ICSharpCode.Reports.Core private DataManager (ReportSettings reportSettings,IDataAccessStrategy dataAccess) { - this.dataAccess = dataAccess; + DataSet dataSet = dataAccess.ReadData(); + this.Init(reportSettings,dataSet.Tables[0]); + this.dataViewStrategy = new TableStrategy((DataTable)this.dataSource, + reportSettings); - if (this.dataAccess.OpenConnection()) { - DataSet t = this.dataAccess.ReadData(); - - this.Init(reportSettings,t.Tables[0]); - this.dataViewStrategy = new TableStrategy((DataTable)this.dataSource, - reportSettings); - } } #endregion diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Dialogs/EditorDialog.resx b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Dialogs/EditorDialog.resx index 7080a7d118..1af7de150c 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Dialogs/EditorDialog.resx +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Dialogs/EditorDialog.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Dialogs/ParameterDialog.resx b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Dialogs/ParameterDialog.resx index 7080a7d118..1af7de150c 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Dialogs/ParameterDialog.resx +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Dialogs/ParameterDialog.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/ConnectionObjectFactory.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/ConnectionObjectFactory.cs deleted file mode 100644 index 325793115f..0000000000 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/ConnectionObjectFactory.cs +++ /dev/null @@ -1,27 +0,0 @@ -// 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.Data.Common; - -namespace ICSharpCode.Reports.Core.Factories -{ - /// - /// This Class is a FactoryClass for - /// - public sealed class ConnectionObjectFactory - { - private ConnectionObjectFactory() - { - } - - public static ConnectionObject BuildConnectionObject (ReportSettings reportSettings) - { - if (reportSettings == null) { - throw new ArgumentNullException("reportSettings"); - } - return ConnectionObject.CreateInstance(reportSettings.ConnectionString, - DbProviderFactories.GetFactory("System.Data.OleDb")); - } - } -} diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/DataManagerFacrory.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/DataManagerFactory.cs similarity index 87% rename from src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/DataManagerFacrory.cs rename to src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/DataManagerFactory.cs index a0bda012cd..de74ed418a 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/DataManagerFacrory.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/DataManagerFactory.cs @@ -30,12 +30,13 @@ namespace ICSharpCode.Reports.Core connectionObject = reportParameters.ConnectionObject; } - if (connectionObject != null) { - accesStrategy = new SqlDataAccessStrategy(reportModel.ReportSettings,connectionObject); - } else { - accesStrategy = new SqlDataAccessStrategy(reportModel.ReportSettings,null); - - } +// if (connectionObject != null) { +// accesStrategy = new SqlDataAccessStrategy(reportModel.ReportSettings,connectionObject); +// } else { +// accesStrategy = new SqlDataAccessStrategy(reportModel.ReportSettings,null); +// +// } + accesStrategy = new SqlDataAccessStrategy(reportModel.ReportSettings); dataManager = DataManager.CreateInstance(reportModel.ReportSettings,accesStrategy); if (dataManager == null) { throw new MissingDataManagerException(); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/SectionFactory.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/SectionFactory.cs index 32c92e54c5..671a4b8646 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/SectionFactory.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/SectionFactory.cs @@ -19,13 +19,13 @@ namespace ICSharpCode.Reports.Core { } - public static BaseSection Create(string name) { - if (String.IsNullOrEmpty(name)) { + public static BaseSection Create(string sectionName) { + if (String.IsNullOrEmpty(sectionName)) { String str = String.Format(System.Globalization.CultureInfo.CurrentCulture, - "<{0}>",name); + "<{0}>",sectionName); throw new UnknownItemException(str); } - return new BaseSection(name); + return new BaseSection(sectionName); } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IDataAccessStrategy.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IDataAccessStrategy.cs index 7e5b15df33..cea9cf9800 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IDataAccessStrategy.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IDataAccessStrategy.cs @@ -11,7 +11,6 @@ namespace ICSharpCode.Reports.Core.Project.Interfaces /// public interface IDataAccessStrategy { - bool OpenConnection (); DataSet ReadData(); } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportEngine.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportEngine.cs index 8e41320374..dd3ef5b272 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportEngine.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportEngine.cs @@ -10,7 +10,6 @@ using System.Windows.Forms; using System.Xml; using ICSharpCode.Reports.Core.BaseClasses; using ICSharpCode.Reports.Core.Exporter; -using ICSharpCode.Reports.Core.Factories; using ICSharpCode.Reports.Core.Globals; using ICSharpCode.Reports.Core.Interfaces; @@ -38,6 +37,7 @@ namespace ICSharpCode.Reports.Core { public ReportEngine() { + Console.WriteLine("reportEngine"); } #endregion @@ -96,6 +96,7 @@ namespace ICSharpCode.Reports.Core { internal static void CheckForParameters (IReportModel model,ReportParameters reportParameters) { + Console.WriteLine("ReportEngine:CheckforParameters"); if (reportParameters != null) { if (reportParameters.SortColumnCollection.Count > 0) { @@ -117,6 +118,7 @@ namespace ICSharpCode.Reports.Core { private static void SetReportParam (IReportModel model,BasicParameter param) { + Console.WriteLine("ReportEngine:SetReportParameters"); var p = model.ReportSettings.ParameterCollection.Find(param.ParameterName); if (p != null) { p.ParameterValue = param.ParameterValue; @@ -126,6 +128,7 @@ namespace ICSharpCode.Reports.Core { private static void SetSqlParam (IReportModel model,SqlParameter param) { + Console.WriteLine("ReportEngine:SetSqlparameters"); var p = model.ReportSettings.SqlParameters.Find(param.ParameterName); if (p != null) { p.ParameterValue = param.ParameterValue; @@ -162,8 +165,9 @@ namespace ICSharpCode.Reports.Core { /// - protected AbstractRenderer SetupStandardRenderer (IReportModel model,ReportParameters parameters) { - + protected AbstractRenderer SetupStandardRenderer (IReportModel model,ReportParameters parameters) + { + Console.WriteLine("ReportEngine:SetupStandardRenderer"); AbstractRenderer abstr = null; try { switch (model.ReportSettings.ReportType) { @@ -190,8 +194,9 @@ namespace ICSharpCode.Reports.Core { protected AbstractRenderer SetupPushDataRenderer (IReportModel model, - IList list) { - + IList list) + { + Console.WriteLine("ReportEngine:SetupPushDataRenderer_1"); if (model == null) { throw new ArgumentNullException("model"); } @@ -215,7 +220,7 @@ namespace ICSharpCode.Reports.Core { protected AbstractRenderer SetupPushDataRenderer (IReportModel model, DataTable dataTable) { - + Console.WriteLine("ReportEngine:SetupPushRenderer_2"); if (model == null) { throw new ArgumentNullException("model"); } @@ -249,6 +254,7 @@ namespace ICSharpCode.Reports.Core { /// with /// this is an easy way to ask the report for desired paramaters public static ReportParameters LoadParameters (string fileName) { + Console.WriteLine("ReportEngine:LoadParameters"); if (String.IsNullOrEmpty(fileName)) { throw new ArgumentNullException("fileName"); } @@ -274,6 +280,7 @@ namespace ICSharpCode.Reports.Core { /// /// public static ReportModel LoadReportModel (string fileName) { + Console.WriteLine("ReportEngine:LoadReportModel_1"); if (String.IsNullOrEmpty(fileName)) { throw new ArgumentNullException("fileName"); } @@ -287,10 +294,11 @@ namespace ICSharpCode.Reports.Core { } - public static ReportModel LoadReportModel (Stream stream) { + internal static ReportModel LoadReportModel (Stream stream) { if (stream == null) { throw new ArgumentNullException("stream"); } + Console.WriteLine("ReportEngine:LoadReportModel_2"); var doc = new XmlDocument(); doc.Load(stream); return LoadModel(doc); @@ -299,6 +307,7 @@ namespace ICSharpCode.Reports.Core { static ReportModel LoadModel(XmlDocument doc) { + Console.WriteLine("ReportEngine:LoadModel"); BaseItemLoader loader = new BaseItemLoader(); object root = loader.Load(doc.DocumentElement); @@ -316,6 +325,7 @@ namespace ICSharpCode.Reports.Core { public void PreviewStandardReport (string fileName,ReportParameters reportParameters) { + Console.WriteLine("ReportEngine:PreviewStandardReport"); if (String.IsNullOrEmpty(fileName)) { throw new ArgumentNullException("fileName"); } @@ -336,6 +346,7 @@ namespace ICSharpCode.Reports.Core { public void PreviewPushDataReport (string fileName,DataTable dataTable,ReportParameters reportParameters) { + Console.WriteLine("ReportEngine:PreviewPushDataReport_1"); if (String.IsNullOrEmpty(fileName)) { throw new ArgumentNullException("fileName"); } @@ -358,6 +369,7 @@ namespace ICSharpCode.Reports.Core { public void PreviewPushDataReport (string fileName,IList list,ReportParameters reportParameters) { + Console.WriteLine("ReportEngine:PreviewPushDataReport_2"); if (String.IsNullOrEmpty(fileName)) { throw new ArgumentNullException("fileName"); } @@ -392,6 +404,7 @@ namespace ICSharpCode.Reports.Core { public static IReportCreator CreatePageBuilder (string fileName, ReportParameters reportParameters) { + Console.WriteLine("ReportEngine:CreatePageBuilder_1"); if (String.IsNullOrEmpty(fileName)) { throw new ArgumentNullException("fileName"); } @@ -437,6 +450,7 @@ namespace ICSharpCode.Reports.Core { DataSet dataSet, ReportParameters reportParameter) { + Console.WriteLine("ReportEngine:CreatePageBuilder_2"); if (reportModel == null) { throw new ArgumentNullException("reportModel"); } @@ -460,6 +474,7 @@ namespace ICSharpCode.Reports.Core { DataTable dataTable, ReportParameters reportParameters) { + Console.WriteLine("ReportEngine:CreatePageBuilder_3"); if (reportModel == null) { throw new ArgumentNullException("reportModel"); } @@ -488,6 +503,7 @@ namespace ICSharpCode.Reports.Core { IList list, ReportParameters reportParameters) { + Console.WriteLine("ReportEngine:CreatePageBuilder_4"); if (reportModel == null) { throw new ArgumentNullException("reportModel"); } @@ -510,6 +526,7 @@ namespace ICSharpCode.Reports.Core { #region Printing private static void ReportToPrinter (AbstractRenderer renderer,IReportModel model) { + Console.WriteLine("ReportEngine:reportToPrinter"); if (renderer == null) { throw new ArgumentNullException("renderer"); } @@ -550,6 +567,7 @@ namespace ICSharpCode.Reports.Core { // public void PrintStandardReport (string fileName,ReportParameters reportParameters) { + Console.WriteLine("ReportEngine:PrintStandardReport"); if (String.IsNullOrEmpty(fileName)) { throw new ArgumentNullException("fileName"); } @@ -579,6 +597,7 @@ namespace ICSharpCode.Reports.Core { /// public void PrintPushDataReport (string fileName,DataTable dataTable) { + Console.WriteLine("ReportEngine:PrintPushDataReport_1"); if (String.IsNullOrEmpty(fileName)) { throw new ArgumentNullException("fileName"); } @@ -597,6 +616,7 @@ namespace ICSharpCode.Reports.Core { public void PrintPushDataReport (string fileName,DataTable dataTable, ReportParameters reportParameters) { + Console.WriteLine("ReportEngine:PrintPushDataReport_2"); if (String.IsNullOrEmpty(fileName)) { throw new ArgumentNullException("fileName"); } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportModel.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportModel.cs index 6f86f2bd49..62cf83796c 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportModel.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportModel.cs @@ -9,7 +9,6 @@ using ICSharpCode.Reports.Core.Interfaces; namespace ICSharpCode.Reports.Core { - public class ReportModel :IReportModel, IDisposable { ReportSettings reportSettings ; diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportViewer/ReportViewer.resx b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportViewer/ReportViewer.resx index 90527653fc..2a0def35ca 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportViewer/ReportViewer.resx +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportViewer/ReportViewer.resx @@ -117,13 +117,13 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + 116, 17 - - + + 17, 17 - - + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Resources/CoreResource.resx b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Resources/CoreResource.resx index 6251156e34..24bf6129db 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Resources/CoreResource.resx +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Resources/CoreResource.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Ok diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/WPF/FixedDocumentCreator.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/WPF/FixedDocumentCreator.cs index c0285e6d4e..a409560ed5 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/WPF/FixedDocumentCreator.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/WPF/FixedDocumentCreator.cs @@ -260,7 +260,6 @@ namespace ICSharpCode.Reports.Core.WPF TextBlock CreateTextBlock(ExportText exportText) { TextBlock textBlock = new TextBlock(); - SetFont(textBlock, exportText.StyleDecorator); textBlock.TextWrapping = TextWrapping.Wrap; @@ -330,6 +329,7 @@ namespace ICSharpCode.Reports.Core.WPF void SetFont(TextBlock textBlock, TextStyleDecorator styleDecorator) { textBlock.FontFamily = new FontFamily(styleDecorator.Font.FontFamily.Name); + var b = styleDecorator.Font.Size; textBlock.FontSize = b * 96/72; if (styleDecorator.Font.Bold) { diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Xml/BaseItemLoader.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Xml/BaseItemLoader.cs index bd761c0c4b..a2a8ab4262 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Xml/BaseItemLoader.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Xml/BaseItemLoader.cs @@ -9,7 +9,9 @@ namespace ICSharpCode.Reports.Core { protected override Type GetTypeByName(string ns, string name) { + Console.WriteLine("BaseItemLoader - GetTypeByName {0}",name); return typeof(BaseSection).Assembly.GetType(typeof(BaseSection).Namespace + "." + name); } } } + \ No newline at end of file diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Xml/MycroParser.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Xml/MycroParser.cs index 6047a6717e..df5964f9c2 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Xml/MycroParser.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Xml/MycroParser.cs @@ -48,6 +48,7 @@ namespace ICSharpCode.Reports.Core // Trace.Assert(t != null, "Type "+cname+" could not be determined."); // Debug.WriteLine("Looking for " + cname + " and got " + t.FullName); + Console.WriteLine("Looking for " + cname + " and got " + t.FullName); try { ret=Activator.CreateInstance(t); @@ -200,6 +201,7 @@ namespace ICSharpCode.Reports.Core void SetPropertyToString(object obj, PropertyInfo pi, string value) { + Console.WriteLine("MP - SetPropertyToString {0} - {1}",pi.Name,value.ToString()); // it's string, so use a type converter. TypeConverter tc=TypeDescriptor.GetConverter(pi.PropertyType); try diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/IConnectionDataManagerFixture.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/IConnectionDataManagerFixture.cs index 60ce35f4f2..647e5e5640 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/IConnectionDataManagerFixture.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/IConnectionDataManagerFixture.cs @@ -99,16 +99,16 @@ namespace ICSharpCode.Reports.Core.Test.DataManager } - [Test] - [ExpectedException(typeof(ArgumentException))] - public void ConstructorBadConnectionString () - { - - ReportSettings rs = new ReportSettings(); - rs.ConnectionString = "bad"; - IDataAccessStrategy da = new MockDataAccessStrategy (rs); - IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(rs,da); - } +// [Test] +// [ExpectedException(typeof(ArgumentException))] +// public void ConstructorBadConnectionString () +// { +// +// ReportSettings rs = new ReportSettings(); +// rs.ConnectionString = "bad"; +// IDataAccessStrategy da = new MockDataAccessStrategy (rs); +// IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(rs,da); +// } [Test] public void CheckDataMember() diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/ListStrategy/GroupListFixture.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/ListStrategy/GroupListFixture.cs index 8521317946..d33dc22fb5 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/ListStrategy/GroupListFixture.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/ListStrategy/GroupListFixture.cs @@ -149,7 +149,7 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy var itemDummy = (BaseDataItem)searchCol[0]; var itemLast = (BaseDataItem)searchCol[1]; var itemGroup = (BaseDataItem)searchCol[2]; -// Console.WriteLine ("\t{0} - {1} - {2}",itemDummy.DBValue,itemLast.DBValue,itemGroup.DBValue); + Console.WriteLine ("\t{0} - {1} - {2}",itemDummy.DBValue,itemLast.DBValue,itemGroup.DBValue); Assert.That(itemDummy.DBValue,Is.Not.Empty); Assert.That(itemLast.DBValue,Is.Not.Empty); Assert.That(itemGroup.DBValue,Is.Not.Empty); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ICSharpCode.Reports.Core.Test.csproj b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ICSharpCode.Reports.Core.Test.csproj index ea0b847503..603c897fa0 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ICSharpCode.Reports.Core.Test.csproj +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ICSharpCode.Reports.Core.Test.csproj @@ -7,13 +7,14 @@ Library ICSharpCode.Reports.Core.Test ICSharpCode.Reports.Core.Test - v4.0 + v4.5 Properties C:\Dokumente und Einstellungen\Peter\Anwendungsdaten\ICSharpCode/SharpDevelop3.0\Settings.SourceAnalysis False False 4 false + ..\..\..\..\..\..\..\bin\UnitTests\ diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Printing/FormattingFixture.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Printing/FormattingFixture.cs index 4c1de9cdac..0b224ebb46 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Printing/FormattingFixture.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Printing/FormattingFixture.cs @@ -120,6 +120,22 @@ namespace ICSharpCode.Reports.Core.Test.Printing } + [Test] + public void NegativeTimeSpan_HH_mm_ss () + { + TimeSpan time; + string toFormat = "-5:50:10"; + string format = "H:mm:ss"; + var result = StandardFormatter.FormatOutput(toFormat,format,dateTimetype,nullValue); + Assert.That(result,Is.EqualTo("-5:50:10")); + bool valid = TimeSpan.TryParseExact(result, + "c", + CultureInfo.CurrentCulture, + out time); + Assert.That(valid,Is.True); + } + + [Test] public void TimeSpan_D_H_mm_ss () { diff --git a/src/AddIns/Misc/SearchAndReplace/Project/SearchAndReplace.csproj b/src/AddIns/Misc/SearchAndReplace/Project/SearchAndReplace.csproj index 5031774a1f..88cde52966 100644 --- a/src/AddIns/Misc/SearchAndReplace/Project/SearchAndReplace.csproj +++ b/src/AddIns/Misc/SearchAndReplace/Project/SearchAndReplace.csproj @@ -78,8 +78,12 @@ Code ResultsTreeView.xaml - - + + Form + + + UserControl + @@ -87,10 +91,6 @@ - - - - {6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} ICSharpCode.AvalonEdit diff --git a/src/AddIns/VersionControl/SubversionAddIn/SubversionAddIn.csproj b/src/AddIns/VersionControl/SubversionAddIn/SubversionAddIn.csproj index d63469bce3..1f314e73eb 100644 --- a/src/AddIns/VersionControl/SubversionAddIn/SubversionAddIn.csproj +++ b/src/AddIns/VersionControl/SubversionAddIn/SubversionAddIn.csproj @@ -65,7 +65,9 @@ Always - + + UserControl + InfoPanel.cs diff --git a/src/Libraries/AvalonDock/AvalonDock/AvalonDock.csproj b/src/Libraries/AvalonDock/AvalonDock/AvalonDock.csproj index ec91231845..057e53f5c9 100644 --- a/src/Libraries/AvalonDock/AvalonDock/AvalonDock.csproj +++ b/src/Libraries/AvalonDock/AvalonDock/AvalonDock.csproj @@ -5,7 +5,7 @@ AnyCPU 8.0.30703 2.0 - {87E61430-4243-45F2-B74E-0A4C096CEBF3} + {2FF700C2-A38A-48BD-A637-8CAFD4FE6237} Library Properties AvalonDock diff --git a/src/Main/Base/Project/Workbench/File/FileService.cs b/src/Main/Base/Project/Workbench/File/FileService.cs index cc9cb61398..0b9765c2ee 100644 --- a/src/Main/Base/Project/Workbench/File/FileService.cs +++ b/src/Main/Base/Project/Workbench/File/FileService.cs @@ -233,5 +233,10 @@ namespace ICSharpCode.SharpDevelop } #endregion Events + + public static object CreateUntitledOpenedFile(string plainFileName, byte[] byte1) + { + throw new NotImplementedException(); + } } } diff --git a/src/Main/ICSharpCode.Core.WinForms/ICSharpCode.Core.WinForms.csproj b/src/Main/ICSharpCode.Core.WinForms/ICSharpCode.Core.WinForms.csproj index bf5cb02fb4..d7ffcfcbe6 100644 --- a/src/Main/ICSharpCode.Core.WinForms/ICSharpCode.Core.WinForms.csproj +++ b/src/Main/ICSharpCode.Core.WinForms/ICSharpCode.Core.WinForms.csproj @@ -55,24 +55,38 @@ - + + Component + - + + Form + - + + Form + - + + Component + - + + Component + - + + Component + - + + Component + @@ -83,9 +97,5 @@ ICSharpCode.Core False - - - - \ No newline at end of file