Browse Source

PushModel generation

pull/522/merge
Peter Forstmeier 12 years ago
parent
commit
9f7b8f44b8
  1. 5
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/ICSharpCode.Reporting.Addin.csproj
  2. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/ReportSettings.cs
  3. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Globals/GlobalLists.cs
  4. 4
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/Dialog/BaseSettingsPage.xaml.cs
  5. 18
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/Dialog/PushDataReport.xaml
  6. 47
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/Dialog/PushDataReport.xaml.cs
  7. 31
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/ReportGenerator.cs
  8. 29
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/AbstractColumn.cs
  9. 9
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/ExtensionMethods.cs
  10. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseTextItem.cs
  11. 19
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportingFactory.cs

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

@ -213,6 +213,11 @@ @@ -213,6 +213,11 @@
</None>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\Libraries\NRefactory\ICSharpCode.NRefactory\ICSharpCode.NRefactory.csproj">
<Project>{3B2A5653-EC97-4001-BB9B-D90F1AF2C371}</Project>
<Name>ICSharpCode.NRefactory</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
<Name>ICSharpCode.SharpDevelop</Name>

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

@ -145,5 +145,7 @@ namespace ICSharpCode.Reporting.Addin.DesignableItems @@ -145,5 +145,7 @@ namespace ICSharpCode.Reporting.Addin.DesignableItems
public SortColumnCollection SortColumnsCollection {get;private set;}
public GroupColumnCollection GroupColumnsCollection {get;private set;}
}
}

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

@ -28,7 +28,7 @@ namespace ICSharpCode.Reporting.Addin.Globals @@ -28,7 +28,7 @@ namespace ICSharpCode.Reporting.Addin.Globals
"System.DateTime",
"System.TimeSpan",
"System.Decimal",
"System.Int"};
"System.Int32"};
#endregion

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

@ -56,12 +56,12 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog{ @@ -56,12 +56,12 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog{
var cbo = (ComboBox) sender;
var pushPullModel = (PushPullModel)cbo.SelectedItem;
switch (pushPullModel) {
case PushPullModel.PushData: {
this._ReportType.SelectedItem = ReportType.DataReport;
this.CanFinish = false;
this.CanSelectNextPage = true;
this.CanSelectNextPage = true;
break;
}

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

@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
xmlns:sdr="clr-namespace:ICSharpCode.Reporting.Globals;assembly=ICSharpCode.Reporting"
Name="PushData"
Title="SharpDevelop Reporting"
Description="Create Columns for a PusData Report"
PageType="Interior"
CanFinish="true"
CancelButtonVisibility="Visible"
@ -14,20 +14,28 @@ @@ -14,20 +14,28 @@
CanSelectNextPage="false">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="200"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="Create Columns for PushData Reporting" FontSize="15" Grid.Column ="1"></TextBlock>
<ComboBox Name="_cboTypes" Visibility="Hidden" Grid.Row="1" SelectionChanged="_cboTypes_SelectionChanged" ></ComboBox>
<DataGrid Name="_DataGrid"
ItemsSource="{Binding}"
CanUserAddRows="True"
CanUserDeleteRows="True"
AutoGenerateColumns="False" Grid.Row="1" Margin="30,10,30,5">
AutoGenerateColumns="False" Grid.Row="1" Grid.RowSpan="2" Margin="30,10,30,5" Width="400" Grid.Column="1">
<DataGrid.Columns>
<DataGridTextColumn Header="ColumnName" Binding="{Binding ColumnName}" Width="150"></DataGridTextColumn>
<DataGridTextColumn Header="DataType" Binding="{Binding DataTypeName}" Width="150"></DataGridTextColumn>
<DataGridTextColumn Header="ColumnName" Binding="{Binding ColumnName}" Width="200"></DataGridTextColumn>
<DataGridComboBoxColumn Header="DataType" x:Name="cboType" SelectedItemBinding="{Binding DataTypeName}" Width="*"></DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>

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

@ -8,9 +8,12 @@ @@ -8,9 +8,12 @@
*/
using System;
using System.Collections.Generic;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.Reporting.BaseClasses;
using Xceed.Wpf.Toolkit;
using ICSharpCode.Reporting.Addin.Globals;
using ICSharpCode.Reporting.Addin.ReportWizard.ViewModels;
using System.Linq;
namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog
{
@ -20,21 +23,59 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog @@ -20,21 +23,59 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog
public partial class PushDataReport : WizardPage,IHasContext
{
List<AbstractColumn> items;
List<IUnresolvedTypeDefinition> types;
PushModelContext context;
public PushDataReport()
{
InitializeComponent();
items = new List<AbstractColumn>();
types = new List<IUnresolvedTypeDefinition>();
_DataGrid.ItemsSource = items;
this.context = new PushModelContext();
var data = new AbstractColumn("MyColumn",typeof(string));
items.Add(data);
cboType.ItemsSource = GlobalLists.DataTypeList();
var definitions = GetTypeDefinitions();
if (definitions != null) {
_cboTypes.Visibility = System.Windows.Visibility.Visible;
_cboTypes.ItemsSource = definitions;
_cboTypes.SelectedIndex = 0;
}
}
void UpdateContext()
static IEnumerable<ITypeDefinition> GetTypeDefinitions()
{
var currentProject = SharpDevelop.SD.ProjectService.CurrentProject;
var compilation = SharpDevelop.SD.ParserService.GetCompilation(currentProject);
var definitions = compilation.MainAssembly.TopLevelTypeDefinitions.Where(x => x.Properties.Any());
return definitions;
}
#region Combo
void _cboTypes_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e){
var s = (ITypeDefinition)e.AddedItems[0];
var l = CreateItemsSource(s);
if (l.Count > 0) {
_DataGrid.ItemsSource = l;
}
}
static List<AbstractColumn> CreateItemsSource(ITypeDefinition s){
return s.Properties.Select(p => new AbstractColumn(){
ColumnName = p.Name,
DataTypeName = p.ReturnType.ReflectionName
}).ToList();
}
#endregion
void UpdateContext(){
context.Items = (List<AbstractColumn>)_DataGrid.ItemsSource;
}
@ -51,6 +92,8 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog @@ -51,6 +92,8 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog
public WizardPageType ReportPageType {
get {return WizardPageType.PushModelPage;}
}
#endregion
}

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

@ -11,7 +11,7 @@ using System.Drawing; @@ -11,7 +11,7 @@ using System.Drawing;
using ICSharpCode.Reporting.Factories;
using ICSharpCode.Reporting.Globals;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.Addin.ReportWizard.ViewModels;
@ -35,8 +35,8 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard @@ -35,8 +35,8 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard
if (context == null)
throw new ArgumentNullException("context");
var poc = (PageOneContext)context.PageOneContext;
if (IsDataReport(poc)) {
if (IsDataReport(context)) {
CreateDataReport (context);
} else {
CreateFormSheetReport(context);
@ -90,25 +90,28 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard @@ -90,25 +90,28 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard
void CreateReportHeader(ReportWizardContext context){
var pageOneContext = (PageOneContext)context.PageOneContext;
var headerText = new BaseTextItem();
if (String.IsNullOrEmpty(pageOneContext.ReportName)) {
headerText.Text = GlobalValues.DefaultReportName;
} else {
headerText.Text = pageOneContext.ReportName;
}
var headerText = new BaseTextItem();
headerText.Size = GlobalValues.PreferedSize;
var printableWith = ReportModel.ReportSettings.PageSize.Width - ReportModel.ReportSettings.LeftMargin - ReportModel.ReportSettings.RightMargin;
headerText.Text = String.IsNullOrEmpty(pageOneContext.ReportName) ? GlobalValues.DefaultReportName : pageOneContext.ReportName;
var x = (int)(printableWith - headerText.Size.Width) / 2;
headerText.Location = new Point(x,4);
var xLoc = (ReportModel.ReportSettings.PrintableWidth() - headerText.Size.Width) / 2;
headerText.Location = new Point(xLoc,4);
ReportModel.ReportHeader.Items.Add(headerText);
xLoc = ReportModel.ReportSettings.PrintableWidth() - GlobalValues.PreferedSize.Width - 20;
var dateText = new BaseTextItem(){
Text ="= Today.Today",
Location = new Point(xLoc ,10)
};
ReportModel.ReportHeader.Items.Add(dateText);
}
static bool IsDataReport(PageOneContext poc)
static bool IsDataReport(ReportWizardContext context)
{
var poc = (PageOneContext)context.PageOneContext;
return poc.ReportType.Equals(ReportType.DataReport);
}

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

@ -26,42 +26,19 @@ namespace ICSharpCode.Reporting.BaseClasses @@ -26,42 +26,19 @@ namespace ICSharpCode.Reporting.BaseClasses
/// </summary>
public class AbstractColumn
{
Type dataType;
string dataTypeName;
public AbstractColumn() {
this.dataType = typeof(System.String);
this.DataTypeName = typeof(String).FullName;
}
public AbstractColumn(string columnName, Type dataType){
this.ColumnName = columnName;
this.dataType = dataType;
this.DataTypeName = dataType.FullName;
}
public string ColumnName {get;set;}
public string DataTypeName {get;set;}
public string DataTypeName {
get {
return this.dataType.ToString();
}
set {
dataTypeName = value;
this.dataType = Type.GetType(dataTypeName,true,true);
}
}
// [XmlIgnoreAttribute]
public Type DataType {
get {
return dataType;
}
set {
dataType = value;
}
}
}
}

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

@ -20,6 +20,8 @@ using System; @@ -20,6 +20,8 @@ using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Media;
using ICSharpCode.Reporting.Items;
namespace ICSharpCode.Reporting.BaseClasses
{
/// <summary>
@ -28,7 +30,7 @@ namespace ICSharpCode.Reporting.BaseClasses @@ -28,7 +30,7 @@ namespace ICSharpCode.Reporting.BaseClasses
/// </summary>
/// <see cref="D:\git_Sharpdevelop_Reporting\src\AddIns\Misc\Reports\ICSharpCode.Reports.Core\Project\WPF\ExtensionMethodes.cs"
internal static class ExtensionMethodes
public static class ExtensionMethodes
{
#region Collections
@ -117,6 +119,11 @@ namespace ICSharpCode.Reporting.BaseClasses @@ -117,6 +119,11 @@ namespace ICSharpCode.Reporting.BaseClasses
}
#endregion
#region ReportSettings
public static int PrintableWidth (this ReportSettings reportSettings) {
return reportSettings.PageSize.Width - reportSettings.LeftMargin - reportSettings.RightMargin;
}
#endregion
}
}

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

@ -45,7 +45,7 @@ namespace ICSharpCode.Reporting.Items @@ -45,7 +45,7 @@ namespace ICSharpCode.Reporting.Items
public BaseTextItem(){
Name = "BaseTextItem";
Font = GlobalValues.DefaultFont;
Size = GlobalValues.PreferedSize;
}

19
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportingFactory.cs

@ -35,6 +35,23 @@ namespace ICSharpCode.Reporting @@ -35,6 +35,23 @@ namespace ICSharpCode.Reporting
public class ReportingFactory
{
public IReportCreator ReportCreator (string fileName,IEnumerable list) {
if (String.IsNullOrEmpty(fileName)) {
throw new ArgumentNullException("fileName");
}
var doc = new XmlDocument();
try {
doc.Load(fileName);
} catch (Exception e) {
throw e;
}
ReportModel = LoadModel(doc);
var builder = new DataPageBuilder(ReportModel,list);
return builder;
}
public IReportCreator ReportCreator (Stream stream,IEnumerable list)
{
ReportModel = LoadReportModel (stream);
@ -42,7 +59,7 @@ namespace ICSharpCode.Reporting @@ -42,7 +59,7 @@ namespace ICSharpCode.Reporting
return builder;
}
public IReportCreator ReportCreator (Stream stream)
{
ReportModel = LoadReportModel (stream);

Loading…
Cancel
Save