From 77bb7ced641af7901109cd684d1a3fa0a1406141 Mon Sep 17 00:00:00 2001 From: peterforstmeier Date: Sun, 12 Dec 2010 19:53:38 +0100 Subject: [PATCH] File/Preview and File/Print use Exporter#s (same as in ReportViewer), the standard print code (Renderer's) will not be further developed --- .../Project/Commands/PreviewCommands.cs | 32 +++---- .../Project/ReportDesignerView.cs | 89 ++++++++++--------- .../ReportViewerSecondaryView.cs | 6 +- .../ExportRenderer/BaseExportRenderer.cs | 3 + .../ExportRenderer/PreviewRenderer.cs | 19 ++-- .../Exporter/ExportRenderer/PrintRenderer.cs | 26 +++--- 6 files changed, 89 insertions(+), 86 deletions(-) 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 ba2a4fbe27..94af309b46 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 @@ -11,8 +11,6 @@ namespace ICSharpCode.Reports.Addin.Commands public class AbstractPreviewCommand :AbstractCommand { - ReportModel model; - ICSharpCode.Reports.Core.ReportViewer.PreviewControl reportViewer; public AbstractPreviewCommand(ReportModel model, ICSharpCode.Reports.Core.ReportViewer.PreviewControl reportViewer) { @@ -23,31 +21,29 @@ namespace ICSharpCode.Reports.Addin.Commands throw new ArgumentNullException("reportViewer"); } - this.model = model; - this.reportViewer = reportViewer; + this.Model = model; + this.ReportViewer = reportViewer; } public override void Run() { - CollectParametersCommand sql = new CollectParametersCommand(model); - sql.Run(); + CollectParametersCommand cmd = new CollectParametersCommand(Model); + cmd.Run(); } - public ICSharpCode.Reports.Core.ReportViewer.PreviewControl ReportViewer { - get { return reportViewer; } - } + public ICSharpCode.Reports.Core.ReportViewer.PreviewControl ReportViewer {get;private set;} + + + public ReportModel Model {get;private set;} - public ReportModel Model { - get { return this.model; } - } } - public class FormsSheetPreviewCommand:AbstractPreviewCommand + public class FormSheetToReportViewerCommand:AbstractPreviewCommand { - public FormsSheetPreviewCommand(ReportModel model, + public FormSheetToReportViewerCommand(ReportModel model, ICSharpCode.Reports.Core.ReportViewer.PreviewControl reportViewer):base (model,reportViewer) { } @@ -60,10 +56,10 @@ namespace ICSharpCode.Reports.Addin.Commands } - public class PullModelPreviewCommand:AbstractPreviewCommand + public class PullModelToReportViewerCommand:AbstractPreviewCommand { - public PullModelPreviewCommand(ReportModel model, ICSharpCode.Reports.Core.ReportViewer.PreviewControl reportViewer):base (model,reportViewer) + public PullModelToReportViewerCommand(ReportModel model, ICSharpCode.Reports.Core.ReportViewer.PreviewControl reportViewer):base (model,reportViewer) { } @@ -76,9 +72,9 @@ namespace ICSharpCode.Reports.Addin.Commands } - public class PushModelPreviewCommand:AbstractPreviewCommand + public class PushModelToReportViewerCommand:AbstractPreviewCommand { - public PushModelPreviewCommand(ReportModel model, ICSharpCode.Reports.Core.ReportViewer.PreviewControl reportViewer):base (model,reportViewer) + public PushModelToReportViewerCommand(ReportModel model, ICSharpCode.Reports.Core.ReportViewer.PreviewControl reportViewer):base (model,reportViewer) { } 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 7b6cc3f4f5..3fd44c3a72 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportDesignerView.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportDesignerView.cs @@ -5,14 +5,20 @@ using System; using System.Collections; using System.ComponentModel.Design; using System.ComponentModel.Design.Serialization; +using System.Data; using System.Drawing.Design; +using System.Drawing.Printing; using System.IO; using System.Text; using System.Windows.Forms; using ICSharpCode.Core; +using ICSharpCode.Reports.Addin.Commands; using ICSharpCode.Reports.Addin.Designer; using ICSharpCode.Reports.Core; +using ICSharpCode.Reports.Core.BaseClasses.Printing; +using ICSharpCode.Reports.Core.Exporter; +using ICSharpCode.Reports.Core.Exporter.ExportRenderer; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Gui; @@ -557,52 +563,51 @@ namespace ICSharpCode.Reports.Addin #region IPrintable - private void ccc() - { - /* - ReportModel model = loader.CreateRenderableModel(); - IReportCreator creator = ReportEngine.CreatePageBuilder(model,eventLogger.EventLog,null); - //creator.SectionRendering += PushPrinting; - creator.BuildExportList(); - using (PdfRenderer pdfRenderer = PdfRenderer.CreateInstance(creator,SelectFilename(),true)) - { - pdfRenderer.Start(); - pdfRenderer.RenderOutput(); - pdfRenderer.End(); - } - */ - - var model = loader.CreateRenderableModel(); - switch (model.DataModel) { - case GlobalEnums.PushPullModel.FormSheet : { - //cmd = new FormsSheetPreviewCommand (model,control); - break; - } - case GlobalEnums.PushPullModel.PullData:{ - //cmd = new PullModelPreviewCommand(model,control); - break; - } - case GlobalEnums.PushPullModel.PushData:{ - //cmd = new PushModelPreviewCommand(model,control); - break; - } - default: - throw new InvalidReportModelException(); - } - } - - - public System.Drawing.Printing.PrintDocument PrintDocument { + + public PrintDocument PrintDocument + { get { - ccc(); - ICSharpCode.Reports.Core.ReportModel model = this.loader.CreateRenderableModel(); - StandartPreviewManager reportManager = new StandartPreviewManager(); - ICSharpCode.Reports.Core.AbstractRenderer r = reportManager.CreateRenderer (model); - return r.ReportDocument; + ReportModel model = loader.CreateRenderableModel(); + IReportCreator reportCreator = null; + Layouter layouter = new Layouter(); + var c = new CollectParametersCommand(model); + c.Run(); + switch (model.DataModel) { + case GlobalEnums.PushPullModel.FormSheet : + { + reportCreator = FormPageBuilder.CreateInstance(model,layouter); + break; + } + case GlobalEnums.PushPullModel.PullData: + { + + IDataManager dataManager = DataManagerFactory.CreateDataManager(model,(ReportParameters)null); + reportCreator = DataPageBuilder.CreateInstance(model,dataManager,layouter); + break; + } + case GlobalEnums.PushPullModel.PushData:{ + ICSharpCode.Reports.Addin.Commands.DataSetFromXsdCommand cmd = + new ICSharpCode.Reports.Addin.Commands.DataSetFromXsdCommand(); + cmd.Run(); + DataSet ds = cmd.DataSet; + IDataManager dataManager = DataManagerFactory.CreateDataManager(model,ds.Tables[0]); + reportCreator = DataPageBuilder.CreateInstance(model,dataManager,layouter); + break; + } + default: + throw new InvalidReportModelException(); + } + + reportCreator.BuildExportList(); + PrintRenderer printer = PrintRenderer.CreateInstance(reportCreator.Pages); + printer.Start(); + printer.RenderOutput(); + printer.End(); + return printer.PrintDocument; } } - + #endregion 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 cac5e2eb61..825cbfaef2 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 @@ -50,15 +50,15 @@ namespace ICSharpCode.Reports.Addin AbstractPreviewCommand cmd = null; switch (model.DataModel) { case GlobalEnums.PushPullModel.FormSheet : { - cmd = new FormsSheetPreviewCommand (model,control); + cmd = new FormSheetToReportViewerCommand (model,control); break; } case GlobalEnums.PushPullModel.PullData:{ - cmd = new PullModelPreviewCommand(model,control); + cmd = new PullModelToReportViewerCommand(model,control); break; } case GlobalEnums.PushPullModel.PushData:{ - cmd = new PushModelPreviewCommand(model,control); + cmd = new PushModelToReportViewerCommand(model,control); break; } default: diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/BaseExportRenderer.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/BaseExportRenderer.cs index 963f3de630..f219aa2de0 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/BaseExportRenderer.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/BaseExportRenderer.cs @@ -11,6 +11,7 @@ namespace ICSharpCode.Reports.Core.Exporter.ExportRenderer{ /// /// public class BaseExportRenderer{ + PagesCollection pages; public BaseExportRenderer () @@ -46,6 +47,7 @@ namespace ICSharpCode.Reports.Core.Exporter.ExportRenderer{ { } + public virtual void RenderOutput () { } @@ -54,6 +56,7 @@ namespace ICSharpCode.Reports.Core.Exporter.ExportRenderer{ { } + public PagesCollection Pages { get {if (this.pages == null) { diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/PreviewRenderer.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/PreviewRenderer.cs index ec4b775058..d5162d7f64 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/PreviewRenderer.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/PreviewRenderer.cs @@ -11,10 +11,8 @@ namespace ICSharpCode.Reports.Core.Exporter.ExportRenderer /// - public class PreviewRenderer:BaseExportRenderer + internal class PreviewRenderer:BaseExportRenderer { - Graphics graphics; - ExporterPage page; #region Constructor @@ -29,23 +27,18 @@ namespace ICSharpCode.Reports.Core.Exporter.ExportRenderer public override void RenderOutput(){ base.RenderOutput(); - if (this.graphics != null) { - BaseExportRenderer.DrawItems(this.graphics,this.page.Items); + if (this.Graphics != null) { + BaseExportRenderer.DrawItems(this.Graphics,this.Page.Items); } else { return; } } - public Graphics Graphics { - get { return this.graphics;} - set { this.graphics = value;} - } + public Graphics Graphics {get;set;} + - public ExporterPage Page { - get {return this.page;} - set { page = value; } - } + public ExporterPage Page {get;set;} } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/PrintRenderer.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/PrintRenderer.cs index ccf877fafe..7e05a601a3 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/PrintRenderer.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/PrintRenderer.cs @@ -10,7 +10,7 @@ namespace ICSharpCode.Reports.Core.Exporter.ExportRenderer{ /// Description of PrintRenderer. /// public class PrintRenderer:BaseExportRenderer,IDisposable{ - PrintDocument doc; + int currentPage; PrinterSettings printerSettings; @@ -43,11 +43,14 @@ namespace ICSharpCode.Reports.Core.Exporter.ExportRenderer{ private PrintRenderer(PagesCollection pages):base(pages) { - doc = new PrintDocument(); + this.PrintDocument = new PrintDocument(); + this.PrintDocument.PrinterSettings = new PrinterSettings(); + + // doc.QueryPageSettings += new QueryPageSettingsEventHandler(OnQueryPage); - doc.BeginPrint += new PrintEventHandler(OnBeginPrint); - doc.EndPrint += new PrintEventHandler(OnEndPrint); - doc.PrintPage += new PrintPageEventHandler(OnPrintPage); + this.PrintDocument.BeginPrint += new PrintEventHandler(OnBeginPrint); + this.PrintDocument.EndPrint += new PrintEventHandler(OnEndPrint); + this.PrintDocument.PrintPage += new PrintPageEventHandler(OnPrintPage); } #endregion @@ -87,22 +90,25 @@ namespace ICSharpCode.Reports.Core.Exporter.ExportRenderer{ { base.RenderOutput(); if (this.printerSettings != null) { - doc.PrinterSettings = this.printerSettings; + this.PrintDocument.PrinterSettings = this.printerSettings; } - doc.Print(); } + public override void End() { base.End(); } + public PrintDocument PrintDocument {get;private set;} + internal PrinterSettings PrinterSettings { set { printerSettings = value; } } + #region IDisposable public void Dispose() @@ -116,10 +122,10 @@ namespace ICSharpCode.Reports.Core.Exporter.ExportRenderer{ if (disposing) { // free managed resources - if (this.doc != null) + if (this.PrintDocument != null) { - doc.Dispose(); - doc = null; + this.PrintDocument.Dispose(); + this.PrintDocument = null; } } }