Browse Source

PushDataReport.xaml.cs

pull/685/head
Peter Forstmeier 10 years ago
parent
commit
c507ba9cec
  1. 47
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/Dialog/PushDataReport.xaml.cs
  2. 30
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs
  3. 19
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  4. 7
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs

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

@ -49,38 +49,36 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog
} }
IEnumerable<ITypeDefinition> GetTypeDefinitions(){ IEnumerable<ITypeDefinition> GetTypeDefinitions()
{
if (SelectedProject != null) { if (SelectedProject != null) {
var compilation = SharpDevelop.SD.ParserService.GetCompilation(SelectedProject); var compilation = SharpDevelop.SD.ParserService.GetCompilation(SelectedProject);
var definitions = compilation.MainAssembly.TopLevelTypeDefinitions.Where(x => x.Properties.Any()); var definitions = compilation.MainAssembly.TopLevelTypeDefinitions.Where(x => x.Properties.Any());
return definitions; return definitions;
} else {
return null;
} }
return null;
} }
public IModelCollection<IProject> Projects {get; private set;} public IModelCollection<IProject> Projects {get; private set;}
#region SolutionCombo #region SolutionCombo
void _pro_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e){ void _pro_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e){
SelectedProject = (IProject)e.AddedItems[0]; SelectedProject = (IProject)e.AddedItems[0];
var definitions = GetTypeDefinitions(); var definitions = GetTypeDefinitions();
// if (definitions != null) { if (definitions.Any()) {
if (definitions.Any()) { _cboTypes.Visibility = System.Windows.Visibility.Visible;
_cboTypes.Visibility = System.Windows.Visibility.Visible; _availTxt.Visibility = System.Windows.Visibility.Visible;
_availTxt.Visibility = System.Windows.Visibility.Visible; _projTxt.Visibility = System.Windows.Visibility.Visible;
_projTxt.Visibility = System.Windows.Visibility.Visible; _cboTypes.ItemsSource = definitions;
_cboTypes.ItemsSource = definitions; _cboTypes.SelectedIndex = 0;
_cboTypes.SelectedIndex = 0;
} else {
} else { var data = new AbstractColumn("MyColumn", typeof(string));
var data = new AbstractColumn("MyColumn", typeof(string)); items.Add(data);
items.Add(data); _projTxt.Text = ResourceService.GetString("SharpReport.Wizard.PushModel.NoProject");
_projTxt.Text = ResourceService.GetString("SharpReport.Wizard.PushModel.NoProject"); }
}
// }
} }
#endregion #endregion
@ -88,13 +86,16 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog
#region Classes Combo #region Classes Combo
void _cboTypes_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e){ void _cboTypes_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e){
var typeDefinition = (ITypeDefinition)e.AddedItems[0]; if (e.AddedItems.Count > 0) {
var itemsList = CreateItemsSource(typeDefinition); var typeDefinition = (ITypeDefinition)e.AddedItems[0];
if (itemsList.Count > 0) { var itemsList = CreateItemsSource(typeDefinition);
_DataGrid.ItemsSource = itemsList; if (itemsList.Count > 0) {
_DataGrid.ItemsSource = itemsList;
}
} }
} }
#endregion
static List<AbstractColumn> CreateItemsSource(ITypeDefinition typeDefinitions){ static List<AbstractColumn> CreateItemsSource(ITypeDefinition typeDefinitions){
return typeDefinitions.Properties.Select(p => new AbstractColumn(){ return typeDefinitions.Properties.Select(p => new AbstractColumn(){
@ -102,7 +103,7 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog
DataTypeName = p.ReturnType.ReflectionName DataTypeName = p.ReturnType.ReflectionName
}).ToList(); }).ToList();
} }
#endregion
void UpdateContext(){ void UpdateContext(){
context.Items = (List<AbstractColumn>)_DataGrid.ItemsSource; context.Items = (List<AbstractColumn>)_DataGrid.ItemsSource;

30
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs

@ -36,20 +36,46 @@ namespace ICSharpCode.Reporting.Arrange
class ContainerArrangeStrategy:IArrangeStrategy{ class ContainerArrangeStrategy:IArrangeStrategy{
public void Arrange(IExportColumn exportColumn){ public void Arrange(IExportColumn exportColumn){
Console.WriteLine("------------------------");
Console.WriteLine();
if (exportColumn == null) if (exportColumn == null)
throw new ArgumentNullException("exportColumn"); throw new ArgumentNullException("exportColumn");
var container = exportColumn as IExportContainer; var container = exportColumn as IExportContainer;
if ((container != null) && (container.ExportedItems.Count > 0)) { if ((container != null) && (container.ExportedItems.Any())) {
List<IExportColumn> canGrowItems = CreateCanGrowList(container); List<IExportColumn> canGrowItems = CreateCanGrowList(container);
if (canGrowItems.Count > 0) { if (canGrowItems.Any()) {
var containerSize = ArrangeInternal(container); var containerSize = ArrangeInternal(container);
if (containerSize.Height > container.DesiredSize.Height) { if (containerSize.Height > container.DesiredSize.Height) {
container.DesiredSize = new Size(containerSize.Width,containerSize.Height); container.DesiredSize = new Size(containerSize.Width,containerSize.Height);
} }
} }
} }
foreach (var element in container.ExportedItems) {
Console.WriteLine("{0} - {1} - {2}",element.Name,element.Location,element.DesiredSize);
}
var xx = container.ExportedItems.Where(x => x.CanGrow == false);
var growables = container.ExportedItems.Where(x => x.CanGrow == true);
foreach (var e in growables) {
var r = new Rectangle(e.Location,e.DesiredSize);
foreach (var x in xx) {
// if ((x.Location.Y > r.Location.Y) && (x.Location.Y < r.Bottom)) {
if (ElementIntersect(x,e)) {
x.Location = new Point(x.Location.X,r.Bottom + 5);
}
}
}
} }
bool ElementIntersect(IExportColumn fixedElement, IExportColumn growable) {
var r = new Rectangle(growable.Location,growable.DesiredSize);
if ((fixedElement.Location.Y > growable.Location.Y) && (fixedElement.Location.Y < r.Bottom)){
return true;
}
return false;
}
static Size ArrangeInternal(IExportContainer container){ static Size ArrangeInternal(IExportContainer container){

19
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs

@ -90,14 +90,6 @@ namespace ICSharpCode.Reporting.PageBuilder
} }
void AddSectionToPage(IExportContainer header){
header.Parent = CurrentPage;
CurrentPage.ExportedItems.Add(header);
}
protected void BuildReportFooter(){ protected void BuildReportFooter(){
var lastSection = CurrentPage.ExportedItems.Last(); var lastSection = CurrentPage.ExportedItems.Last();
CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin, CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin,
@ -115,6 +107,11 @@ namespace ICSharpCode.Reporting.PageBuilder
BuildPageFooter(); BuildPageFooter();
} }
void AddSectionToPage(IExportContainer header){
header.Parent = CurrentPage;
CurrentPage.ExportedItems.Add(header);
}
protected bool PageFull(IExportContainer container) { protected bool PageFull(IExportContainer container) {
return container.DisplayRectangle.Bottom > DetailEnds.Y; return container.DisplayRectangle.Bottom > DetailEnds.Y;
@ -134,9 +131,7 @@ namespace ICSharpCode.Reporting.PageBuilder
convertedContainer.ExportedItems.AddRange(list); convertedContainer.ExportedItems.AddRange(list);
//Run ExpressionEvaluator for every section, otherwise measure don't work //Run ExpressionEvaluator for every section, otherwise measure don't work
ExpressionRunner.Visitor.Visit(convertedContainer as ExportContainer); ExpressionRunner.Visitor.Visit(convertedContainer as ExportContainer);
Console.WriteLine("{0} - {1}",convertedContainer.DesiredSize,convertedContainer.DisplayRectangle);
convertedContainer.DesiredSize = MeasureElement(convertedContainer); convertedContainer.DesiredSize = MeasureElement(convertedContainer);
Console.WriteLine("{0} - {1}",convertedContainer.DesiredSize,convertedContainer.DisplayRectangle);
ArrangeContainer(convertedContainer); ArrangeContainer(convertedContainer);
return convertedContainer; return convertedContainer;
} }
@ -193,7 +188,9 @@ namespace ICSharpCode.Reporting.PageBuilder
CurrentLocation = DetailStart; CurrentLocation = DetailStart;
} }
protected void SortIstByLocationY () {
}
protected void UpdatePageInfo() { protected void UpdatePageInfo() {
foreach (var page in Pages) { foreach (var page in Pages) {
page.PageInfo.TotalPages = Pages.Count; page.PageInfo.TotalPages = Pages.Count;

7
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs

@ -19,7 +19,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Linq;
using ICSharpCode.Reporting.Factories; using ICSharpCode.Reporting.Factories;
using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.Interfaces.Export;
@ -48,6 +48,11 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
public List<IExportColumn> CreateConvertedList(List<IPrintableObject> items){ public List<IExportColumn> CreateConvertedList(List<IPrintableObject> items){
var itemsList = new List<IExportColumn>(); var itemsList = new List<IExportColumn>();
// var aa = items.OrderBy(x => x.Location.Y);
// foreach (var el in aa) {
// Console.WriteLine("{0} - {1}",el.Name,el.Location);
// }
// foreach (var element in aa) {
foreach (var element in items) { foreach (var element in items) {
var exportColumn = ExportColumnFactory.CreateItem(element); var exportColumn = ExportColumnFactory.CreateItem(element);
var ec = element as IReportContainer; var ec = element as IReportContainer;

Loading…
Cancel
Save