Skip to content
This repository was archived by the owner on Oct 16, 2020. It is now read-only.

Commit 24034c3

Browse files
Create empty FormSheetreport from File/New
1 parent 61f3091 commit 24034c3

12 files changed

Lines changed: 133 additions & 71 deletions

File tree

src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/ICSharpCode.Reporting.Addin.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@
8282
<Folder Include="src\Designer" />
8383
<Folder Include="src\Globals" />
8484
<Folder Include="src\DesignableItems" />
85+
<Folder Include="src\Factory" />
86+
<Folder Include="src\Wizard" />
8587
<Folder Include="src\Toolbox" />
8688
<Folder Include="src\TypeProvider" />
8789
<Folder Include="src\XML" />
@@ -109,6 +111,7 @@
109111
<Compile Include="src\Designer\RootReportModel.cs" />
110112
<Compile Include="src\Designer\SectionDesigner.cs" />
111113
<Compile Include="src\Designer\TextItemDesigner.cs" />
114+
<Compile Include="src\Factory\CreateFormSheetFromModel.cs" />
112115
<Compile Include="src\Globals\DesignerGlobals.cs" />
113116
<Compile Include="src\Globals\StringWriterWithEncoding.cs" />
114117
<Compile Include="src\Services\DefaultMemberRelationshipService.cs" />

src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Commands/ViewCommands.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,6 @@ public class CreateDesignerCommand : AbstractMenuCommand
2121
{
2222
readonly OpenedFile openedFile;
2323

24-
public CreateDesignerCommand() {
25-
MessageService.ShowMessage("Not implemented at the moment","Reporting");
26-
}
27-
2824
public CreateDesignerCommand (OpenedFile openedFile) {
2925
if (openedFile == null)
3026
throw new ArgumentNullException("openedFile");

src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignerBinding/DesignerBinding.cs

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,14 @@
99

1010
using System;
1111
using System.IO;
12+
using System.Xml;
1213
using ICSharpCode.Core;
14+
using ICSharpCode.Reporting.Factories;
15+
using ICSharpCode.Reporting.Items;
1316
using ICSharpCode.SharpDevelop;
1417
using ICSharpCode.SharpDevelop.Workbench;
1518
using ICSharpCode.Reporting.Addin.Commands;
19+
using ICSharpCode.Reporting.Addin.Factory;
1620

1721
namespace ICSharpCode.Reporting.Addin.DesignerBinding {
1822

@@ -41,20 +45,30 @@ public double AutoDetectFileContent(FileName fileName, System.IO.Stream fileCont
4145
public IViewContent CreateContentForFile(OpenedFile file)
4246
{
4347
if (file.IsDirty) {
44-
MessageService.ShowMessage("ReportWizard not available at the Moment","New ReportDesigner");
45-
return null;
46-
// var cmd = new ReportWizardCommand(file);
47-
// cmd.Run();
48-
// if (cmd.Canceled) {
49-
// return null;
50-
// }
51-
// file.SetData(cmd.GeneratedReport.ToArray());
48+
49+
var reportModel = ReportModelFactory.Create();
50+
51+
var reportFactory = new CreateFormSheetFromModel();
52+
var xml = reportFactory.ToXml(reportModel);
53+
54+
var doc = new XmlDocument();
55+
doc.LoadXml(xml.ToString());
56+
var ar = XmlToArray(doc);
57+
file.SetData(ar);
5258
}
5359

5460
var viewCmd = new CreateDesignerCommand(file);
5561
viewCmd.Run();
5662
LoggingService.Info("return DesignerView");
5763
return viewCmd.DesignerView;
5864
}
65+
66+
static byte[] XmlToArray(XmlDocument doc)
67+
{
68+
using (var stream = new MemoryStream()) {
69+
doc.Save(stream);
70+
return stream.ToArray();
71+
}
72+
}
5973
}
6074
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
/*
2+
* Created by SharpDevelop.
3+
* User: Peter Forstmeier
4+
* Date: 03.04.2014
5+
* Time: 19:55
6+
*
7+
* To change this template use Tools | Options | Coding | Edit Standard Headers.
8+
*/
9+
using System;
10+
using System.Drawing;
11+
using System.IO;
12+
using ICSharpCode.Reporting.Interfaces;
13+
using ICSharpCode.Reporting.Addin.DesignableItems;
14+
using ICSharpCode.Reporting.Addin.Globals;
15+
using ICSharpCode.Reporting.Addin.XML;
16+
17+
namespace ICSharpCode.Reporting.Addin.Factory
18+
{
19+
/// <summary>
20+
/// Description of CreateFormSheetReport.
21+
/// </summary>
22+
class CreateFormSheetFromModel
23+
{
24+
25+
26+
public StringWriter ToXml(IReportModel reportModel) {
27+
int locY = reportModel.ReportSettings.TopMargin;
28+
29+
foreach (var section in reportModel.SectionCollection)
30+
{
31+
section.Location = new Point(reportModel.ReportSettings.LeftMargin,locY);
32+
section.Size = new Size(reportModel.ReportSettings.PageSize.Width - reportModel.ReportSettings.LeftMargin - reportModel.ReportSettings.RightMargin,
33+
70);
34+
locY = locY + section.Size.Height + DesignerGlobals.GabBetweenSection;
35+
}
36+
37+
38+
var xml = ToXmlInternal(reportModel);
39+
return xml;
40+
}
41+
42+
StringWriter ToXmlInternal(IReportModel model)
43+
{
44+
var writer = new StringWriterWithEncoding(System.Text.Encoding.UTF8);
45+
var xml = XmlHelper.CreatePropperWriter(writer);
46+
47+
var reportDesignerWriter = new ReportDesignerWriter();
48+
XmlHelper.CreatePropperDocument(xml);
49+
50+
51+
reportDesignerWriter.Save(model.ReportSettings,xml);
52+
53+
xml.WriteEndElement();
54+
xml.WriteStartElement("SectionCollection");
55+
56+
// we look only for Sections
57+
foreach (var section in model.SectionCollection) {
58+
reportDesignerWriter.Save(section,xml);
59+
}
60+
61+
//SectionCollection
62+
xml.WriteEndElement();
63+
//Reportmodel
64+
xml.WriteEndElement();
65+
xml.WriteEndDocument();
66+
xml.Close();
67+
return writer;
68+
}
69+
70+
}
71+
}

src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Views/DesignerView.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ public override object Control {
382382
}
383383

384384

385-
public override void Load(OpenedFile file, System.IO.Stream stream)
385+
public override void Load(OpenedFile file, Stream stream)
386386
{
387387
LoggingService.Debug("ReportDesigner: Load from: " + file.FileName);
388388
base.Load(file, stream);

src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ReportCreatorFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ namespace ICSharpCode.Reporting.Factories
2727
/// <summary>
2828
/// Description of ReportCreatorFactory.
2929
/// </summary>
30-
internal class ReportCreatorFactory {
30+
static class ReportCreatorFactory {
3131

3232
public static IReportCreator ExporterFactory(IReportModel reportModel)
3333
{

src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ReportModelFactory.cs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
* To change this template use Tools | Options | Coding | Edit Standard Headers.
88
*/
99
using System;
10+
using System.Drawing;
1011
using ICSharpCode.Reporting.Globals;
1112
using ICSharpCode.Reporting.Items;
1213

@@ -19,11 +20,17 @@ public static class ReportModelFactory
1920
{
2021
public static ReportModel Create()
2122
{
22-
ReportModel m = new ReportModel();
23-
foreach (GlobalEnums.ReportSection sec in Enum.GetValues(typeof(GlobalEnums.ReportSection))) {
24-
m.SectionCollection.Add (SectionFactory.Create(sec.ToString()));
23+
var reportModel = new ReportModel();
24+
foreach (var sec in Enum.GetValues(typeof(GlobalEnums.ReportSection))) {
25+
reportModel.SectionCollection.Add (SectionFactory.Create(sec.ToString()));
2526
}
26-
return m;
27+
28+
foreach (var section in reportModel.SectionCollection) {
29+
section.Size = new Size(reportModel.ReportSettings.PageSize.Width - reportModel.ReportSettings.LeftMargin - reportModel.ReportSettings.RightMargin,
30+
GlobalValues.DefaultSectionHeight);
31+
}
32+
33+
return reportModel;
2734
}
2835
}
2936
}

src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/SectionFactory.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,9 @@ namespace ICSharpCode.Reporting.Factories
1414
/// <summary>
1515
/// Description of SectionFactory.
1616
/// </summary>
17-
sealed class SectionFactory
17+
static class SectionFactory
1818
{
19-
private SectionFactory ()
20-
{
21-
22-
}
19+
2320
public static BaseSection Create(string name) {
2421
if (name == null)
2522
throw new ArgumentNullException("name");

src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/GlobalValues.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
using System;
2020
using System.Drawing;
21+
using System.Drawing.Printing;
2122
namespace ICSharpCode.Reporting.Globals
2223
{
2324
/// <summary>
@@ -48,5 +49,9 @@ public static Font DefaultFont
4849

4950

5051
public static Size PreferedSize {get {return new Size(100,20);}}
52+
53+
public static Margins DefaultPageMargin {get {return new Margins(50,50,50,50);}}
54+
55+
public static int DefaultSectionHeight {get {return 60;}}
5156
}
5257
}

src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportModel.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
// DEALINGS IN THE SOFTWARE.
1818

1919
using System;
20-
using System.Collections.Generic;
2120
using System.Collections.ObjectModel;
2221

2322
using ICSharpCode.Reporting.Items;
@@ -31,7 +30,6 @@ public interface IReportModel
3130
{
3231
ReportSettings ReportSettings {get;set;}
3332
Collection<BaseSection> SectionCollection {get;}
34-
3533
IReportContainer ReportHeader {get;}
3634
IReportContainer PageHeader {get;}
3735
IReportContainer DetailSection {get;}

0 commit comments

Comments
 (0)