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 @@ -49,38 +49,36 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog
}
IEnumerable<ITypeDefinition> GetTypeDefinitions(){
IEnumerable<ITypeDefinition> GetTypeDefinitions()
{
if (SelectedProject != null) {
var compilation = SharpDevelop.SD.ParserService.GetCompilation(SelectedProject);
var definitions = compilation.MainAssembly.TopLevelTypeDefinitions.Where(x => x.Properties.Any());
return definitions;
} else {
return null;
}
return null;
}
public IModelCollection<IProject> Projects {get; private set;}
#region SolutionCombo
void _pro_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e){
SelectedProject = (IProject)e.AddedItems[0];
var definitions = GetTypeDefinitions();
// if (definitions != null) {
if (definitions.Any()) {
_cboTypes.Visibility = System.Windows.Visibility.Visible;
_availTxt.Visibility = System.Windows.Visibility.Visible;
_projTxt.Visibility = System.Windows.Visibility.Visible;
_cboTypes.ItemsSource = definitions;
_cboTypes.SelectedIndex = 0;
} else {
var data = new AbstractColumn("MyColumn", typeof(string));
items.Add(data);
_projTxt.Text = ResourceService.GetString("SharpReport.Wizard.PushModel.NoProject");
}
// }
if (definitions.Any()) {
_cboTypes.Visibility = System.Windows.Visibility.Visible;
_availTxt.Visibility = System.Windows.Visibility.Visible;
_projTxt.Visibility = System.Windows.Visibility.Visible;
_cboTypes.ItemsSource = definitions;
_cboTypes.SelectedIndex = 0;
} else {
var data = new AbstractColumn("MyColumn", typeof(string));
items.Add(data);
_projTxt.Text = ResourceService.GetString("SharpReport.Wizard.PushModel.NoProject");
}
}
#endregion
@ -88,13 +86,16 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog @@ -88,13 +86,16 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog
#region Classes Combo
void _cboTypes_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e){
var typeDefinition = (ITypeDefinition)e.AddedItems[0];
var itemsList = CreateItemsSource(typeDefinition);
if (itemsList.Count > 0) {
_DataGrid.ItemsSource = itemsList;
if (e.AddedItems.Count > 0) {
var typeDefinition = (ITypeDefinition)e.AddedItems[0];
var itemsList = CreateItemsSource(typeDefinition);
if (itemsList.Count > 0) {
_DataGrid.ItemsSource = itemsList;
}
}
}
#endregion
static List<AbstractColumn> CreateItemsSource(ITypeDefinition typeDefinitions){
return typeDefinitions.Properties.Select(p => new AbstractColumn(){
@ -102,7 +103,7 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog @@ -102,7 +103,7 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog
DataTypeName = p.ReturnType.ReflectionName
}).ToList();
}
#endregion
void UpdateContext(){
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 @@ -36,20 +36,46 @@ namespace ICSharpCode.Reporting.Arrange
class ContainerArrangeStrategy:IArrangeStrategy{
public void Arrange(IExportColumn exportColumn){
Console.WriteLine("------------------------");
Console.WriteLine();
if (exportColumn == null)
throw new ArgumentNullException("exportColumn");
var container = exportColumn as IExportContainer;
if ((container != null) && (container.ExportedItems.Count > 0)) {
if ((container != null) && (container.ExportedItems.Any())) {
List<IExportColumn> canGrowItems = CreateCanGrowList(container);
if (canGrowItems.Count > 0) {
if (canGrowItems.Any()) {
var containerSize = ArrangeInternal(container);
if (containerSize.Height > container.DesiredSize.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){

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

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

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

@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using ICSharpCode.Reporting.Factories;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export;
@ -48,6 +48,11 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter @@ -48,6 +48,11 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
public List<IExportColumn> CreateConvertedList(List<IPrintableObject> items){
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) {
var exportColumn = ExportColumnFactory.CreateItem(element);
var ec = element as IReportContainer;

Loading…
Cancel
Save