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

Commit 9f7b8f4

Browse files
PushModel generation
1 parent 2a06007 commit 9f7b8f4

11 files changed

Lines changed: 115 additions & 53 deletions

File tree

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,11 @@
213213
</None>
214214
</ItemGroup>
215215
<ItemGroup>
216+
<ProjectReference Include="..\..\..\..\Libraries\NRefactory\ICSharpCode.NRefactory\ICSharpCode.NRefactory.csproj">
217+
<Project>{3B2A5653-EC97-4001-BB9B-D90F1AF2C371}</Project>
218+
<Name>ICSharpCode.NRefactory</Name>
219+
<Private>False</Private>
220+
</ProjectReference>
216221
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
217222
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
218223
<Name>ICSharpCode.SharpDevelop</Name>

src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/ReportSettings.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,5 +145,7 @@ public Size PageSize {
145145
public SortColumnCollection SortColumnsCollection {get;private set;}
146146

147147
public GroupColumnCollection GroupColumnsCollection {get;private set;}
148+
149+
148150
}
149151
}

src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Globals/GlobalLists.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public static string[] DataTypeList ()
2828
"System.DateTime",
2929
"System.TimeSpan",
3030
"System.Decimal",
31-
"System.Int"};
31+
"System.Int32"};
3232

3333
#endregion
3434

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
@@ -56,12 +56,12 @@ void _DataModel_SelectionChanged(object sender, SelectionChangedEventArgs e){
5656
var cbo = (ComboBox) sender;
5757

5858
var pushPullModel = (PushPullModel)cbo.SelectedItem;
59-
59+
6060
switch (pushPullModel) {
6161
case PushPullModel.PushData: {
6262
this._ReportType.SelectedItem = ReportType.DataReport;
6363
this.CanFinish = false;
64-
this.CanSelectNextPage = true;
64+
this.CanSelectNextPage = true;
6565
break;
6666
}
6767

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

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,36 @@
66
xmlns:sdr="clr-namespace:ICSharpCode.Reporting.Globals;assembly=ICSharpCode.Reporting"
77
Name="PushData"
88
Title="SharpDevelop Reporting"
9-
Description="Create Columns for a PusData Report"
9+
1010
PageType="Interior"
1111
CanFinish="true"
1212
CancelButtonVisibility="Visible"
1313
CanSelectPreviousPage="true"
1414
CanSelectNextPage="false">
1515

1616
<Grid >
17+
<Grid.ColumnDefinitions>
18+
<ColumnDefinition Width="150"></ColumnDefinition>
19+
<ColumnDefinition></ColumnDefinition>
20+
</Grid.ColumnDefinitions>
21+
1722
<Grid.RowDefinitions>
1823
<RowDefinition Height="30"></RowDefinition>
24+
<RowDefinition Height="Auto"></RowDefinition>
1925
<RowDefinition Height="200"></RowDefinition>
2026
</Grid.RowDefinitions>
27+
<TextBlock Text="Create Columns for PushData Reporting" FontSize="15" Grid.Column ="1"></TextBlock>
28+
29+
<ComboBox Name="_cboTypes" Visibility="Hidden" Grid.Row="1" SelectionChanged="_cboTypes_SelectionChanged" ></ComboBox>
2130

2231
<DataGrid Name="_DataGrid"
2332
ItemsSource="{Binding}"
2433
CanUserAddRows="True"
2534
CanUserDeleteRows="True"
26-
27-
AutoGenerateColumns="False" Grid.Row="1" Margin="30,10,30,5">
35+
AutoGenerateColumns="False" Grid.Row="1" Grid.RowSpan="2" Margin="30,10,30,5" Width="400" Grid.Column="1">
2836
<DataGrid.Columns>
29-
<DataGridTextColumn Header="ColumnName" Binding="{Binding ColumnName}" Width="150"></DataGridTextColumn>
30-
<DataGridTextColumn Header="DataType" Binding="{Binding DataTypeName}" Width="150"></DataGridTextColumn>
37+
<DataGridTextColumn Header="ColumnName" Binding="{Binding ColumnName}" Width="200"></DataGridTextColumn>
38+
<DataGridComboBoxColumn Header="DataType" x:Name="cboType" SelectedItemBinding="{Binding DataTypeName}" Width="*"></DataGridComboBoxColumn>
3139
</DataGrid.Columns>
3240
</DataGrid>
3341
</Grid>

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

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,12 @@
88
*/
99
using System;
1010
using System.Collections.Generic;
11+
using ICSharpCode.NRefactory.TypeSystem;
1112
using ICSharpCode.Reporting.BaseClasses;
1213
using Xceed.Wpf.Toolkit;
14+
using ICSharpCode.Reporting.Addin.Globals;
1315
using ICSharpCode.Reporting.Addin.ReportWizard.ViewModels;
16+
using System.Linq;
1417

1518
namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog
1619
{
@@ -20,21 +23,59 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog
2023
public partial class PushDataReport : WizardPage,IHasContext
2124
{
2225
List<AbstractColumn> items;
26+
List<IUnresolvedTypeDefinition> types;
27+
2328
PushModelContext context;
2429

2530
public PushDataReport()
2631
{
2732
InitializeComponent();
2833
items = new List<AbstractColumn>();
34+
types = new List<IUnresolvedTypeDefinition>();
2935
_DataGrid.ItemsSource = items;
3036
this.context = new PushModelContext();
3137
var data = new AbstractColumn("MyColumn",typeof(string));
3238
items.Add(data);
39+
cboType.ItemsSource = GlobalLists.DataTypeList();
40+
var definitions = GetTypeDefinitions();
41+
42+
if (definitions != null) {
43+
_cboTypes.Visibility = System.Windows.Visibility.Visible;
44+
_cboTypes.ItemsSource = definitions;
45+
_cboTypes.SelectedIndex = 0;
46+
}
47+
3348
}
3449

35-
36-
void UpdateContext()
50+
static IEnumerable<ITypeDefinition> GetTypeDefinitions()
3751
{
52+
var currentProject = SharpDevelop.SD.ProjectService.CurrentProject;
53+
var compilation = SharpDevelop.SD.ParserService.GetCompilation(currentProject);
54+
var definitions = compilation.MainAssembly.TopLevelTypeDefinitions.Where(x => x.Properties.Any());
55+
return definitions;
56+
}
57+
58+
59+
#region Combo
60+
61+
void _cboTypes_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e){
62+
63+
var s = (ITypeDefinition)e.AddedItems[0];
64+
var l = CreateItemsSource(s);
65+
if (l.Count > 0) {
66+
_DataGrid.ItemsSource = l;
67+
}
68+
}
69+
70+
static List<AbstractColumn> CreateItemsSource(ITypeDefinition s){
71+
return s.Properties.Select(p => new AbstractColumn(){
72+
ColumnName = p.Name,
73+
DataTypeName = p.ReturnType.ReflectionName
74+
}).ToList();
75+
}
76+
#endregion
77+
78+
void UpdateContext(){
3879
context.Items = (List<AbstractColumn>)_DataGrid.ItemsSource;
3980
}
4081

@@ -51,6 +92,8 @@ public IWizardContext Context {
5192
public WizardPageType ReportPageType {
5293
get {return WizardPageType.PushModelPage;}
5394
}
95+
96+
5497

5598
#endregion
5699
}

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

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
using ICSharpCode.Reporting.Factories;
1212
using ICSharpCode.Reporting.Globals;
1313
using ICSharpCode.Reporting.Interfaces;
14-
14+
using ICSharpCode.Reporting.BaseClasses;
1515

1616
using ICSharpCode.Reporting.Items;
1717
using ICSharpCode.Reporting.Addin.ReportWizard.ViewModels;
@@ -35,8 +35,8 @@ public void Generate(ReportWizardContext context) {
3535
if (context == null)
3636
throw new ArgumentNullException("context");
3737

38-
var poc = (PageOneContext)context.PageOneContext;
39-
if (IsDataReport(poc)) {
38+
39+
if (IsDataReport(context)) {
4040
CreateDataReport (context);
4141
} else {
4242
CreateFormSheetReport(context);
@@ -90,25 +90,28 @@ void GeneratePushModel(ReportWizardContext context){
9090

9191
void CreateReportHeader(ReportWizardContext context){
9292
var pageOneContext = (PageOneContext)context.PageOneContext;
93-
var headerText = new BaseTextItem();
9493

95-
if (String.IsNullOrEmpty(pageOneContext.ReportName)) {
96-
headerText.Text = GlobalValues.DefaultReportName;
97-
} else {
98-
headerText.Text = pageOneContext.ReportName;
99-
}
94+
var headerText = new BaseTextItem();
10095

101-
headerText.Size = GlobalValues.PreferedSize;
102-
var printableWith = ReportModel.ReportSettings.PageSize.Width - ReportModel.ReportSettings.LeftMargin - ReportModel.ReportSettings.RightMargin;
96+
headerText.Text = String.IsNullOrEmpty(pageOneContext.ReportName) ? GlobalValues.DefaultReportName : pageOneContext.ReportName;
10397

104-
var x = (int)(printableWith - headerText.Size.Width) / 2;
105-
headerText.Location = new Point(x,4);
98+
var xLoc = (ReportModel.ReportSettings.PrintableWidth() - headerText.Size.Width) / 2;
99+
headerText.Location = new Point(xLoc,4);
106100
ReportModel.ReportHeader.Items.Add(headerText);
107101

102+
xLoc = ReportModel.ReportSettings.PrintableWidth() - GlobalValues.PreferedSize.Width - 20;
103+
104+
var dateText = new BaseTextItem(){
105+
Text ="= Today.Today",
106+
Location = new Point(xLoc ,10)
107+
};
108+
ReportModel.ReportHeader.Items.Add(dateText);
108109
}
109110

110-
static bool IsDataReport(PageOneContext poc)
111+
112+
static bool IsDataReport(ReportWizardContext context)
111113
{
114+
var poc = (PageOneContext)context.PageOneContext;
112115
return poc.ReportType.Equals(ReportType.DataReport);
113116
}
114117

src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/AbstractColumn.cs

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -26,42 +26,19 @@ namespace ICSharpCode.Reporting.BaseClasses
2626
/// </summary>
2727
public class AbstractColumn
2828
{
29-
Type dataType;
30-
string dataTypeName;
3129

3230
public AbstractColumn() {
33-
this.dataType = typeof(System.String);
31+
this.DataTypeName = typeof(String).FullName;
3432
}
3533

36-
3734
public AbstractColumn(string columnName, Type dataType){
3835
this.ColumnName = columnName;
39-
this.dataType = dataType;
36+
this.DataTypeName = dataType.FullName;
4037
}
4138

4239
public string ColumnName {get;set;}
4340

41+
public string DataTypeName {get;set;}
4442

45-
46-
public string DataTypeName {
47-
get {
48-
return this.dataType.ToString();
49-
}
50-
set {
51-
dataTypeName = value;
52-
this.dataType = Type.GetType(dataTypeName,true,true);
53-
}
54-
}
55-
56-
// [XmlIgnoreAttribute]
57-
public Type DataType {
58-
get {
59-
return dataType;
60-
}
61-
set {
62-
dataType = value;
63-
}
64-
}
65-
6643
}
6744
}

src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/ExtensionMethods.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
using System.Collections.Generic;
2121
using System.Windows;
2222
using System.Windows.Media;
23+
using ICSharpCode.Reporting.Items;
24+
2325
namespace ICSharpCode.Reporting.BaseClasses
2426
{
2527
/// <summary>
@@ -28,7 +30,7 @@ namespace ICSharpCode.Reporting.BaseClasses
2830
/// </summary>
2931
/// <see cref="D:\git_Sharpdevelop_Reporting\src\AddIns\Misc\Reports\ICSharpCode.Reports.Core\Project\WPF\ExtensionMethodes.cs"
3032

31-
internal static class ExtensionMethodes
33+
public static class ExtensionMethodes
3234
{
3335
#region Collections
3436

@@ -117,6 +119,11 @@ public static Point TransformFromDevice(this Point point, Visual visual)
117119
}
118120
#endregion
119121

122+
#region ReportSettings
120123

124+
public static int PrintableWidth (this ReportSettings reportSettings) {
125+
return reportSettings.PageSize.Width - reportSettings.LeftMargin - reportSettings.RightMargin;
126+
}
127+
#endregion
121128
}
122129
}

src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseTextItem.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public class BaseTextItem:PrintableItem,ITextItem
4545
public BaseTextItem(){
4646
Name = "BaseTextItem";
4747
Font = GlobalValues.DefaultFont;
48-
48+
Size = GlobalValues.PreferedSize;
4949
}
5050

5151

0 commit comments

Comments
 (0)