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

Commit e829344

Browse files
Create PushModel report with Wizard
1 parent 3acbe6c commit e829344

11 files changed

Lines changed: 136 additions & 34 deletions

File tree

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,10 @@
165165
<Compile Include="src\ReportWizard\ReportGenerator.cs" />
166166
<Compile Include="src\ReportWizard\ReportWizardCommand.cs" />
167167
<Compile Include="src\ReportWizard\ViewModels\PageOneContext.cs" />
168+
<Compile Include="src\ReportWizard\ViewModels\PushModelContext.cs" />
168169
<Compile Include="src\ReportWizard\ViewModels\ReportWizardContext.cs" />
169170
<Compile Include="src\ReportWizard\WizardHelper.cs" />
171+
<Compile Include="src\ReportWizard\WizardPageType.cs" />
170172
<Compile Include="src\Services\DefaultMemberRelationshipService.cs" />
171173
<Compile Include="src\Services\DesignerSerializationService.cs" />
172174
<Compile Include="src\Services\MenuCommandService.cs" />

src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/Dialog/BaseSettingsPage.xaml.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ public IWizardContext Context {
4444
return context;}
4545
}
4646

47-
public int PageNumber {
48-
get {return 1;}
47+
public WizardPageType ReportPageType {
48+
get {return WizardPageType.BaseSettingsPage;}
4949
}
5050

5151

src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/Dialog/IHasContext.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog
1717
public interface IHasContext
1818
{
1919
IWizardContext Context {get;}
20-
int PageNumber {get;}
20+
21+
WizardPageType ReportPageType {get;}
2122
}
2223
}

src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/Dialog/PushDataReport.xaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
Title="SharpDevelop Reporting"
1010
Description="Welcome to Sharpdevelop Reporting Wizard"
1111
PageType="Interior"
12-
NextButtonVisibility="Visible"
12+
CanFinish="true"
1313
CancelButtonVisibility="Visible">
1414

1515
<Grid ShowGridLines="True">
@@ -22,7 +22,7 @@
2222
ItemsSource="{Binding}"
2323
CanUserAddRows="True"
2424
CanUserDeleteRows="True"
25-
25+
2626
AutoGenerateColumns="False" Grid.Row="1" Margin="30,10,30,5">
2727
<DataGrid.Columns>
2828
<DataGridTextColumn Header="ColumnName" Binding="{Binding ColumnName}" Width="150"></DataGridTextColumn>

src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/Dialog/ReportWizard.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
PageChanged="_wizard_PageChanged"
1414
Finish="_wizard_Finish"
1515
CanHelp="False">
16+
1617
<local:WelcomePage></local:WelcomePage>
1718

1819
<local:BaseSettingsPage></local:BaseSettingsPage>

src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/Dialog/ReportWizard.xaml.cs

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
using System.Windows.Media.Imaging;
1515
using ICSharpCode.SharpDevelop;
1616
using Xceed.Wpf.Toolkit;
17+
using ICSharpCode.Reporting.Addin.ReportWizard.Dialog;
1718
using ICSharpCode.Reporting.Addin.ReportWizard.ViewModels;
1819
using System.Linq;
1920

@@ -48,9 +49,29 @@ void _wizard_PageChanged(object sender, RoutedEventArgs e)
4849

4950
void _wizard_Finish(object sender, RoutedEventArgs e)
5051
{
51-
context.PageOneContext = baseSettingsPage.Context;
52-
52+
foreach (WizardPage element in _wizard.Items) {
53+
var hc = element as IHasContext;
54+
if (hc != null) {
55+
UpdateContext(hc);
56+
}
57+
}
5358
}
5459

60+
61+
void UpdateContext(IHasContext hc)
62+
{
63+
64+
switch (hc.ReportPageType) {
65+
case WizardPageType.BaseSettingsPage:{
66+
context.PageOneContext = hc.Context;
67+
break;
68+
}
69+
70+
case WizardPageType.PushModelPage: {
71+
context.PushModelContext = hc.Context;
72+
break;
73+
}
74+
}
75+
}
5576
}
5677
}

src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/ReportGenerator.cs

Lines changed: 47 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -23,43 +23,65 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard
2323
/// </summary>
2424
public class ReportGenerator
2525
{
26-
ReportWizardContext context;
27-
28-
29-
public ReportGenerator(ReportWizardContext context)
26+
const int gap = 10;
27+
28+
public ReportGenerator()
3029
{
31-
if (context == null)
32-
throw new ArgumentNullException("context");
33-
this.context = context;
3430
ReportModel = ReportModelFactory.Create();
3531
}
3632

3733

38-
public void Generate() {
39-
PageOneGenerate();
40-
CreateReportHeader();
34+
public void Generate(ReportWizardContext context) {
35+
if (context == null)
36+
throw new ArgumentNullException("context");
37+
GenerateBaseSettings(context);
38+
GeneratePushModel(context);
39+
CreateReportHeader(context);
4140
}
4241

43-
void PageOneGenerate()
44-
{
45-
var pageOne = (PageOneContext)context.PageOneContext;
42+
43+
void GenerateBaseSettings (ReportWizardContext context) {
44+
var pageOneContext = (PageOneContext)context.PageOneContext;
4645
var reportSettings = ReportModel.ReportSettings;
47-
reportSettings.DataModel = pageOne.DataModel;
48-
reportSettings.FileName = pageOne.FileName;
49-
if (pageOne.Legal) {
50-
reportSettings.Landscape = false;
51-
} else {
52-
reportSettings.Landscape = true;
53-
}
54-
reportSettings.ReportName = pageOne.ReportName;
55-
reportSettings.ReportType = pageOne.ReportType;
46+
reportSettings.DataModel = pageOneContext.DataModel;
47+
reportSettings.FileName = pageOneContext.FileName;
48+
reportSettings.Landscape = !pageOneContext.Legal;
49+
reportSettings.ReportName = pageOneContext.ReportName;
50+
reportSettings.ReportType = pageOneContext.ReportType;
5651
}
5752

5853

59-
void CreateReportHeader()
60-
{
54+
void GeneratePushModel(ReportWizardContext context){
55+
var pushModelContext = (PushModelContext)context.PushModelContext;
56+
var xLocation = 5;
57+
foreach (var element in pushModelContext.Items) {
58+
var dataItem = new BaseDataItem(){
59+
Name = element.ColumnName,
60+
Text = element.ColumnName,
61+
ColumnName = element.ColumnName,
62+
DataType = element.DataTypeName
63+
};
64+
65+
var location = new Point(xLocation,4);
66+
dataItem.Location = location;
67+
dataItem.Size = GlobalValues.PreferedSize;
68+
xLocation = xLocation + GlobalValues.PreferedSize.Width + gap;
69+
Console.WriteLine("Create dataItem with {0} - {1}items",dataItem.Location,dataItem.Size);
70+
ReportModel.DetailSection.Items.Add(dataItem);
71+
}
72+
}
73+
74+
75+
void CreateReportHeader(ReportWizardContext context){
76+
var pageOneContext = (PageOneContext)context.PageOneContext;
6177
var headerText = new BaseTextItem();
62-
headerText.Text = "Header";
78+
79+
if (String.IsNullOrEmpty(pageOneContext.ReportName)) {
80+
headerText.Text = GlobalValues.DefaultReportName;
81+
} else {
82+
headerText.Text = pageOneContext.ReportName;
83+
}
84+
6385
headerText.Size = GlobalValues.PreferedSize;
6486
var printableWith = ReportModel.ReportSettings.PageSize.Width - ReportModel.ReportSettings.LeftMargin - ReportModel.ReportSettings.RightMargin;
6587
var x = (int)(printableWith - headerText.Size.Width) / 2;

src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/ReportWizardCommand.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ public override void Run()
3636
reportWizard.ShowDialog();
3737
if (reportWizard.DialogResult.HasValue && reportWizard.DialogResult.Value){
3838
LoggingService.Info("ReportWizard - CreateReport");
39-
var rg = new ReportGenerator(wizardViewModel);
39+
var rg = new ReportGenerator();
4040

41-
rg.Generate();
41+
rg.Generate(wizardViewModel);
4242
ReportModel = rg.ReportModel;
4343
} else {
4444
Canceled = true;
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*
2+
* Created by SharpDevelop.
3+
* User: Peter Forstmeier
4+
* Date: 12.08.2014
5+
* Time: 19:51
6+
*
7+
* To change this template use Tools | Options | Coding | Edit Standard Headers.
8+
*/
9+
using System;
10+
using System.Collections.Generic;
11+
using ICSharpCode.Reporting.BaseClasses;
12+
13+
namespace ICSharpCode.Reporting.Addin.ReportWizard.ViewModels
14+
{
15+
/// <summary>
16+
/// Description of PushModelContent.
17+
/// </summary>
18+
///
19+
public class PushModelContext:IWizardContext
20+
{
21+
public List<AbstractColumn> Items {get;set;}
22+
}
23+
24+
}

src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/ViewModels/ReportWizardContext.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,16 @@ public IWizardContext PageOneContext {
3535
pageOneContext = value;
3636
}
3737
}
38+
39+
IWizardContext pushModelContext;
40+
41+
public IWizardContext PushModelContext {
42+
get {
43+
return pushModelContext;
44+
}
45+
set {
46+
pushModelContext = value;
47+
}
48+
}
3849
}
3950
}

0 commit comments

Comments
 (0)