diff --git a/src/AddIns/Misc/SharpReport/SharpReport/Designer/SideTab/BuildDesignerTab.cs b/src/AddIns/Misc/SharpReport/SharpReport/Designer/SideTab/BuildDesignerTab.cs
new file mode 100644
index 0000000000..11c960761b
--- /dev/null
+++ b/src/AddIns/Misc/SharpReport/SharpReport/Designer/SideTab/BuildDesignerTab.cs
@@ -0,0 +1,42 @@
+/*
+ * Erstellt mit SharpDevelop.
+ * Benutzer: Forstmeier Helmut
+ * Datum: 24.10.2006
+ * Zeit: 22:50
+ *
+ * Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern.
+ */
+
+using System;
+using System.Windows.Forms;
+
+namespace SharpReport
+{
+ ///
+ /// Description of BuildTabControl.
+ ///
+ public class BuildDesignerTab
+ {
+ public static TabControl BuildTabControl () {
+ TabControl tabControl = new TabControl();
+ // Designer Tap
+ TabPage designerPage = new TabPage();
+
+ //Standart Preview page
+ //create only the TabPage, no Controls are added
+ TabPage previewPage = new TabPage();
+
+ // ReportViewer
+ TabPage reportViewerPage = new TabPage();
+
+ tabControl.TabPages.Add (designerPage);
+ tabControl.TabPages.Add (previewPage);
+ tabControl.TabPages.Add(reportViewerPage);
+
+ tabControl.Alignment = TabAlignment.Bottom;
+ tabControl.Dock = DockStyle.Fill;
+ return tabControl;
+ }
+
+ }
+}
diff --git a/src/AddIns/Misc/SharpReport/SharpReport/SharpReport.csproj b/src/AddIns/Misc/SharpReport/SharpReport/SharpReport.csproj
index 242590c5db..49f9ed8e19 100644
--- a/src/AddIns/Misc/SharpReport/SharpReport/SharpReport.csproj
+++ b/src/AddIns/Misc/SharpReport/SharpReport/SharpReport.csproj
@@ -95,6 +95,7 @@
+
diff --git a/src/AddIns/Misc/SharpReport/SharpReport/SharpReportManager.cs b/src/AddIns/Misc/SharpReport/SharpReport/SharpReportManager.cs
index 60bc46e0d4..7604ccdafe 100644
--- a/src/AddIns/Misc/SharpReport/SharpReport/SharpReportManager.cs
+++ b/src/AddIns/Misc/SharpReport/SharpReport/SharpReportManager.cs
@@ -280,8 +280,11 @@ namespace SharpReport{
/// Valid Filename with .xml or .sdr Extension
public void LoadFromFile(string fileName){
+
SharpReport.Visitors.LoadReportVisitor loadVisitor = new SharpReport.Visitors.LoadReportVisitor(fileName);
+ //TODO Thsi methiod takes aprox 2 secounds
this.baseDesignerControl.Accept(loadVisitor);
+
this.baseDesignerControl.ReportModel.ReportSettings.FileName = fileName;
reportModel = this.baseDesignerControl.ReportModel;
}
@@ -346,6 +349,8 @@ namespace SharpReport{
get {
if (this.baseDesignerControl == null) {
this.baseDesignerControl = new BaseDesignerControl();
+ this.baseDesignerControl.ReportControl.AutoScroll = true;
+ this.baseDesignerControl.Dock = DockStyle.Fill;
}
return this.baseDesignerControl;
}
diff --git a/src/AddIns/Misc/SharpReport/SharpReportAddin/Commands/ViewCommands.cs b/src/AddIns/Misc/SharpReport/SharpReportAddin/Commands/ViewCommands.cs
index 2b9529f554..247d483507 100644
--- a/src/AddIns/Misc/SharpReport/SharpReportAddin/Commands/ViewCommands.cs
+++ b/src/AddIns/Misc/SharpReport/SharpReportAddin/Commands/ViewCommands.cs
@@ -8,9 +8,11 @@
*/
using System;
-
+using System.Windows.Forms;
+using System.Globalization;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
+using SharpReportCore;
namespace SharpReportAddin.Commands{
@@ -32,4 +34,29 @@ namespace SharpReportAddin.Commands{
}
}
}
+
+
+ public class DataSetFromXSDCommand:AbstractCommand{
+ System.Data.DataSet ds;
+ public override void Run()
+ {
+ using (OpenFileDialog openFileDialog = new OpenFileDialog()){
+ openFileDialog.Filter = GlobalValues.XsdFileFilter;
+ openFileDialog.DefaultExt = GlobalValues.XsdExtension;
+ openFileDialog.AddExtension = true;
+ if(openFileDialog.ShowDialog() == DialogResult.OK){
+ if (openFileDialog.FileName.Length > 0) {
+ this.ds = new System.Data.DataSet();
+ this.ds.ReadXml (openFileDialog.FileName);
+ this.ds.Locale = CultureInfo.InvariantCulture;
+ }
+ }
+ }
+ }
+
+ public System.Data.DataSet DataSet {
+ get { return ds; }
+ }
+
+ }
}
diff --git a/src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportView.cs b/src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportView.cs
index 08ee0a6bd4..7411cd02d8 100644
--- a/src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportView.cs
+++ b/src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportView.cs
@@ -32,9 +32,9 @@ namespace SharpReportAddin{
private SharpReportManager reportManager;
private BaseDesignerControl designerControl;
+ private SharpReportCore.ReportViewer.PreviewControl reportViewer;
private TabControl tabControl;
- private TabPage designerPage;
- private TabPage previewPage;
+
// SideBar
private AxSideTab sideTabItem = null;
@@ -48,8 +48,10 @@ namespace SharpReportAddin{
void InitView() {
try {
reportManager = new SharpReportManager();
+
panel = new Panel();
panel.AutoScroll = true;
+ panel.Dock = DockStyle.Fill;
CreateTabControl();
SharpReportView.BuildToolBarItems();
if (PropertyPad.Grid != null) {
@@ -85,7 +87,20 @@ namespace SharpReportAddin{
#endregion
+ #region Control
+ private BaseDesignerControl CreateDesignerControl() {
+ BaseDesignerControl ctrl = reportManager.BaseDesignControl;
+ ctrl.SuspendLayout();
+ ctrl.ReportControl.Width = ctrl.ReportModel.ReportSettings.PageSettings.Bounds.Width;
+ ctrl.ReportControl.ObjectSelected +=new EventHandler (OnObjectSelected);
+ ctrl.ReportControl.DesignViewChanged += new ItemDragDropEventHandler (OnItemDragDrop);
+ ctrl.DesignerDirty += new System.ComponentModel.PropertyChangedEventHandler (OnPropertyChanged);
+ ctrl.ResumeLayout();
+ return ctrl;
+ }
+
+ #endregion
#region SideBar Handling
@@ -141,7 +156,7 @@ namespace SharpReportAddin{
}
}
sb.Refresh();
- }
+ }
}
@@ -164,80 +179,89 @@ namespace SharpReportAddin{
#endregion
-
- #region Control
+ #region TabControl including Events
void CreateTabControl() {
- tabControl = new TabControl();
- tabControl.SelectedIndexChanged += new EventHandler (OnTabPageChanged);
-
- designerPage = new TabPage();
- designerControl = CreateDesignerControl();
- designerPage.Controls.Add (designerControl);
- //create only the TabPage, no Controls are added
- previewPage = new TabPage ();
- tabControl.TabPages.Add (designerPage);
- tabControl.TabPages.Add (previewPage);
+ this.tabControl = BuildDesignerTab.BuildTabControl();
- tabControl.Alignment = TabAlignment.Bottom;
+ this.tabControl.SelectedIndexChanged += new EventHandler (OnTabPageChanged);
+ this.tabControl.Selecting += new TabControlCancelEventHandler(OnTabPageSelecting);
- panel.Dock = DockStyle.Fill;
- panel.AutoScroll = true;
-
- tabControl.Dock = DockStyle.Fill;
-
- panel.Controls.Add (tabControl);
+ this.designerControl = CreateDesignerControl();
+ this.tabControl.TabPages[0].Controls.Add (this.designerControl);
+
+ this.panel.Controls.Add (this.tabControl);
SetHeadLines();
-
}
+
//We set all captions in one method, so we can react much easier on changing of lanuages
void SetHeadLines(){
- designerPage.Text = ResourceService.GetString("SharpReport.Design");
- previewPage.Text = ResourceService.GetString("SharpReport.Preview");
+ this.tabControl.TabPages[0].Text = ResourceService.GetString("SharpReport.Design");
+ this.tabControl.TabPages[1].Text = ResourceService.GetString("SharpReport.Preview");
+ this.tabControl.TabPages[2].Text = "ReportViewer";
this.OnTabPageChanged (this,EventArgs.Empty);
this.designerControl.Localise();
-
+ }
+ void SetTabTitel (string name) {
+ base.TitleName = String.Format(CultureInfo.CurrentCulture,
+ "{0} [{1}]",name,this.tabControl.SelectedTab.Text);
}
- private BaseDesignerControl CreateDesignerControl() {
- BaseDesignerControl ctrl = reportManager.BaseDesignControl;
- ctrl.SuspendLayout();
- ctrl.ReportControl.Width = ctrl.ReportModel.ReportSettings.PageSettings.Bounds.Width;
- ctrl.ReportControl.AutoScroll = true;
- ctrl.Dock = DockStyle.Fill;
- ctrl.ResumeLayout();
-
- ctrl.ReportControl.ObjectSelected +=new EventHandler (OnObjectSelected);
+ private void OnTabPageSelecting (object sender,TabControlCancelEventArgs e) {
+ switch (e.TabPageIndex) {
+ case 0:
+ break;
+ case 1:
+ if (e.TabPage.Controls.Count == 0) {
+ e.TabPage.Controls.Add(reportManager.PreviewControl);
+ }
+ break;
+ case 2:
+ if (e.TabPage.Controls.Count == 0) {
+ this.reportViewer = new SharpReportCore.ReportViewer.PreviewControl();
+ this.reportViewer.Dock = DockStyle.Fill;
+ this.reportViewer.PageSettings = new System.Drawing.Printing.PageSettings();
+ e.TabPage.Controls.Add(this.reportViewer);
+
+ }
+ break;
+ }
+ }
+
+ private void OnTabPageChanged (object sender, EventArgs e) {
- ctrl.ReportControl.DesignViewChanged += new ItemDragDropEventHandler (OnItemDragDrop);
- ctrl.DesignerDirty += new System.ComponentModel.PropertyChangedEventHandler (OnPropertyChanged);
- return ctrl;
+ string name;
+ if (String.IsNullOrEmpty(base.FileName)) {
+ base.UntitledName = GlobalValues.SharpReportPlainFileName;
+ base.TitleName = GlobalValues.SharpReportPlainFileName;
+ base.FileName = GlobalValues.SharpReportPlainFileName;
+ name = base.TitleName;
+ } else {
+ name = Path.GetFileName (base.FileName);
+ }
+ SetTabTitel (name);
+ switch (tabControl.SelectedIndex) {
+ case 0 :
+ break;
+ case 1:
+ RunPreview(true);
+ this.tabControl.SelectedTab.Visible = true;
+ break;
+ case 2:
+ FillReportViewer();
+ break;
+ default:
+
+ break;
+ }
}
#endregion
-
- #region Preview handling
-
- private static DataSet DataSetFromFile () {
- using (OpenFileDialog openFileDialog = new OpenFileDialog()){
- openFileDialog.Filter = GlobalValues.XsdFileFilter;
- openFileDialog.DefaultExt = GlobalValues.XsdExtension;
- openFileDialog.AddExtension = true;
- if(openFileDialog.ShowDialog() == DialogResult.OK){
- if (openFileDialog.FileName.Length > 0) {
- DataSet ds = new DataSet();
- ds.ReadXml (openFileDialog.FileName);
- ds.Locale = CultureInfo.InvariantCulture;
- return ds;
- }
- }
- }
- throw new MissingDataSourceException();
- }
-
+ #region Preview handling
+
private void RunPreview(bool standAlone) {
base.OnSaving(EventArgs.Empty);
this.UpdateModelFromExplorer();
@@ -269,7 +293,9 @@ namespace SharpReportAddin{
private void PreviewPushReport (bool standAlone){
try {
- DataSet ds = SharpReportView.DataSetFromFile ();
+ DataSetFromXSDCommand cmd = new DataSetFromXSDCommand ();
+ cmd.Run();
+ DataSet ds = cmd.DataSet;
reportManager.ReportPreviewPushData(designerControl.ReportModel,
ds,
standAlone);
@@ -288,6 +314,23 @@ namespace SharpReportAddin{
#endregion
+ #region ReportViewer
+
+ private void FillReportViewer() {
+ System.Console.WriteLine("FillReportViewer");
+ System.Console.WriteLine("\tsetup pagebuilder{0}",DateTime.Now);
+ SharpReportCore.Exporters.PageBuilder pb = reportManager.CreatePageBuilder (designerControl.ReportModel);
+ System.Console.WriteLine("\tstart createreport{0}",DateTime.Now);
+ pb.CreateReport();
+ System.Console.WriteLine("\treport created {0}",DateTime.Now);
+ SharpReportCore.Exporters.SinglePage sp= pb.FirstPage;
+ System.Console.WriteLine("\tPages {0} SinglePage : Items {0}",pb.Pages.Count,sp.Items.Count);
+
+ this.reportViewer.Pages = pb.Pages;
+ }
+ #endregion
+
+
#region Events
///This Event is called if the Report need's Parameters to run a Query,
@@ -305,39 +348,7 @@ namespace SharpReportAddin{
}
}
- void SetTabTitel (string name) {
- base.TitleName = String.Format(CultureInfo.CurrentCulture,
- "{0} [{1}]",name,this.tabControl.SelectedTab.Text);
- }
- private void OnTabPageChanged (object sender, EventArgs e) {
-
- string name;
- if (String.IsNullOrEmpty(base.FileName)) {
- base.UntitledName = GlobalValues.SharpReportPlainFileName;
- base.TitleName = GlobalValues.SharpReportPlainFileName;
- base.FileName = GlobalValues.SharpReportPlainFileName;
- name = base.TitleName;
- } else {
- name = Path.GetFileName (base.FileName);
- }
- SetTabTitel (name);
- switch (tabControl.SelectedIndex) {
- case 0 :
- break;
- case 1:
- //Create the preview Control only when needed
- if (tabControl.SelectedTab.Controls.Count == 0 ){
- tabControl.SelectedTab.Controls.Add(reportManager.PreviewControl);
- }
- RunPreview(true);
- this.previewPage.Visible = true;
- break;
- default:
-
- break;
- }
- }
//Something was dropped on the designer
@@ -351,7 +362,7 @@ namespace SharpReportAddin{
base.IsDirty = true;
OnObjectSelected (this,EventArgs.Empty);
}
-
+
private void OnModelFileNameChanged (object sender,EventArgs e) {
base.FileName = designerControl.ReportModel.ReportSettings.FileName;
if (designerControl.ReportModel.ReportSettings.InitDone) {
@@ -373,7 +384,7 @@ namespace SharpReportAddin{
}
}
}
-
+
private void UpdateModelFromExplorer () {
ReportExplorer re = (SharpReportAddin.ReportExplorer)WorkbenchSingleton.Workbench.GetPad(typeof(ReportExplorer)).PadContent;
re.Update(designerControl.ReportModel);
@@ -397,7 +408,7 @@ namespace SharpReportAddin{
/// Show's Report in PreviewControl
///
- public void OnPreviewClick () {
+ public void OnPreviewClick () {
reportManager.ParametersRequest -= new EventHandler (OnParametersRequest);
reportManager.ParametersRequest += new EventHandler(OnParametersRequest);
@@ -408,7 +419,7 @@ namespace SharpReportAddin{
///
/// Remove the selected Item from
///
-
+
public void RemoveSelectedItem () {
this.designerControl.RemoveSelectedItem ();
}
@@ -428,7 +439,7 @@ namespace SharpReportAddin{
}
///
- /// Tells the to fire an Event if
+ /// Tells the to fire an Event if
/// something in the report layout changes
///
@@ -479,6 +490,7 @@ namespace SharpReportAddin{
}
public override void RedrawContent() {
+
SetHeadLines();
}
@@ -528,15 +540,16 @@ namespace SharpReportAddin{
}
}
-
+
///
/// Loads a new file into View
///
/// A valid Filename
public override void Load(string fileName){
+
try {
designerControl.ReportControl.ObjectSelected -= new EventHandler (OnObjectSelected);
- reportManager.LoadFromFile (fileName);
+ reportManager.LoadFromFile (fileName);
base.FileName = fileName;
designerControl.ReportModel.ReportSettings.FileName = fileName;
designerControl.ReportControl.ObjectSelected += new EventHandler (OnObjectSelected);
@@ -544,13 +557,12 @@ namespace SharpReportAddin{
PropertyPad.Grid.SelectedObject = designerControl.ReportModel.ReportSettings;
PropertyPad.Grid.Refresh();
}
-
- this.designerControl.ReportModel.ReportSettings.AvailableFieldsCollection = reportManager.AvailableFieldsCollection;
-
+
+ this.designerControl.ReportModel.ReportSettings.AvailableFieldsCollection = reportManager.AvailableFieldsCollection;
ShowAndFillExplorer se = new ShowAndFillExplorer();
se.ReportModel = this.designerControl.ReportModel;
se.Run();
-
+
} catch (Exception e) {
MessageService.ShowError(e,"SharpReportView:Load");
throw ;
@@ -566,8 +578,11 @@ namespace SharpReportAddin{
get {
AbstractRenderer renderer;
if (this.designerControl.ReportModel.DataModel == GlobalEnums.PushPullModel.PushData) {
+ DataSetFromXSDCommand cmd = new DataSetFromXSDCommand();
+ cmd.Run();
+ DataSet dataSet = cmd.DataSet;
renderer = reportManager.GetRendererForPushDataReports(this.designerControl.ReportModel,
- SharpReportView.DataSetFromFile());
+ dataSet);
} else {
try {
@@ -611,6 +626,10 @@ namespace SharpReportAddin{
this.designerControl.Dispose();
}
+ if (this.reportViewer != null) {
+ this.reportViewer.Dispose();
+ }
+
if (this.tabControl != null) {
this.tabControl.Dispose();
}
diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/RowItem.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/RowItem.cs
index 465c3645f2..0700fbe414 100644
--- a/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/RowItem.cs
+++ b/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/RowItem.cs
@@ -50,7 +50,6 @@ namespace SharpReportCore{
#region IExportColumnBuilder implementation
-// public IPerformLine CreateExportColumn(Graphics graphics){
public BaseExportColumn CreateExportColumn(Graphics graphics){
BaseStyleDecorator st = this.CreateItemStyle(graphics);
@@ -62,7 +61,6 @@ namespace SharpReportCore{
BaseStyleDecorator style = new BaseStyleDecorator();
style.BackColor = this.BackColor;
-// style.Font = this.Font;
style.ForeColor = this.ForeColor;
style.Location = this.Location;
style.Size = this.Size;
diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/Exporter/ExportColumns/ExportContainer.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/Exporter/ExportColumns/ExportContainer.cs
index dd84886894..4c41cc5242 100644
--- a/src/AddIns/Misc/SharpReport/SharpReportCore/Exporter/ExportColumns/ExportContainer.cs
+++ b/src/AddIns/Misc/SharpReport/SharpReportCore/Exporter/ExportColumns/ExportContainer.cs
@@ -16,7 +16,7 @@ namespace SharpReportCore.Exporters
///
public class ExportContainer:BaseExportColumn
{
-// List items;
+
ExporterCollection items;
public ExportContainer():base(){
base.IsContainer = true;
diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/Exporter/ExportItemsConverter.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/Exporter/ExportItemsConverter.cs
index 85ef82156e..ecaefca73f 100644
--- a/src/AddIns/Misc/SharpReport/SharpReportCore/Exporter/ExportItemsConverter.cs
+++ b/src/AddIns/Misc/SharpReport/SharpReportCore/Exporter/ExportItemsConverter.cs
@@ -28,6 +28,7 @@ namespace SharpReportCore.Exporters{
public ExportText ConvertToLineItems (IItemRenderer r) {
IExportColumnBuilder lineBuilder = r as IExportColumnBuilder;
ExportText lineItem = null;
+
if (lineBuilder != null) {
lineItem = (ExportText)lineBuilder.CreateExportColumn(this.graphics);
diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/Exporter/ExporterCollection.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/Exporter/ExporterCollection.cs
new file mode 100644
index 0000000000..ccf4e9301c
--- /dev/null
+++ b/src/AddIns/Misc/SharpReport/SharpReportCore/Exporter/ExporterCollection.cs
@@ -0,0 +1,25 @@
+/*
+ * Created by SharpDevelop.
+ * User: Forstmeier Peter
+ * Date: 19.09.2006
+ * Time: 22:18
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+
+namespace SharpReportCore.Exporters
+{
+ public class ExporterCollection : Collection
+ where T : BaseExportColumn {
+
+ public void AddRange (IEnumerable items){
+ foreach (T item in items) {
+ this.Add (item);
+ }
+ }
+ }
+}
diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/Exporter/PageBuilder.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/Exporter/PageBuilder.cs
index 3107ca7adc..1220f0382e 100644
--- a/src/AddIns/Misc/SharpReport/SharpReportCore/Exporter/PageBuilder.cs
+++ b/src/AddIns/Misc/SharpReport/SharpReportCore/Exporter/PageBuilder.cs
@@ -9,10 +9,7 @@
using System;
using System.Collections.Generic;
-using System.Diagnostics;
-using System.Globalization;
using System.Drawing;
-
using System.Drawing.Printing;
namespace SharpReportCore.Exporters
@@ -28,8 +25,8 @@ namespace SharpReportCore.Exporters
DataNavigator dataNavigator;
ExportItemsConverter lineItemsConverter;
-// public delegate List ConverterDelegate (LineItemsConverter c,BaseSection s,SinglePage p);
public delegate List ConverterDelegate (BaseSection s,SinglePage p);
+
#region Constructor
public PageBuilder () {
pages = new List();
@@ -48,28 +45,7 @@ namespace SharpReportCore.Exporters
#endregion
- #region template
- /*
- // Events from ReportDocument
- reportDocument.QueryPageSettings += new QueryPageSettingsEventHandler (ReportQueryPage);
- reportDocument.BeginPrint += new PrintEventHandler(ReportBegin);
- reportDocument.PrintPage += new PrintPageEventHandler(ReportPageStart);
- reportDocument.EndPrint += new PrintEventHandler(ReportEnd);
-
- // homemade events
- reportDocument.BodyStart += new EventHandler (BodyStart);
-
- reportDocument.BodyEnd += new EventHandler (BodyEnd);
-
- //
- reportDocument.RenderReportHeader += new EventHandler (PrintReportHeader);
- reportDocument.RenderPageHeader += new EventHandler (PrintPageHeader);
- reportDocument.RenderDetails += new EventHandler (PrintDetail);
- reportDocument.RenderPageEnd += new EventHandler (PrintPageEnd);
- reportDocument.RenderReportEnd += new EventHandler (PrintReportFooter);
- */
- #endregion
private SinglePage CreateNewPage () {
PageSettings ps = this.reportModel.ReportSettings.PageSettings;
@@ -87,13 +63,8 @@ namespace SharpReportCore.Exporters
private void BuildReportHeader (SinglePage page) {
BaseSection section = this.reportModel.ReportHeader;
-// System.Console.WriteLine("ReportHeader with {0} items ",section.Items.Count);
-// LineItemsConverter conv = new LineItemsConverter(graphics);
this.lineItemsConverter.Offset = page.SectionBounds.ReportHeaderRectangle.Top;
- System.Console.WriteLine("ReportHeader start at {0} with {1} items",
- this.lineItemsConverter.Offset,
- section.Items.Count);
List l = section.Items.ConvertAll (this.lineItemsConverter.ConvertToLineItems);
page.Items.AddRange(l);
@@ -101,18 +72,13 @@ namespace SharpReportCore.Exporters
private void BuildPageHeader (SinglePage page) {
BaseSection section = this.reportModel.PageHeader;
-// System.Console.WriteLine("PageHeader with {0} items ",section.Items.Count);
-// LineItemsConverter conv = new LineItemsConverter(graphics);
this.lineItemsConverter.Offset = page.SectionBounds.PageHeaderRectangle.Top;
- System.Console.WriteLine("Page Header start at {0} with {1} Items",
- this.lineItemsConverter.Offset,
- section.Items.Count);
+// System.Console.WriteLine("Page Header start at {0} with {1} Items",
+// this.lineItemsConverter.Offset,
+// section.Items.Count);
List l = section.Items.ConvertAll (this.lineItemsConverter.ConvertToLineItems);
page.Items.AddRange(l);
-
-// System.Console.WriteLine("\tList {0}",l.Count);
-// System.Console.WriteLine("\tpages.items.coun {0}",page.Items.Count);
}
@@ -133,9 +99,6 @@ namespace SharpReportCore.Exporters
BaseSection section = this.reportModel.DetailSection;
section.SectionOffset = page.SectionBounds.DetailStart.Y;
do {
-
-
-
dataNavigator.Fill(section.Items);
if (!firstOnPage) {
@@ -169,7 +132,7 @@ namespace SharpReportCore.Exporters
this.lineItemsConverter.Offset = section.SectionOffset;
if (builder != null) {
- System.Console.WriteLine("Create RowList with Location {0}",this.lineItemsConverter.Offset);
+// System.Console.WriteLine("Create RowList with Location {0} ",this.lineItemsConverter.Offset);
Graphics g = reportModel.ReportSettings.PageSettings.PrinterSettings.CreateMeasurementGraphics();
@@ -180,11 +143,17 @@ namespace SharpReportCore.Exporters
// reread
this.dataNavigator.Fill(containerItem.Items);
List childList = containerItem.Items.ConvertAll (this.lineItemsConverter.ConvertToLineItems);
-
- lineItem.Items.AddRange(childList);
-
- childList.ForEach(display);
+ //Adjust childitems to Location within container
+ if (childList.Count > 0) {
+ childList.ForEach(delegate(BaseExportColumn item){
+ Point p = new Point (lineItem.StyleDecorator.Location.X + item.StyleDecorator.Location.X,
+ lineItem.StyleDecorator.Location.Y + item.StyleDecorator.Location.Y);
+ item.StyleDecorator.Location = p;
+ });
+ }
+ lineItem.Items.AddRange(childList);
+
List containerList = new List();
containerList.Add (lineItem);
g.Dispose();
@@ -193,12 +162,13 @@ namespace SharpReportCore.Exporters
return null;
}
+
+
private List DoJob (BaseSection section,SinglePage page) {
this.lineItemsConverter.Offset = section.SectionOffset;
- System.Console.WriteLine("Plain Item {0}/{1}",section.SectionOffset,page.SectionBounds.DetailStart);
List list = section.Items.ConvertAll (this.lineItemsConverter.ConvertToLineItems);
-
+ /*
if (list.Count > 0) {
bool istrue = list.TrueForAll(delegate(BaseExportColumn item){
@@ -213,7 +183,7 @@ namespace SharpReportCore.Exporters
return true;
});
}
-// list.ForEach(display);
+ */
return list;
}
@@ -233,9 +203,6 @@ namespace SharpReportCore.Exporters
BaseSection section = this.reportModel.PageFooter;
this.lineItemsConverter.Offset = page.SectionBounds.PageFooterRectangle.Top;
-// System.Console.WriteLine("Page Footer start at {0} with {1} Items",
-// this.lineItemsConverter.Offset,
-// section.Items.Count);
List l = section.Items.ConvertAll (this.lineItemsConverter.ConvertToLineItems);
page.Items.AddRange(l);
}
@@ -293,8 +260,14 @@ namespace SharpReportCore.Exporters
}
return null;
}
-
}
+
+ public List Pages {
+ get {
+ return pages;
+ }
+ }
+
}
}
diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/Exporter/SinglePage.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/Exporter/SinglePage.cs
index f8fdb4c886..5b42e74be5 100644
--- a/src/AddIns/Misc/SharpReport/SharpReportCore/Exporter/SinglePage.cs
+++ b/src/AddIns/Misc/SharpReport/SharpReportCore/Exporter/SinglePage.cs
@@ -8,16 +8,17 @@
*/
using System;
+
using System.Collections.Generic;
+using System.Collections.ObjectModel;
using System.Drawing;
using System.Drawing.Printing;
namespace SharpReportCore.Exporters
{
- public class SinglePage
- {
-// List items;
+ public class SinglePage{
+
ExporterCollection items;
SectionBounds sectionBounds;
@@ -29,7 +30,6 @@ namespace SharpReportCore.Exporters
public SinglePage(SectionBounds sectionBounds)
{
this.sectionBounds = sectionBounds;
-// items = new List ();
items = new ExporterCollection();
}
@@ -57,7 +57,6 @@ namespace SharpReportCore.Exporters
this.sectionBounds.MeasurePageHeader(reportModel.PageHeader,
rectangle,graphics);
-//
//PageFooter
@@ -93,9 +92,5 @@ namespace SharpReportCore.Exporters
}
}
-
- public class ExporterCollection : List
- where T : BaseExportColumn {
-
- }
+
}
diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/Printing/Text/TextDrawer.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/Printing/Text/TextDrawer.cs
index fec917ed01..fd52cf5a4b 100644
--- a/src/AddIns/Misc/SharpReport/SharpReportCore/Printing/Text/TextDrawer.cs
+++ b/src/AddIns/Misc/SharpReport/SharpReportCore/Printing/Text/TextDrawer.cs
@@ -67,6 +67,26 @@ namespace SharpReportCore {
s);
}
+ public static void PaintString (Graphics graphics,string text,
+ SharpReportCore.Exporters.BaseStyleDecorator decorator) {
+
+// d.DrawString(gr,
+// ex.ToString(),
+// ex.StyleDecorator.Font,
+// new SolidBrush(ex.StyleDecorator.ForeColor),
+// new Rectangle(ex.StyleDecorator.Location.X,
+// ex.StyleDecorator.Location.Y,
+// ex.StyleDecorator.Size.Width,
+// ex.StyleDecorator.Size.Height),
+// ex.StyleDecorator.StringFormat);
+ graphics.DrawString (text,decorator.Font,
+ new SolidBrush(decorator.ForeColor),
+ new Rectangle(decorator.Location.X,
+ decorator.Location.Y,
+ decorator.Size.Width,
+ decorator.Size.Height),
+ decorator.StringFormat);
+ }
public static StringFormat BuildStringFormat(StringTrimming stringTrimming,ContentAlignment alignment){
StringFormat format = StringFormat.GenericTypographic;
diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/ReportViewer/ReportViewer.Designer.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/ReportViewer/ReportViewer.Designer.cs
new file mode 100644
index 0000000000..7544997b5d
--- /dev/null
+++ b/src/AddIns/Misc/SharpReport/SharpReportCore/ReportViewer/ReportViewer.Designer.cs
@@ -0,0 +1,194 @@
+/*
+ * Created by SharpDevelop.
+ * User: Forstmeier Helmut
+ * Date: 16.10.2006
+ * Time: 22:15
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+namespace SharpReportCore.ReportViewer
+{
+ partial class PreviewControl : System.Windows.Forms.UserControl
+// partial class PreviewControl : System.Windows.Forms.ScrollableControl
+ {
+ ///
+ /// Designer variable used to keep track of non-visual components.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Disposes resources used by the form.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing) {
+ if (components != null) {
+ components.Dispose();
+ }
+ }
+ base.Dispose(disposing);
+ }
+
+ ///
+ /// This method is required for Windows Forms designer support.
+ /// Do not change the method contents inside the source code editor. The Forms designer might
+ /// not be able to load this method if it was changed manually.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PreviewControl));
+ this.panel1 = new System.Windows.Forms.Panel();
+ this.panel2 = new System.Windows.Forms.Panel();
+ this.toolStrip1 = new System.Windows.Forms.ToolStrip();
+ this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
+ this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
+ this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+ this.toolStripTextBox1 = new System.Windows.Forms.ToolStripTextBox();
+ this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+ this.toolStripComboBox1 = new System.Windows.Forms.ToolStripComboBox();
+ this.printToolStripButton = new System.Windows.Forms.ToolStripButton();
+ this.newToolStripButton = new System.Windows.Forms.ToolStripButton();
+ this.panel1.SuspendLayout();
+ this.toolStrip1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // panel1
+ //
+ this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.panel1.AutoScroll = true;
+ this.panel1.AutoScrollMargin = new System.Drawing.Size(5, 5);
+ this.panel1.BackColor = System.Drawing.SystemColors.ControlDark;
+ this.panel1.Controls.Add(this.panel2);
+ this.panel1.Location = new System.Drawing.Point(5, 33);
+ this.panel1.Margin = new System.Windows.Forms.Padding(0);
+ this.panel1.Name = "panel1";
+ this.panel1.Padding = new System.Windows.Forms.Padding(5);
+ this.panel1.Size = new System.Drawing.Size(525, 373);
+ this.panel1.TabIndex = 3;
+ //
+ // panel2
+ //
+ this.panel2.BackColor = System.Drawing.SystemColors.Window;
+ this.panel2.Location = new System.Drawing.Point(5, 5);
+ this.panel2.Name = "panel2";
+ this.panel2.Size = new System.Drawing.Size(496, 500);
+ this.panel2.TabIndex = 0;
+ this.panel2.Paint += new System.Windows.Forms.PaintEventHandler(this.Panel2Paint);
+ //
+ // toolStrip1
+ //
+ this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripButton1,
+ this.toolStripButton2,
+ this.toolStripSeparator1,
+ this.toolStripTextBox1,
+ this.toolStripSeparator2,
+ this.toolStripComboBox1,
+ this.printToolStripButton,
+ this.newToolStripButton});
+ this.toolStrip1.Location = new System.Drawing.Point(5, 5);
+ this.toolStrip1.Margin = new System.Windows.Forms.Padding(0, 0, 0, 3);
+ this.toolStrip1.Name = "toolStrip1";
+ this.toolStrip1.Size = new System.Drawing.Size(520, 25);
+ this.toolStrip1.Stretch = true;
+ this.toolStrip1.TabIndex = 4;
+ this.toolStrip1.Text = "toolStrip1";
+ //
+ // toolStripButton1
+ //
+ this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
+ this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButton1.Name = "toolStripButton1";
+ this.toolStripButton1.Size = new System.Drawing.Size(23, 22);
+ this.toolStripButton1.Text = "toolStripButton1";
+ this.toolStripButton1.Click += new System.EventHandler(this.BackButton);
+ //
+ // toolStripButton2
+ //
+ this.toolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.toolStripButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton2.Image")));
+ this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButton2.Name = "toolStripButton2";
+ this.toolStripButton2.Size = new System.Drawing.Size(23, 22);
+ this.toolStripButton2.Text = "toolStripButton2";
+ this.toolStripButton2.Click += new System.EventHandler(this.ForwardButton);
+ //
+ // toolStripSeparator1
+ //
+ this.toolStripSeparator1.Name = "toolStripSeparator1";
+ this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
+ //
+ // toolStripTextBox1
+ //
+ this.toolStripTextBox1.Name = "toolStripTextBox1";
+ this.toolStripTextBox1.Size = new System.Drawing.Size(150, 25);
+ //
+ // toolStripSeparator2
+ //
+ this.toolStripSeparator2.Name = "toolStripSeparator2";
+ this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25);
+ //
+ // toolStripComboBox1
+ //
+ this.toolStripComboBox1.Name = "toolStripComboBox1";
+ this.toolStripComboBox1.Size = new System.Drawing.Size(80, 25);
+ this.toolStripComboBox1.SelectedIndexChanged += new System.EventHandler(this.ToolStripComboBox1SelectedIndexChanged);
+ //
+ // printToolStripButton
+ //
+ this.printToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.printToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("printToolStripButton.Image")));
+ this.printToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.printToolStripButton.Name = "printToolStripButton";
+ this.printToolStripButton.Size = new System.Drawing.Size(23, 22);
+ this.printToolStripButton.Text = "&Print";
+ this.printToolStripButton.Click += new System.EventHandler(this.PrintButton);
+ //
+ // newToolStripButton
+ //
+ this.newToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.newToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.newToolStripButton.Name = "newToolStripButton";
+ this.newToolStripButton.Size = new System.Drawing.Size(23, 22);
+ this.newToolStripButton.Text = "&New";
+ //
+ // PreviewControl
+ //
+ this.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
+ this.Controls.Add(this.toolStrip1);
+ this.Controls.Add(this.panel1);
+ this.Name = "PreviewControl";
+ this.Padding = new System.Windows.Forms.Padding(5);
+ this.Size = new System.Drawing.Size(530, 411);
+ this.panel1.ResumeLayout(false);
+ this.toolStrip1.ResumeLayout(false);
+ this.toolStrip1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+ }
+ private System.Windows.Forms.ToolStripButton toolStripButton2;
+ private System.Windows.Forms.ToolStripButton printToolStripButton;
+ private System.Windows.Forms.ToolStripButton newToolStripButton;
+ private System.Windows.Forms.ToolStripComboBox toolStripComboBox1;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
+ private System.Windows.Forms.Panel panel2;
+ private System.Windows.Forms.ToolStripTextBox toolStripTextBox1;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+ private System.Windows.Forms.ToolStripButton toolStripButton1;
+ private System.Windows.Forms.Panel panel1;
+ private System.Windows.Forms.ToolStrip toolStrip1;
+
+
+
+
+
+ void PrintToolStripButtonClick(object sender, System.EventArgs e)
+ {
+
+ }
+ }
+}
diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/ReportViewer/ReportViewer.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/ReportViewer/ReportViewer.cs
new file mode 100644
index 0000000000..2e7d223b1d
--- /dev/null
+++ b/src/AddIns/Misc/SharpReport/SharpReportCore/ReportViewer/ReportViewer.cs
@@ -0,0 +1,198 @@
+/*
+ * Created by SharpDevelop.
+ * User: Forstmeier Helmut
+ * Date: 16.10.2006
+ * Time: 22:15
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Drawing.Printing;
+using System.Windows.Forms;
+using SharpReportCore;
+using SharpReportCore.Exporters;
+
+namespace SharpReportCore.ReportViewer
+{
+ ///
+ /// Description of UserControl1.
+ ///
+ public partial class PreviewControl
+ {
+ private PageSettings pageSettings;
+ private float zoom;
+ private Bitmap bitmap;
+ private List pages;
+ private int pageNumber;
+
+ private Rectangle PageRectangle () {
+
+ return new Rectangle (this.pageSettings.Margins.Left,
+ this.pageSettings.Margins.Top,
+ this.pageSettings.Bounds.Width - this.pageSettings.Margins.Left - this.pageSettings.Margins.Right,
+ this.pageSettings.Bounds.Height - this.pageSettings.Margins.Top - this.pageSettings.Margins.Bottom);
+
+
+ }
+
+
+ private void AdjustDrawArea() {
+ if (this.pageSettings != null) {
+ this.panel2.ClientSize = new Size((int)(this.pageSettings.PaperSize.Width * this.zoom),
+ (int)(this.pageSettings.PaperSize.Height * this.zoom));
+ }
+ this.toolStripTextBox1.Text = "";
+
+ if (this.pages != null) {
+ this.bitmap = this.BuildBitmap(pages[this.pageNumber]);
+
+ }
+ this.Invalidate(true);
+ }
+
+
+ public PreviewControl()
+ {
+ //
+ // The InitializeComponent() call is required for Windows Forms designer support.
+ //
+ InitializeComponent();
+
+ InitZoomCombo ();
+
+ }
+
+ private void InitZoomCombo (){
+ this.toolStripComboBox1.Items.Add("100%");
+ this.toolStripComboBox1.Items.Add("75%");
+ this.toolStripComboBox1.Items.Add("50%");
+ this.toolStripComboBox1.SelectedIndex = 0;
+ }
+
+ void Panel2Paint(object sender, System.Windows.Forms.PaintEventArgs e){
+ e.Graphics.Clear(this.panel2.BackColor);
+
+ if (this.bitmap != null) {
+ e.Graphics.DrawImage(this.bitmap,0,0);
+ }
+ }
+
+ private void DrawItems (Graphics gr,ExporterCollection items) {
+
+ foreach (SharpReportCore.Exporters.BaseExportColumn ex in items) {
+ if (ex != null) {
+ ExportContainer cont = ex as ExportContainer;
+ if (cont == null) {
+// System.Console.WriteLine("{0}",ex.GetType());
+ TextDrawer.PaintString(gr,ex.ToString(),ex.StyleDecorator);
+ } else {
+ DrawItems(gr,cont.Items);
+ }
+
+ }
+ }
+ }
+
+ private Bitmap BuildBitmap (SinglePage page) {
+ System.Console.WriteLine("BuildBitmap(SinglePage)");
+ System.Console.WriteLine("\tstart createBitmap {0}",DateTime.Now);
+ Bitmap bm = new Bitmap(this.panel2.ClientSize.Width,this.panel2.ClientSize.Height,System.Drawing.Imaging.PixelFormat.Format24bppRgb);
+ using (Graphics gr = Graphics.FromImage(bm)) {
+
+ // Reset Transform to org. Value
+
+ gr.ScaleTransform(1F,1F);
+ gr.Clear(Color.Beige);
+ gr.ScaleTransform(this.zoom,this.zoom);
+
+// if (this.pageSettings != null) {
+// gr.DrawRectangle(new Pen(Color.Black),
+// this.PageRectangle ());
+// }
+ DrawItems (gr,page.Items);
+ }
+ System.Console.WriteLine("\tready createBitmap {0}",DateTime.Now);
+ return bm;
+
+ }
+
+ private void ShowPages () {
+ System.Console.WriteLine("ReportViewer:ShowPages {0}",this.pages.Count);
+ this.pageNumber = 0;
+ SinglePage sp = pages[this.pageNumber];
+
+ if (this.bitmap != null) {
+ this.bitmap.Dispose();
+ }
+ this.bitmap = this.BuildBitmap(sp);
+
+ this.toolStripTextBox1.Text = String.Empty;
+ string str = String.Format ("Page {0} of {1}",this.pageNumber +1,this.pages.Count);
+ this.toolStripTextBox1.Text = str;
+ this.Invalidate(true);
+ }
+
+
+ void ToolStripComboBox1SelectedIndexChanged(object sender, System.EventArgs e)
+ {
+ switch (this.toolStripComboBox1.SelectedIndex) {
+ case 0:
+ this.zoom = (float)1.0;
+ break;
+ case 1:
+ this.zoom = (float)0.75;
+ break;
+ case 2:
+ this.zoom = (float) 0.5;
+ break;
+ default:
+ this.zoom = (float)1.0;
+ break;
+ }
+
+ this.AdjustDrawArea();
+ }
+ void ToolStripTextBox1Click(object sender, System.EventArgs e)
+ {
+ MessageBox.Show ("TextBox Chlicked");
+ }
+
+ void BackButton(object sender, System.EventArgs e)
+ {
+ MessageBox.Show ("BackButton not implemented");
+ }
+
+ void ForwardButton(object sender, System.EventArgs e)
+ {
+ MessageBox.Show ("´Forward not implemented");
+ }
+
+ void PrintButton(object sender, System.EventArgs e)
+ {
+ MessageBox.Show ("Print not implemented");
+ }
+
+ public PageSettings PageSettings {
+ get {
+
+ return pageSettings;
+ }
+ set {
+ pageSettings = value;
+ this.AdjustDrawArea();
+ }
+ }
+
+
+ public List Pages {
+ set {
+ pages = value;
+ ShowPages();
+ }
+ }
+
+ }
+}
diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/ReportViewer/ReportViewer.resx b/src/AddIns/Misc/SharpReport/SharpReportCore/ReportViewer/ReportViewer.resx
new file mode 100644
index 0000000000..a6a52189af
--- /dev/null
+++ b/src/AddIns/Misc/SharpReport/SharpReportCore/ReportViewer/ReportViewer.resx
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ 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
+ o2i8AAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAaFJREFUOE+Vkr9O
+ wlAUxnV3YMPRR9A34AXYfADjwGzYWRiQAegqIXGhMSlgCOHPIIPypzJA0lKIUGhDtCkyQJoYHFj47LlJ
+ B2gNepMvtzk93+/ce849PrKXZcF396Rb9L2/rgOnF37/iez1byd2K2jwWhQ/aHZOQcnmF1z6M4QSlQVc
+ +hfgZQbs688AVX2/ouTHN+DVAORPQPr4BsUGg8HNwV6YpvlMyY1GwyVJklCr1aAoCucCbTab81KpBEe9
+ Xg+z2QzL5RKWPePVaoXFYoH5fI5qtQpd13ch2WwW0+kU/X4fw+GQgQzDYGbayeSo3W4jlUrtjpYAmqZh
+ MpkwiKqqDOKYxuMxZFmGKIrged4bkM/nQaBut8sgo9GIQXK5HDiOQzKZZOJL996A9XoNu4msajqdRjwe
+ RywWY2ZBEFCv11EsFhGNRr0B2+0WBKGG0b0rlQroVJlMBpFIBOFwmEEp1mw2vSF0BQdCFcvlMoLBS4RC
+ IWbudDqsF05vXOO0u+4jCKnValHDrETiQSoUxJ1JHHxQNujMfgcBSqSdKv5m+gHDX/T8L6cjXgAAAABJ
+ RU5ErkJggg==
+
+
+
+ 17, 17
+
+
+ 48
+
+
\ No newline at end of file
diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/ReportViewer/Resources/Icons.16x16.BrowserAfter.png b/src/AddIns/Misc/SharpReport/SharpReportCore/ReportViewer/Resources/Icons.16x16.BrowserAfter.png
new file mode 100644
index 0000000000..c1543df939
Binary files /dev/null and b/src/AddIns/Misc/SharpReport/SharpReportCore/ReportViewer/Resources/Icons.16x16.BrowserAfter.png differ
diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/ReportViewer/Resources/Icons.16x16.BrowserBefore.png b/src/AddIns/Misc/SharpReport/SharpReportCore/ReportViewer/Resources/Icons.16x16.BrowserBefore.png
new file mode 100644
index 0000000000..c165b435ed
Binary files /dev/null and b/src/AddIns/Misc/SharpReport/SharpReportCore/ReportViewer/Resources/Icons.16x16.BrowserBefore.png differ
diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/ReportViewer/Resources/Icons.16x16.Print.png b/src/AddIns/Misc/SharpReport/SharpReportCore/ReportViewer/Resources/Icons.16x16.Print.png
new file mode 100644
index 0000000000..5e4406244e
Binary files /dev/null and b/src/AddIns/Misc/SharpReport/SharpReportCore/ReportViewer/Resources/Icons.16x16.Print.png differ
diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/SharpReportCore.csproj b/src/AddIns/Misc/SharpReport/SharpReportCore/SharpReportCore.csproj
index bae7b5fa40..6075819881 100644
--- a/src/AddIns/Misc/SharpReport/SharpReportCore/SharpReportCore.csproj
+++ b/src/AddIns/Misc/SharpReport/SharpReportCore/SharpReportCore.csproj
@@ -146,6 +146,14 @@
+
+
+ ReportViewer.cs
+
+
+ ReportViewer.cs
+
+
@@ -171,6 +179,11 @@
+
+
+
+
+
\ No newline at end of file