Browse Source

Simple (textonly) reports as FixedDocument are working

pull/15/head^2
peterforstmeier 15 years ago
parent
commit
4661680fe1
  1. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/ReportViewerSecondaryView.cs
  2. 100
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/WPF/WPFReportPreview.cs
  3. 10
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj
  4. 27
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/FixedDocumentRenderer.cs
  5. 6
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/PdfRenderer.cs
  6. 16
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IMeasurementService.cs
  7. 67
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportEngine.cs
  8. 31
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportViewer/IPreviewControl.cs
  9. 411
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportViewer/ReportViewer.cs
  10. 152
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/WPF/FixedDocumentCreator.cs
  11. 27
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/WpfReportViewer/WpfReportViewer.xaml

2
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/SecondaryViews/ReportViewerSecondaryView.cs

@ -20,7 +20,6 @@ namespace ICSharpCode.Reports.Addin
ReportDesignerLoader designerLoader; ReportDesignerLoader designerLoader;
ICSharpCode.Reports.Core.ReportViewer.PreviewControl control; ICSharpCode.Reports.Core.ReportViewer.PreviewControl control;
public ReportViewerSecondaryView(ReportDesignerLoader designerLoader,IViewContent content):base(content) public ReportViewerSecondaryView(ReportDesignerLoader designerLoader,IViewContent content):base(content)
{ {
if (designerLoader == null) { if (designerLoader == null) {
@ -48,6 +47,7 @@ namespace ICSharpCode.Reports.Addin
{ {
ReportModel model = designerLoader.CreateRenderableModel(); ReportModel model = designerLoader.CreateRenderableModel();
AbstractPreviewCommand cmd = null; AbstractPreviewCommand cmd = null;
switch (model.DataModel) { switch (model.DataModel) {
case GlobalEnums.PushPullModel.FormSheet : { case GlobalEnums.PushPullModel.FormSheet : {
cmd = new FormSheetToReportViewerCommand (model,control); cmd = new FormSheetToReportViewerCommand (model,control);

100
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/WPF/WPFReportPreview.cs

@ -7,16 +7,18 @@
* To change this template use Tools | Options | Coding | Edit Standard Headers. * To change this template use Tools | Options | Coding | Edit Standard Headers.
*/ */
using System; using System;
using System.Data;
using System.Drawing; using System.Drawing;
using System.Windows.Controls;
using System.Windows.Documents; using System.Windows.Documents;
using ICSharpCode.Reports.Addin.Commands;
using ICSharpCode.Reports.Core; using ICSharpCode.Reports.Core;
using ICSharpCode.Reports.Core.BaseClasses; using ICSharpCode.Reports.Core.BaseClasses;
using ICSharpCode.Reports.Core.Exporter; using ICSharpCode.Reports.Core.Exporter;
using ICSharpCode.Reports.Core.Exporter.ExportRenderer; using ICSharpCode.Reports.Core.Exporter.ExportRenderer;
using ICSharpCode.Reports.Core.Globals; using ICSharpCode.Reports.Core.Globals;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.Reports.Core.WpfReportViewer;
namespace ICSharpCode.Reports.Addin.Project.WPF namespace ICSharpCode.Reports.Addin.Project.WPF
{ {
@ -26,85 +28,61 @@ namespace ICSharpCode.Reports.Addin.Project.WPF
public class WPFReportPreview: AbstractSecondaryViewContent public class WPFReportPreview: AbstractSecondaryViewContent
{ {
ReportDesignerLoader designerLoader; ReportDesignerLoader designerLoader;
DocumentViewer viewer = new DocumentViewer();
//DocumentViewer viewer = new DocumentViewer();
IWpfReportViewer viewer = new WpfReportViewer();
public WPFReportPreview(ReportDesignerLoader loader,IViewContent content):base(content) public WPFReportPreview(ReportDesignerLoader loader,IViewContent content):base(content)
{ {
this.designerLoader = loader; this.designerLoader = loader;
base.TabPageText = "Wpf View"; base.TabPageText = "Wpf View";
Pages = new PagesCollection();
} }
public PagesCollection Pages{get;private set;}
protected override void LoadFromPrimary() protected override void LoadFromPrimary()
{ {
Console.WriteLine("WPFReportPreview - LoadFromPrimary"); Pages.Clear();
ReportModel model = designerLoader.CreateRenderableModel(); ReportModel model = designerLoader.CreateRenderableModel();
var c = new CollectParametersCommand(model);
c.Run();
switch (model.DataModel)
{
case GlobalEnums.PushPullModel.FormSheet : {
viewer.RunReport(model,(ReportParameters)null);
break;
}
case GlobalEnums.PushPullModel.PullData:{
viewer.RunReport(model,(ReportParameters)null);
break;
}
case GlobalEnums.PushPullModel.PushData:
{
DataSetFromXsdCommand cmd = new DataSetFromXsdCommand();
cmd.Run();
System.Data.DataSet ds = cmd.DataSet;
viewer.RunReport(model,ds.Tables[0],(ReportParameters)null);
break;
}
default:
throw new InvalidReportModelException();
}
// http://www.xs4all.nl/~wrb/Articles/Article_WPFButtonXPS_01.htm
IReportCreator reportCreator = FormPageBuilder.CreateInstance(model); FixedDocumentRenderer renderer = FixedDocumentRenderer.CreateInstance(model.ReportSettings,viewer.Pages);
// reportCreator.SectionRendering += new EventHandler<SectionRenderEventArgs>(PushPrinting);
// reportCreator.PageCreated += OnPageCreated;
reportCreator.BuildExportList();
var pages = reportCreator.Pages;
// var pages = CreateTestPage();
Console.WriteLine("WPFReportPreview - Create FixedDocumentRenderer");
FixedDocumentRenderer renderer = FixedDocumentRenderer.CreateInstance(model.ReportSettings,pages);
renderer.Start(); renderer.Start();
renderer.RenderOutput(); renderer.RenderOutput();
renderer.End(); renderer.End();
// Console.WriteLine("WPFReportPreview - document to viewer");
IDocumentPaginatorSource document = renderer.Document;
viewer.Document = renderer.Document; viewer.Document = renderer.Document;
} }
PagesCollection CreateTestPage()
{
var pages = new PagesCollection();
ExporterPage page = ExporterPage.CreateInstance(new SectionBounds(new ReportSettings(),false),1);
page.PageNumber = 1;
TextStyleDecorator decorator1 = new TextStyleDecorator()
{
Location = new System.Drawing.Point (10,10),
Font = GlobalValues.DefaultFont,
ForeColor = Color.Black,
BackColor = Color.White
};
page.Items.Add(new ExportText (decorator1,false)
{
Text = "hello world"
});
TextStyleDecorator decorator2 = new TextStyleDecorator()
{
Location = new System.Drawing.Point (20,20),
Font = GlobalValues.DefaultFont,
ForeColor = Color.Black,
BackColor = Color.White
};
page.Items.Add(new ExportText (decorator2,false)
{
Text = "My First PdfPrintout"
});
pages.Add(page);
return pages;
}
protected override void SaveToPrimary() protected override void SaveToPrimary()
{ {
// throw new NotImplementedException(); // throw new NotImplementedException();

10
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj

@ -294,7 +294,6 @@
<Compile Include="Project\Interfaces\IItemConverter.cs" /> <Compile Include="Project\Interfaces\IItemConverter.cs" />
<Compile Include="Project\Interfaces\ILayouter.cs" /> <Compile Include="Project\Interfaces\ILayouter.cs" />
<Compile Include="Project\Interfaces\IReportItem.cs" /> <Compile Include="Project\Interfaces\IReportItem.cs" />
<Compile Include="Project\Interfaces\IMeasurementService.cs" />
<Compile Include="Project\Interfaces\IReportModel.cs" /> <Compile Include="Project\Interfaces\IReportModel.cs" />
<Compile Include="Project\Interfaces\ISinglePage.cs" /> <Compile Include="Project\Interfaces\ISinglePage.cs" />
<Compile Include="Project\IReportCreator.cs" /> <Compile Include="Project\IReportCreator.cs" />
@ -314,6 +313,7 @@
<SubType>Component</SubType> <SubType>Component</SubType>
</Compile> </Compile>
<Compile Include="Project\ReportEngine.cs" /> <Compile Include="Project\ReportEngine.cs" />
<Compile Include="Project\ReportViewer\IPreviewControl.cs" />
<Compile Include="Project\ReportViewer\NumericToolStripTextBox.cs"> <Compile Include="Project\ReportViewer\NumericToolStripTextBox.cs">
<SubType>Component</SubType> <SubType>Component</SubType>
</Compile> </Compile>
@ -368,6 +368,10 @@
<Compile Include="Project\ReportViewer\ReportViewer.designer.cs"> <Compile Include="Project\ReportViewer\ReportViewer.designer.cs">
<DependentUpon>ReportViewer.cs</DependentUpon> <DependentUpon>ReportViewer.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Project\WpfReportViewer\WpfReportViewer.xaml.cs">
<DependentUpon>WpfReportViewer.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="Project\WPF\FixedDocumentCreator.cs" /> <Compile Include="Project\WPF\FixedDocumentCreator.cs" />
<Compile Include="Project\WPF\FlowDocumentCreator.cs" /> <Compile Include="Project\WPF\FlowDocumentCreator.cs" />
<Compile Include="Project\Xml\BaseItemLoader.cs" /> <Compile Include="Project\Xml\BaseItemLoader.cs" />
@ -390,7 +394,11 @@
<None Include="Project\ReportViewer\Resources\Icons\Next.bmp" /> <None Include="Project\ReportViewer\Resources\Icons\Next.bmp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="Project\WpfReportViewer" />
<Folder Include="Project\WPF" /> <Folder Include="Project\WPF" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Page Include="Project\WpfReportViewer\WpfReportViewer.xaml" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project> </Project>

27
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/FixedDocumentRenderer.cs

@ -77,8 +77,9 @@ namespace ICSharpCode.Reports.Core.Exporter.ExportRenderer
var h = printDialog.PrintableAreaWidth; var h = printDialog.PrintableAreaWidth;
Console.WriteLine(new System.Windows.Size(w,h)); Console.WriteLine(new System.Windows.Size(w,h));
PageSize = new System.Windows.Size(reportSettings.PageSize.Width,reportSettings.PageSize.Height); docCreator.PageSize = new System.Windows.Size(reportSettings.PageSize.Width,reportSettings.PageSize.Height);
document.DocumentPaginator.PageSize = PageSize; document.DocumentPaginator.PageSize = docCreator.PageSize;
} }
@ -101,7 +102,7 @@ namespace ICSharpCode.Reports.Core.Exporter.ExportRenderer
// http://stackoverflow.com/questions/3671724/wpf-flowdocument-page-break-positioning // http://stackoverflow.com/questions/3671724/wpf-flowdocument-page-break-positioning
// http://wpf.2000things.com/tag/drawingvisual/ // http://wpf.2000things.com/tag/drawingvisual/
http://wpf.2000things.com/2011/03/25/256-use-a-fixeddocument-to-display-content-at-fixed-locations/ //http://wpf.2000things.com/2011/03/25/256-use-a-fixeddocument-to-display-content-at-fixed-locations/
//http://wpf.2000things.com/2011/03/25/256-use-a-fixeddocument-to-display-content-at-fixed-locations/ //http://wpf.2000things.com/2011/03/25/256-use-a-fixeddocument-to-display-content-at-fixed-locations/
//http://www.neodynamic.com/ND/FaqsTipsTricks.aspx?tabid=66&prodid=0&sid=99 //http://www.neodynamic.com/ND/FaqsTipsTricks.aspx?tabid=66&prodid=0&sid=99
@ -110,30 +111,17 @@ http://wpf.2000things.com/2011/03/25/256-use-a-fixeddocument-to-display-content-
//http://www.eggheadcafe.com/tutorials/aspnet/9cbb4841-8677-49e9-a3a8-46031e699b2e/wpf-printing-and-print-pr.aspx //http://www.eggheadcafe.com/tutorials/aspnet/9cbb4841-8677-49e9-a3a8-46031e699b2e/wpf-printing-and-print-pr.aspx
// //
//http://www.eggheadcafe.com/tutorials/aspnet/22ac97f3-4a3d-4fee-a411-e456f77f6a90/wpf-report-engine-part-3.aspx //http://www.eggheadcafe.com/tutorials/aspnet/22ac97f3-4a3d-4fee-a411-e456f77f6a90/wpf-report-engine-part-3.aspx
/*
System.Windows.Controls.Border b = new System.Windows.Controls.Border();
b.BorderThickness = new Thickness(2);
b.BorderBrush = System.Windows.Media.Brushes.Black;
b.Padding = new Thickness(15);
b.Child = page2Text;
FixedPage.SetLeft(b, 2 * 96 * 0.75 );
FixedPage.SetTop(b,3 * 96 * 0.75 );
page.Children.Add((UIElement)b);
*/
/*
*/
Document = document; Document = document;
} }
void AddPageToDocument(FixedDocument doc,FixedPage page) void AddPageToDocument(FixedDocument fixedDocument,FixedPage page)
{ {
Console.WriteLine("AddPageToDocument");
PageContent pageContent = new PageContent(); PageContent pageContent = new PageContent();
((IAddChild)pageContent).AddChild(page); ((IAddChild)pageContent).AddChild(page);
doc.Pages.Add(pageContent); fixedDocument.Pages.Add(pageContent);
} }
@ -143,7 +131,6 @@ http://wpf.2000things.com/2011/03/25/256-use-a-fixeddocument-to-display-content-
Console.WriteLine("FixedDocumentRenderer - End"); Console.WriteLine("FixedDocumentRenderer - End");
} }
public Size PageSize {get;private set;}
public IDocumentPaginatorSource Document {get;private set;} public IDocumentPaginatorSource Document {get;private set;}
#endregion #endregion

6
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/PdfRenderer.cs

@ -104,12 +104,6 @@ namespace ICSharpCode.Reports.Core.Exporter.ExportRenderer
foreach (ICSharpCode.Reports.Core.Exporter.BaseExportColumn baseExportColumn in items) foreach (ICSharpCode.Reports.Core.Exporter.BaseExportColumn baseExportColumn in items)
{ {
baseExportColumn.DrawItem(this.pdfWriter,this.pdfUnitConverter); baseExportColumn.DrawItem(this.pdfWriter,this.pdfUnitConverter);
// IExportContainer container = baseExportColumn as ExportContainer;
// if (container == null) {
// baseExportColumn.DrawItem(this.pdfWriter,this.pdfUnitConverter);
// } else {
// container.DrawItem(this.pdfWriter,this.pdfUnitConverter);
// }
} }
} }

16
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IMeasurementService.cs

@ -1,16 +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.Drawing;
namespace ICSharpCode.Reports.Core
{
/// <summary>
/// Description of IMeasurementService.
/// </summary>
// public interface IMeasurementService
// {
// void FitSectionToItems (Graphics graphics,BaseSection section);
// }
}

67
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportEngine.cs

@ -222,57 +222,6 @@ namespace ICSharpCode.Reports.Core {
#endregion #endregion
#region Public Datahandling
/*
public static IDataManager CreateDataManager (ReportSettings reportSettings,ConnectionObject connectionObject)
{
if (reportSettings == null) {
throw new ArgumentNullException("reportSettings");
}
if (connectionObject == null) {
throw new ArgumentNullException("connectionObject");
}
IDataManager dataMan = null;
if (!String.IsNullOrEmpty(connectionObject.Connection.ConnectionString)) {
SqlDataAccessStrategy sda = new SqlDataAccessStrategy(reportSettings,connectionObject);
dataMan = DataManager.CreateInstance(reportSettings,sda);
}
if (dataMan == null) {
throw new MissingDataManagerException();
}
return dataMan;
}
/// <summary>
/// Return a valid <see cref="Datamanager"></see>
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public static IDataManager CreateDataManager (ReportSettings reportSettings)
{
if (reportSettings == null) {
throw new ArgumentNullException("reportSettings");
}
IDataManager dataMan = null;
if (!String.IsNullOrEmpty(reportSettings.CommandText)) {
SqlDataAccessStrategy sda = new SqlDataAccessStrategy(reportSettings,null);
dataMan = DataManager.CreateInstance(reportSettings,sda);
}
if (dataMan == null) {
throw new MissingDataManagerException();
}
return dataMan;
}
*/
#endregion
#region Parameter Handling #region Parameter Handling
///<summary> ///<summary>
@ -528,7 +477,7 @@ namespace ICSharpCode.Reports.Core {
/// <param name="reportParameters"></param> /// <param name="reportParameters"></param>
/// <returns></returns> /// <returns></returns>
public static IReportCreator CreatePageBuilder (IReportModel reportModel, public static IReportCreator CreatePageBuilder (IReportModel reportModel,
DataTable dataTable, DataTable dataTable,
ReportParameters reportParameters) ReportParameters reportParameters)
{ {
@ -557,8 +506,8 @@ namespace ICSharpCode.Reports.Core {
/// <param name="reportParameters"></param> /// <param name="reportParameters"></param>
/// <returns></returns> /// <returns></returns>
public static IReportCreator CreatePageBuilder (IReportModel reportModel, public static IReportCreator CreatePageBuilder (IReportModel reportModel,
IList list, IList list,
ReportParameters reportParameters) ReportParameters reportParameters)
{ {
if (reportModel == null) { if (reportModel == null) {
throw new ArgumentNullException("reportModel"); throw new ArgumentNullException("reportModel");
@ -705,16 +654,6 @@ namespace ICSharpCode.Reports.Core {
} }
} }
// public ConnectionObject ConnectionObject {
// get {
// return connectionObject;
// }
// set {
// connectionObject = value;
// }
// }
#endregion #endregion

31
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportViewer/IPreviewControl.cs

@ -0,0 +1,31 @@
// 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.Collections;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Text;
using System.Globalization;
using System.Windows.Forms;
using ICSharpCode.Reports.Core.BaseClasses.Printing;
using ICSharpCode.Reports.Core.Exporter;
using ICSharpCode.Reports.Core.Exporter.ExportRenderer;
using ICSharpCode.Reports.Core.Globals;
using ICSharpCode.Reports.Core.Interfaces;
namespace ICSharpCode.Reports.Core.ReportViewer
{
public interface IPreviewControl
{
void RunReport(string fileName, ReportParameters parameters);
void RunReport(ReportModel reportModel, ReportParameters parameters);
void RunReport(ReportModel reportModel, DataTable dataTable, ReportParameters parameters);
void RunReport(ReportModel reportModel, IList dataSource, ReportParameters parameters);
void RunReport(ReportModel reportModel, IDataManager dataManager);
PagesCollection Pages { get; }
IReportViewerMessages Messages { get; set; }
}
}

411
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportViewer/ReportViewer.cs

@ -21,49 +21,46 @@ namespace ICSharpCode.Reports.Core.ReportViewer
/// <summary> /// <summary>
/// Description of UserControl1. /// Description of UserControl1.
/// </summary> /// </summary>
public partial class PreviewControl public partial class PreviewControl : IPreviewControl
{ {
public event EventHandler <EventArgs> PreviewLayoutChanged; public event EventHandler<EventArgs> PreviewLayoutChanged;
private float zoom; private float zoom;
private int pageNumber; private int pageNumber;
private Bitmap bitmap; private Bitmap bitmap;
private PagesCollection pages; private PagesCollection pages;
private IReportViewerMessages reportViewerMessages; private IReportViewerMessages reportViewerMessages;
private PreviewRenderer previewRenderer; private PreviewRenderer previewRenderer;
private delegate void invokeDelegate(); private delegate void invokeDelegate();
private ReportSettings reportSettings; private ReportSettings reportSettings;
private IDataManager dataManager; private IDataManager dataManager;
#region Constructor #region Constructor
public PreviewControl(){ public PreviewControl()
{
// //
// The InitializeComponent() call is required for Windows Forms designer support. // The InitializeComponent() call is required for Windows Forms designer support.
// //
InitializeComponent(); InitializeComponent();
this.SetStyle(ControlStyles.DoubleBuffer | this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true);
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.ResizeRedraw,
true);
this.UpdateStyles(); this.UpdateStyles();
InitZoomCombo (); InitZoomCombo();
previewRenderer = PreviewRenderer.CreateInstance(); previewRenderer = PreviewRenderer.CreateInstance();
this.CheckEnable(); this.CheckEnable();
SetTransparentBackground (); SetTransparentBackground();
this.numericToolStripTextBox2.Navigate += new EventHandler <PageNavigationEventArgs> (OnNavigate);
this.numericToolStripTextBox2.Navigate += new EventHandler<PageNavigationEventArgs>(OnNavigate);
} }
private void SetTransparentBackground () private void SetTransparentBackground()
{ {
this.printButton.ImageTransparentColor = Color.White; this.printButton.ImageTransparentColor = Color.White;
this.pdfButton.ImageTransparentColor = Color.White; this.pdfButton.ImageTransparentColor = Color.White;
@ -72,38 +69,38 @@ namespace ICSharpCode.Reports.Core.ReportViewer
this.backButton.ImageTransparentColor = Color.White; this.backButton.ImageTransparentColor = Color.White;
this.lastPageButton.ImageTransparentColor = Color.White; this.lastPageButton.ImageTransparentColor = Color.White;
} }
#endregion #endregion
public void RunReport (string fileName,ReportParameters parameters) public void RunReport(string fileName, ReportParameters parameters)
{ {
if (String.IsNullOrEmpty(fileName)) { if (String.IsNullOrEmpty(fileName)) {
throw new ArgumentNullException("fileName"); throw new ArgumentNullException("fileName");
} }
ReportModel model = ReportEngine.LoadReportModel(fileName); ReportModel model = ReportEngine.LoadReportModel(fileName);
this.RunReport(model,parameters); this.RunReport(model, parameters);
} }
public void RunReport (ReportModel reportModel,ReportParameters parameters) public void RunReport(ReportModel reportModel, ReportParameters parameters)
{ {
if (reportModel == null) { if (reportModel == null) {
throw new ArgumentNullException("reportModel"); throw new ArgumentNullException("reportModel");
} }
this.SetupViewer(reportModel); this.SetupViewer(reportModel);
if (reportModel.DataModel == GlobalEnums.PushPullModel.FormSheet) { if (reportModel.DataModel == GlobalEnums.PushPullModel.FormSheet) {
RunFormSheet(reportModel); RunFormSheet(reportModel);
} else { } else {
ReportEngine.CheckForParameters(reportModel,parameters); ReportEngine.CheckForParameters(reportModel, parameters);
this.dataManager = DataManagerFactory.CreateDataManager(reportModel,parameters); this.dataManager = DataManagerFactory.CreateDataManager(reportModel, parameters);
RunDataReport (reportModel,dataManager); RunDataReport(reportModel, dataManager);
} }
} }
public void RunReport (ReportModel reportModel,DataTable dataTable,ReportParameters parameters) public void RunReport(ReportModel reportModel, DataTable dataTable, ReportParameters parameters)
{ {
if (reportModel == null) { if (reportModel == null) {
throw new ArgumentNullException("reportModel"); throw new ArgumentNullException("reportModel");
@ -111,14 +108,14 @@ namespace ICSharpCode.Reports.Core.ReportViewer
if (dataTable == null) { if (dataTable == null) {
throw new ArgumentNullException("dataTable"); throw new ArgumentNullException("dataTable");
} }
ReportEngine.CheckForParameters(reportModel,parameters); ReportEngine.CheckForParameters(reportModel, parameters);
IDataManager dataManager = DataManagerFactory.CreateDataManager(reportModel,dataTable); IDataManager dataManager = DataManagerFactory.CreateDataManager(reportModel, dataTable);
RunReport (reportModel,dataManager); RunReport(reportModel, dataManager);
} }
public void RunReport (ReportModel reportModel,IList dataSource,ReportParameters parameters) public void RunReport(ReportModel reportModel, IList dataSource, ReportParameters parameters)
{ {
if (reportModel == null) { if (reportModel == null) {
throw new ArgumentNullException("reportModel"); throw new ArgumentNullException("reportModel");
@ -126,14 +123,14 @@ namespace ICSharpCode.Reports.Core.ReportViewer
if (dataSource == null) { if (dataSource == null) {
throw new ArgumentNullException("dataSource"); throw new ArgumentNullException("dataSource");
} }
ReportEngine.CheckForParameters(reportModel,parameters); ReportEngine.CheckForParameters(reportModel, parameters);
IDataManager dataManager = DataManagerFactory.CreateDataManager(reportModel,dataSource); IDataManager dataManager = DataManagerFactory.CreateDataManager(reportModel, dataSource);
RunReport (reportModel,dataManager); RunReport(reportModel, dataManager);
} }
public void RunReport (ReportModel reportModel,IDataManager dataManager) public void RunReport(ReportModel reportModel, IDataManager dataManager)
{ {
if (reportModel == null) { if (reportModel == null) {
throw new ArgumentNullException("reportModel"); throw new ArgumentNullException("reportModel");
@ -141,59 +138,60 @@ namespace ICSharpCode.Reports.Core.ReportViewer
if (dataManager == null) { if (dataManager == null) {
throw new ArgumentNullException("dataManager"); throw new ArgumentNullException("dataManager");
} }
this.SetupViewer(reportModel); this.SetupViewer(reportModel);
this.dataManager = dataManager; this.dataManager = dataManager;
RunDataReport(reportModel,dataManager); RunDataReport(reportModel, dataManager);
} }
#region Rendering #region Rendering
private void RunFormSheet (ReportModel reportModel) private void RunFormSheet(ReportModel reportModel)
{ {
IReportCreator reportCreator = FormPageBuilder.CreateInstance(reportModel); IReportCreator reportCreator = FormPageBuilder.CreateInstance(reportModel);
reportCreator.SectionRendering += new EventHandler<SectionRenderEventArgs>(PushPrinting); reportCreator.SectionRendering += new EventHandler<SectionRenderEventArgs>(PushPrinting);
reportCreator.PageCreated += OnPageCreated; reportCreator.PageCreated += OnPageCreated;
reportCreator.BuildExportList(); reportCreator.BuildExportList();
ShowCompleted (); ShowCompleted();
} }
private void RunDataReport (ReportModel reportModel,IDataManager data) private void RunDataReport(ReportModel reportModel, IDataManager data)
{ {
IReportCreator reportCreator = DataPageBuilder.CreateInstance(reportModel,data); IReportCreator reportCreator = DataPageBuilder.CreateInstance(reportModel, data);
reportCreator.SectionRendering += new EventHandler<SectionRenderEventArgs>(PushPrinting); reportCreator.SectionRendering += new EventHandler<SectionRenderEventArgs>(PushPrinting);
reportCreator.GroupHeaderRendering += new EventHandler<GroupHeaderEventArgs>(GroupHeaderRendering); reportCreator.GroupHeaderRendering += new EventHandler<GroupHeaderEventArgs>(GroupHeaderRendering);
reportCreator.GroupFooterRendering += GroupFooterRendering; reportCreator.GroupFooterRendering += GroupFooterRendering;
reportCreator.RowRendering += new EventHandler<RowRenderEventArgs>(RowRendering); reportCreator.RowRendering += new EventHandler<RowRenderEventArgs>(RowRendering);
reportCreator.PageCreated += OnPageCreated; reportCreator.PageCreated += OnPageCreated;
reportCreator.BuildExportList(); reportCreator.BuildExportList();
ShowCompleted(); ShowCompleted();
} }
#endregion #endregion
#region Events from worker #region Events from worker
private void OnPageCreated (object sender, PageCreatedEventArgs e) private void OnPageCreated(object sender, PageCreatedEventArgs e)
{ {
this.Pages.Add(e.SinglePage); this.Pages.Add(e.SinglePage);
if (this.Pages.Count == 1) { if (this.Pages.Count == 1) {
ShowSelectedPage(); ShowSelectedPage();
this.pageNumber = 0; this.pageNumber = 0;
} }
} }
private void PushPrinting (object sender,SectionRenderEventArgs e) private void PushPrinting(object sender, SectionRenderEventArgs e)
{ {
// string sectionName = e.Section.Name; // string sectionName = e.Section.Name;
}
/* /*
if (sectionName == ReportSectionNames.ReportHeader) { if (sectionName == ReportSectionNames.ReportHeader) {
Console.WriteLine("PushPrinting :" + ReportSectionNames.ReportHeader); Console.WriteLine("PushPrinting :" + ReportSectionNames.ReportHeader);
@ -219,18 +217,17 @@ namespace ICSharpCode.Reports.Core.ReportViewer
throw new WrongSectionException(sectionName); throw new WrongSectionException(sectionName);
} }
*/ */
}
private void GroupHeaderRendering(object sender, GroupHeaderEventArgs ghea)
private void GroupHeaderRendering (object sender, GroupHeaderEventArgs ghea)
{ {
// Console.WriteLine("ReportViewer - GroupHeaderRendering :"); // Console.WriteLine("ReportViewer - GroupHeaderRendering :");
// BaseGroupedRow v = ghea.GroupHeader; // BaseGroupedRow v = ghea.GroupHeader;
// v.BackColor = System.Drawing.Color.Red; // v.BackColor = System.Drawing.Color.Red;
} }
private void GroupFooterRendering ( object sender, GroupFooterEventArgs gfea) private void GroupFooterRendering(object sender, GroupFooterEventArgs gfea)
{ {
// Console.WriteLine(); // Console.WriteLine();
// Console.WriteLine("ReportViewer - GroupFooterRendering :"); // Console.WriteLine("ReportViewer - GroupFooterRendering :");
@ -239,41 +236,40 @@ namespace ICSharpCode.Reports.Core.ReportViewer
// BaseTextItem i = (BaseTextItem)v.Items[0]; // BaseTextItem i = (BaseTextItem)v.Items[0];
// i.Text ="neuer text"; // i.Text ="neuer text";
} }
private void RowRendering (object sender,RowRenderEventArgs rrea) private void RowRendering(object sender, RowRenderEventArgs rrea)
{ {
//Console.WriteLine("ReportViewer - RowRendering :"); //Console.WriteLine("ReportViewer - RowRendering :");
} }
#endregion #endregion
private void AdjustDrawArea() private void AdjustDrawArea()
{ {
if (this.reportSettings != null) { if (this.reportSettings != null) {
this.drawingPanel.ClientSize = this.drawingPanel.ClientSize = new Size((int)(this.reportSettings.PageSize.Width * this.zoom), this.drawingPanel.ClientSize = this.drawingPanel.ClientSize = new Size((int)(this.reportSettings.PageSize.Width * this.zoom), (int)(this.reportSettings.PageSize.Height * this.zoom));
(int)(this.reportSettings.PageSize.Height * this.zoom));
} }
} }
#region setup #region setup
private void SetupViewer (ReportModel reportModel) private void SetupViewer(ReportModel reportModel)
{ {
this.pages = new PagesCollection(); this.pages = new PagesCollection();
this.reportSettings = reportModel.ReportSettings; this.reportSettings = reportModel.ReportSettings;
this.AdjustDrawArea(); this.AdjustDrawArea();
} }
private void ShowCompleted() private void ShowCompleted()
{ {
if (this.InvokeRequired) { if (this.InvokeRequired) {
invokeDelegate updateControl = delegate(){}; invokeDelegate updateControl = delegate() { };
updateControl = ShowCompleted; updateControl = ShowCompleted;
Invoke (updateControl); Invoke(updateControl);
} }
if (this.dataManager != null) { if (this.dataManager != null) {
this.dataManager.GetNavigator.Reset(); this.dataManager.GetNavigator.Reset();
@ -285,26 +281,25 @@ namespace ICSharpCode.Reports.Core.ReportViewer
this.UpdateToolStrip(); this.UpdateToolStrip();
ShowSelectedPage(); ShowSelectedPage();
} }
#endregion #endregion
#region ToolStrip #region ToolStrip
private void InitZoomCombo () private void InitZoomCombo()
{ {
foreach (string s in GlobalLists.ZoomValues()) foreach (string s in GlobalLists.ZoomValues()) {
{
this.comboZoom.Items.Add(s); this.comboZoom.Items.Add(s);
} }
this.comboZoom.SelectedIndex = this.comboZoom.FindString("100"); this.comboZoom.SelectedIndex = this.comboZoom.FindString("100");
} }
void comboZoomSelectedIndexChange(object sender, System.EventArgs e) void comboZoomSelectedIndexChange(object sender, System.EventArgs e)
{ {
if (this.comboZoom.SelectedItem.ToString().IndexOf("%") > 0) { if (this.comboZoom.SelectedItem.ToString().IndexOf("%") > 0) {
string s1 = this.comboZoom.SelectedItem.ToString().Substring(0,this.comboZoom.SelectedItem.ToString().IndexOf("%")); string s1 = this.comboZoom.SelectedItem.ToString().Substring(0, this.comboZoom.SelectedItem.ToString().IndexOf("%"));
this.zoom = (float)Convert.ToDecimal(s1,CultureInfo.InvariantCulture) / 100; this.zoom = (float)Convert.ToDecimal(s1, CultureInfo.InvariantCulture) / 100;
} else { } else {
string sel = this.comboZoom.SelectedItem.ToString(); string sel = this.comboZoom.SelectedItem.ToString();
switch (sel) { switch (sel) {
@ -316,26 +311,25 @@ namespace ICSharpCode.Reports.Core.ReportViewer
break; break;
} }
} }
this.Invalidate(true); this.Invalidate(true);
this.Update(); this.Update();
this.AdjustDrawArea(); this.AdjustDrawArea();
if ((this.pages != null) && (pageNumber < pages.Count)) if ((this.pages != null) && (pageNumber < pages.Count)) {
{ this.ShowSelectedPage();
this.ShowSelectedPage(); }
} EventHelper.Raise<EventArgs>(this.PreviewLayoutChanged, this, e);
EventHelper.Raise<EventArgs>(this.PreviewLayoutChanged,this,e);
} }
private void Localize () private void Localize()
{ {
if (this.reportViewerMessages != null) { if (this.reportViewerMessages != null) {
this.firstPageButton.ToolTipText = this.reportViewerMessages.FirstPageMessage; this.firstPageButton.ToolTipText = this.reportViewerMessages.FirstPageMessage;
this.backButton.ToolTipText = this.reportViewerMessages.BackButtonText; this.backButton.ToolTipText = this.reportViewerMessages.BackButtonText;
this.forwardButton.ToolTipText = this.reportViewerMessages.NextButtonMessage; this.forwardButton.ToolTipText = this.reportViewerMessages.NextButtonMessage;
this.lastPageButton.ToolTipText = this.reportViewerMessages.LastPageMessage; this.lastPageButton.ToolTipText = this.reportViewerMessages.LastPageMessage;
this.printButton.ToolTipText = this.reportViewerMessages.PrintButtonMessage; this.printButton.ToolTipText = this.reportViewerMessages.PrintButtonMessage;
this.comboZoom.ToolTipText = this.reportViewerMessages.ZoomMessage; this.comboZoom.ToolTipText = this.reportViewerMessages.ZoomMessage;
this.createPdfMenu.Text = this.reportViewerMessages.PdfFileMessage; this.createPdfMenu.Text = this.reportViewerMessages.PdfFileMessage;
@ -343,32 +337,31 @@ namespace ICSharpCode.Reports.Core.ReportViewer
// this.pagesCreatedMessage = this.reportViewerMessages.PagesCreatedMessage; // this.pagesCreatedMessage = this.reportViewerMessages.PagesCreatedMessage;
} }
} }
private void UpdateToolStrip () private void UpdateToolStrip()
{ {
if (this.InvokeRequired) { if (this.InvokeRequired) {
invokeDelegate updateControl = delegate(){}; invokeDelegate updateControl = delegate() { };
updateControl = UpdateToolStrip; updateControl = UpdateToolStrip;
Invoke (updateControl); Invoke(updateControl);
} }
if (this.toolStrip1 != null){ if (this.toolStrip1 != null) {
string str = String.Empty; string str = String.Empty;
if (this.pages != null) { if (this.pages != null) {
str = String.Format (CultureInfo.CurrentCulture, str = String.Format(CultureInfo.CurrentCulture, "of {0}", this.pages.Count);
"of {0}",this.pages.Count);
} }
this.numericToolStripTextBox2.Text = (this.pageNumber+1).ToString(CultureInfo.CurrentCulture); this.numericToolStripTextBox2.Text = (this.pageNumber + 1).ToString(CultureInfo.CurrentCulture);
this.pageInfoLabel.Text = str; this.pageInfoLabel.Text = str;
} }
} }
private void OnNavigate (object sender, PageNavigationEventArgs e) private void OnNavigate(object sender, PageNavigationEventArgs e)
{ {
int i = e.PageNumber -1; int i = e.PageNumber - 1;
if ((i > -1)) { if ((i > -1)) {
if (i == this.pageNumber) { if (i == this.pageNumber) {
return; return;
@ -380,22 +373,22 @@ namespace ICSharpCode.Reports.Core.ReportViewer
} }
} }
} }
#endregion #endregion
#region Drawing #region Drawing
private void ShowSelectedPage () private void ShowSelectedPage()
{ {
if (this.InvokeRequired) { if (this.InvokeRequired) {
invokeDelegate updateControl = delegate(){}; invokeDelegate updateControl = delegate() { };
updateControl = ShowSelectedPage; updateControl = ShowSelectedPage;
Invoke (updateControl); Invoke(updateControl);
} }
if (this.pageNumber < this.pages.Count) { if (this.pageNumber < this.pages.Count) {
ExporterPage sp = pages[this.pageNumber]; ExporterPage sp = pages[this.pageNumber];
if (this.bitmap != null) { if (this.bitmap != null) {
this.bitmap.Dispose(); this.bitmap.Dispose();
} }
@ -405,60 +398,60 @@ namespace ICSharpCode.Reports.Core.ReportViewer
} }
this.UpdateToolStrip(); this.UpdateToolStrip();
} }
private void CenterDisplayPanel() private void CenterDisplayPanel()
{ {
if (this.Width > drawingPanel.Width) if (this.Width > drawingPanel.Width)
drawingPanel.Left = (this.Width - drawingPanel.Width) / 2; drawingPanel.Left = (this.Width - drawingPanel.Width) / 2;
else else
drawingPanel.Left = 3; drawingPanel.Left = 3;
} }
private void DrawingPanelPaint(object sender, PaintEventArgs e) private void DrawingPanelPaint(object sender, PaintEventArgs e)
{ {
e.Graphics.Clear(this.drawingPanel.BackColor); e.Graphics.Clear(this.drawingPanel.BackColor);
CenterDisplayPanel(); CenterDisplayPanel();
if (this.bitmap != null) { if (this.bitmap != null) {
e.Graphics.DrawImage(this.bitmap,0,0); e.Graphics.DrawImage(this.bitmap, 0, 0);
} }
} }
private Bitmap CreateBitmap (ExporterPage page) private Bitmap CreateBitmap(ExporterPage page)
{ {
Bitmap bm = new Bitmap(this.drawingPanel.ClientSize.Width,this.drawingPanel.ClientSize.Height,System.Drawing.Imaging.PixelFormat.Format24bppRgb); Bitmap bm = new Bitmap(this.drawingPanel.ClientSize.Width, this.drawingPanel.ClientSize.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
using (Graphics gr = Graphics.FromImage(bm)) { using (Graphics gr = Graphics.FromImage(bm)) {
// Reset Transform to org. Value // Reset Transform to org. Value
gr.Clear(this.drawingPanel.BackColor); gr.Clear(this.drawingPanel.BackColor);
// this.Invalidate(); // this.Invalidate();
gr.ScaleTransform(1F,1F); gr.ScaleTransform(1f, 1f);
gr.Clear(this.drawingPanel.BackColor); gr.Clear(this.drawingPanel.BackColor);
gr.ScaleTransform(this.zoom,this.zoom); gr.ScaleTransform(this.zoom, this.zoom);
gr.TextRenderingHint = TextRenderingHint.AntiAlias; gr.TextRenderingHint = TextRenderingHint.AntiAlias;
gr.PixelOffsetMode = PixelOffsetMode.HighQuality; gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
gr.InterpolationMode = InterpolationMode.High; gr.InterpolationMode = InterpolationMode.High;
previewRenderer.Graphics = gr; previewRenderer.Graphics = gr;
previewRenderer.Page = page; previewRenderer.Page = page;
previewRenderer.RenderOutput(); previewRenderer.RenderOutput();
} }
return bm; return bm;
} }
#endregion #endregion
#region PageNavigation #region PageNavigation
private void CheckEnable () private void CheckEnable()
{ {
if ((this.pages == null)||(this.pages.Count == 0)) { if ((this.pages == null) || (this.pages.Count == 0)) {
this.firstPageButton.Enabled = false; this.firstPageButton.Enabled = false;
this.forwardButton.Enabled = false; this.forwardButton.Enabled = false;
this.backButton.Enabled = false; this.backButton.Enabled = false;
@ -470,10 +463,10 @@ namespace ICSharpCode.Reports.Core.ReportViewer
this.backButton.Enabled = true; this.backButton.Enabled = true;
this.lastPageButton.Enabled = true; this.lastPageButton.Enabled = true;
} }
} }
private void FirstPageButtonClick(object sender, System.EventArgs e) private void FirstPageButtonClick(object sender, System.EventArgs e)
{ {
if ((this.pages != null) && (this.pageNumber > 0)) { if ((this.pages != null) && (this.pageNumber > 0)) {
@ -482,75 +475,72 @@ namespace ICSharpCode.Reports.Core.ReportViewer
this.CheckEnable(); this.CheckEnable();
this.ShowSelectedPage(); this.ShowSelectedPage();
} }
private void BackButtonClick(object sender, System.EventArgs e) private void BackButtonClick(object sender, System.EventArgs e)
{ {
CheckEnable(); CheckEnable();
if (this.pageNumber > 0) { if (this.pageNumber > 0) {
this.pageNumber --; this.pageNumber--;
} else { } else {
this.pageNumber = this.pages.Count -1; this.pageNumber = this.pages.Count - 1;
} }
this.CheckEnable(); this.CheckEnable();
this.ShowSelectedPage(); this.ShowSelectedPage();
} }
private void ForwardButtonClick(object sender, System.EventArgs e) private void ForwardButtonClick(object sender, System.EventArgs e)
{ {
if (this.pageNumber < this.pages.Count-1) { if (this.pageNumber < this.pages.Count - 1) {
this.pageNumber ++; this.pageNumber++;
} else { } else {
this.pageNumber = 0; this.pageNumber = 0;
} }
CheckEnable(); CheckEnable();
this.ShowSelectedPage(); this.ShowSelectedPage();
} }
private void LastPageButtonClick(object sender, System.EventArgs e) private void LastPageButtonClick(object sender, System.EventArgs e)
{ {
this.pageNumber = this.pages.Count -1; this.pageNumber = this.pages.Count - 1;
CheckEnable(); CheckEnable();
this.ShowSelectedPage(); this.ShowSelectedPage();
} }
private void PrintButton(object sender, System.EventArgs e) private void PrintButton(object sender, System.EventArgs e)
{ {
using (PrintDialog dlg = new PrintDialog()) { using (PrintDialog dlg = new PrintDialog()) {
DialogResult result = dlg.ShowDialog(); DialogResult result = dlg.ShowDialog();
if (result==DialogResult.OK){ if (result == DialogResult.OK) {
PrintRenderer printer = PrintRenderer.CreateInstance(this.pages,dlg.PrinterSettings); PrintRenderer printer = PrintRenderer.CreateInstance(this.pages, dlg.PrinterSettings);
printer.Start(); printer.Start();
printer.RenderOutput(); printer.RenderOutput();
printer.End(); printer.End();
} }
} }
} }
private void PdfButtonClick(object sender, EventArgs e) private void PdfButtonClick(object sender, EventArgs e)
{ {
this.CreatePdf(); this.CreatePdf();
} }
private void CreatePdf () private void CreatePdf()
{ {
using (SaveFileDialog saveDialog = new SaveFileDialog()){ using (SaveFileDialog saveDialog = new SaveFileDialog()) {
saveDialog.FileName = this.reportSettings.ReportName; saveDialog.FileName = this.reportSettings.ReportName;
saveDialog.DefaultExt = "PDF"; saveDialog.DefaultExt = "PDF";
saveDialog.ValidateNames = true; saveDialog.ValidateNames = true;
if(saveDialog.ShowDialog() == DialogResult.OK){ if (saveDialog.ShowDialog() == DialogResult.OK) {
using (PdfRenderer pdfRenderer = PdfRenderer.CreateInstance(this.reportSettings, using (PdfRenderer pdfRenderer = PdfRenderer.CreateInstance(this.reportSettings, this.pages, saveDialog.FileName, true)) {
this.pages,
saveDialog.FileName,
true)) {
pdfRenderer.Start(); pdfRenderer.Start();
pdfRenderer.RenderOutput(); pdfRenderer.RenderOutput();
pdfRenderer.End(); pdfRenderer.End();
@ -558,18 +548,17 @@ namespace ICSharpCode.Reports.Core.ReportViewer
} }
} }
} }
#endregion #endregion
private void SetPages () private void SetPages()
{ {
this.pageNumber = 0; this.pageNumber = 0;
this.CheckEnable(); this.CheckEnable();
} }
public PagesCollection Pages public PagesCollection Pages {
{
get { get {
if (this.pages == null) { if (this.pages == null) {
this.pages = new PagesCollection(); this.pages = new PagesCollection();
@ -577,15 +566,15 @@ namespace ICSharpCode.Reports.Core.ReportViewer
return this.pages; return this.pages;
} }
} }
public IReportViewerMessages Messages public IReportViewerMessages Messages {
{ get { return this.reportViewerMessages; }
get { return this.reportViewerMessages;} set {
set { this.reportViewerMessages = value; this.reportViewerMessages = value;
Localize(); Localize();
} }
} }
} }
} }

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

@ -13,6 +13,7 @@ using System.Windows.Documents;
using System.Windows.Media; using System.Windows.Media;
using ICSharpCode.Reports.Core.Exporter; using ICSharpCode.Reports.Core.Exporter;
using ICSharpCode.Reports.Core.Globals;
namespace ICSharpCode.Reports.Core.WPF namespace ICSharpCode.Reports.Core.WPF
{ {
@ -31,79 +32,154 @@ namespace ICSharpCode.Reports.Core.WPF
Console.WriteLine("\tCreatepage with {0} items ",exporterPage.Items.Count); Console.WriteLine("\tCreatepage with {0} items ",exporterPage.Items.Count);
FixedPage page = new FixedPage(); FixedPage page = new FixedPage();
//http://www.bing.com/search?q=Convert+Windows+Forms+to+WPF&FORM=QSRE //http://www.bing.com/search?q=Convert+Windows+Forms+to+WPF&FORM=QSRE
foreach (var element in exporterPage.Items) {
var item = ItemFactory(element); CreatePageInternal (page,exporterPage.Items);
page.Children.Add(item);
}
Console.WriteLine("\tPage created with with {0} items ",page.Children.Count); Console.WriteLine("\tPage created with with {0} items ",page.Children.Count);
return page; return page;
} }
void CreatePageInternal(FixedPage page, ExporterCollection items)
{
foreach (var element in items)
{
var cont = element as ExportContainer;
var item = ItemFactory(element);
if (item != null) {
page.Children.Add(item);
}
}
}
UIElement ItemFactory (BaseExportColumn column) UIElement ItemFactory (BaseExportColumn column)
{ {
var text = column as ExportText; Console.WriteLine(" Create {0}",column.ToString());
UIElement element = null; UIElement element = null;
var container = column as ExportContainer;
if (container != null) {
element = CreateContainer(column);
}
var text = column as ExportText;
if (text != null) { if (text != null) {
element = CreateTextColumn(text); element = CreateTextColumn(text);
} }
return element; return element;
} }
private UIElement CreateContainer(BaseExportColumn column)
{
ExportContainer container = column as ExportContainer;
var canvas = new Canvas();
canvas.Width = column.StyleDecorator.DisplayRectangle.Width;
canvas.Height = column.StyleDecorator.DisplayRectangle.Height;
FixedPage.SetLeft(canvas,column.StyleDecorator.Location.X);
FixedPage.SetTop(canvas,column.StyleDecorator.Location.Y);
var conv = new BrushConverter();
SolidColorBrush b = conv.ConvertFromString(System.Drawing.Color.LightGray.Name) as SolidColorBrush;
canvas.Background = b;
foreach (var element in container.Items) {
var text = element as ExportText;
if (text != null)
{
var textBlock = CreateTextBlock (text);
// textBlock.ClipToBounds = true;
textBlock.TextWrapping = TextWrapping.Wrap;
Canvas.SetLeft(textBlock,element.StyleDecorator.Location.X - column.StyleDecorator.Location.X);
Canvas.SetTop(textBlock,element.StyleDecorator.Location.Y - column.StyleDecorator.Location.Y);
// var m = new System.Windows.Thickness(text.StyleDecorator.Location.X - column.StyleDecorator.Location.X,
// text.StyleDecorator.Location.Y - column.StyleDecorator.Location.Y,0,0);
// t.Margin = m;
Console.WriteLine("{0} - {1} - {2} ",textBlock.Text,textBlock.Width,textBlock.MaxWidth);
canvas.Children.Add(textBlock);
}
}
canvas.Measure(PageSize);
canvas.Arrange(new Rect(new System.Windows.Point(), PageSize));
canvas.UpdateLayout();
return canvas;
}
UIElement CreateTextColumn(ExportText et)
{
TextBlock tb = CreateTextBlock(et);
FixedPage.SetLeft(tb,et.StyleDecorator.Location.X );
FixedPage.SetTop(tb,et.StyleDecorator.Location.Y);
return tb;
}
TextBlock CreateTextColumn(ExportText et) TextBlock CreateTextBlock(ExportText et)
{ {
TextBlock tb = new TextBlock(); TextBlock tb = new TextBlock();
tb.Text = et.Text; tb.Text = et.Text;
SetFont(tb, et.StyleDecorator);
SetFont(tb,et.StyleDecorator); tb.Width = et.StyleDecorator.DisplayRectangle.Width;
FixedPage.SetLeft(tb,et.StyleDecorator.Location.X ); tb.Height = et.StyleDecorator.DisplayRectangle.Height;
FixedPage.SetTop(tb,et.StyleDecorator.Location.Y); tb.MaxHeight = et.StyleDecorator.DisplayRectangle.Height;
tb.MaxWidth = et.StyleDecorator.DisplayRectangle.Width;
return tb; return tb;
} }
//points = pixels * 96 / 72
void SetFont(TextBlock tb, TextStyleDecorator styleDecorator) void SetFont(TextBlock tb, TextStyleDecorator styleDecorator)
{ {
// //
// http://msdn.microsoft.com/en-us/library/system.windows.textdecorations.aspx // http://msdn.microsoft.com/en-us/library/system.windows.textdecorations.aspx
// http://stackoverflow.com/questions/637636/using-a-system-drawing-font-with-a-wpf-label // http://stackoverflow.com/questions/637636/using-a-system-drawing-font-with-a-wpf-label
var s = NewTypeFaceFromFont (styleDecorator.Font); // var s = NewTypeFaceFromFont (styleDecorator.Font);
// FontFamilyConverter conv = new FontFamilyConverter(); // FontFamilyConverter conv = new FontFamilyConverter();
// FontFamily mfont1 = conv.ConvertFromString(styleDecorator.Font.Name) as FontFamily; // FontFamily mfont1 = conv.ConvertFromString(styleDecorator.Font.Name) as FontFamily;
// tb.FontFamily = mfont1; // tb.FontFamily = mfont1;
tb.FontFamily = new FontFamily(styleDecorator.Font.FontFamily.Name); tb.FontFamily = new FontFamily(styleDecorator.Font.FontFamily.Name);
tb.FontSize = styleDecorator.Font.GetHeight(); // var s = styleDecorator.Font.GetHeight();
// var a = s /97*72;
var b = styleDecorator.Font.Size;
//tb.FontSize = (int)styleDecorator.Font.GetHeight();
tb.FontSize = b * 96/72;
if (styleDecorator.Font.Bold) { if (styleDecorator.Font.Bold) {
tb.FontWeight = FontWeights.Bold; tb.FontWeight = FontWeights.Bold;
} }
Console.WriteLine ("{0} - {1}",styleDecorator.Font.FontFamily.Name,styleDecorator.Font.GetHeight()); Console.WriteLine ("{0} - {1}",styleDecorator.Font.FontFamily.Name,styleDecorator.Font.GetHeight());
} }
/*
using System.Drawing;
using Media = System.Windows.Media;
Font font = new Font(new System.Drawing.FontFamily("Comic Sans MS"), 10);
//option 1
Media.FontFamily mfont = new Media.FontFamily(font.Name);
//option 2 does the same thing
Media.FontFamilyConverter conv = new Media.FontFamilyConverter();
Media.FontFamily mfont1 = conv.ConvertFromString(font.Name) as Media.FontFamily;
//option 3
Media.FontFamily mfont2 = Media.Fonts.SystemFontFamilies.Where(x => x.Source == font.Name).FirstOrDefault();
private static Typeface NewTypeFaceFromFont(System.Drawing.Font f) */
{ Typeface typeface = null;
FontFamily ff = new FontFamily(f.Name);
if (typeface == null)
{
typeface = new Typeface(ff, (f.Style == System.Drawing.FontStyle.Italic ? FontStyles.Italic : FontStyles.Normal),
(f.Style == System.Drawing.FontStyle.Bold ? FontWeights.Bold : FontWeights.Normal),
FontStretches.Normal);
}
if (typeface == null)
{
typeface = new Typeface(new FontFamily("Arial"),
FontStyles.Italic,
FontWeights.Normal,
FontStretches.Normal);
}
return typeface;
}
public void ArrangePage(Size pageSize, FixedPage page) public void ArrangePage(Size pageSize, FixedPage page)
{ {
Console.WriteLine("Arrange page with Size {0}",pageSize); Console.WriteLine("Arrange page with Size {0}",pageSize);
@ -111,6 +187,8 @@ namespace ICSharpCode.Reports.Core.WPF
page.Arrange(new Rect(new System.Windows.Point(), pageSize)); page.Arrange(new Rect(new System.Windows.Point(), pageSize));
page.UpdateLayout(); page.UpdateLayout();
} }
public System.Windows.Size PageSize {get;set;}
} }
} }

27
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/WpfReportViewer/WpfReportViewer.xaml

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<UserControl
x:Class="ICSharpCode.Reports.Core.WpfReportViewer.WpfReportViewer" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Border
BorderBrush="Black"
BorderThickness="3"
CornerRadius="4">
<StackPanel
Orientation="Horizontal"
HorizontalAlignment="Stretch">
<StackPanel
Orientation=" Vertical"
Width="100">
<Button>Hallo 1</Button>
<Button>hallo 2</Button>
</StackPanel>
<DocumentViewer
x:Name="DocumentViewer"
Margin="20,20,20,20"
HorizontalAlignment="Stretch"
Background="White"
Width="984"></DocumentViewer>
</StackPanel>
</Border>
</Grid>
</UserControl>
Loading…
Cancel
Save