From c507ba9cec252f80bb400244aa1a776685517f8e Mon Sep 17 00:00:00 2001 From: Peter Forstmeier Date: Mon, 25 May 2015 13:04:13 +0200 Subject: [PATCH] PushDataReport.xaml.cs --- .../Dialog/PushDataReport.xaml.cs | 47 ++++++++++--------- .../Src/Arrange/ArrangeStrategy.cs | 30 +++++++++++- .../Src/PageBuilder/BasePageBuilder.cs | 19 ++++---- .../Converter/ContainerConverter.cs | 7 ++- 4 files changed, 66 insertions(+), 37 deletions(-) diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/Dialog/PushDataReport.xaml.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/Dialog/PushDataReport.xaml.cs index e4faee1662..2c6dad31e3 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/Dialog/PushDataReport.xaml.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/Dialog/PushDataReport.xaml.cs @@ -49,38 +49,36 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog } - IEnumerable GetTypeDefinitions(){ - + IEnumerable 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 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 #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 CreateItemsSource(ITypeDefinition typeDefinitions){ return typeDefinitions.Properties.Select(p => new AbstractColumn(){ @@ -102,7 +103,7 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog DataTypeName = p.ReturnType.ReflectionName }).ToList(); } - #endregion + void UpdateContext(){ context.Items = (List)_DataGrid.ItemsSource; diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs index afee05d1c4..fdeae2d126 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs @@ -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 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){ diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs index 4c9a5ee8b0..9e52199022 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs +++ b/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(){ var lastSection = CurrentPage.ExportedItems.Last(); CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin, @@ -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 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 CurrentLocation = DetailStart; } - + protected void SortIstByLocationY () { + + } protected void UpdatePageInfo() { foreach (var page in Pages) { page.PageInfo.TotalPages = Pages.Count; diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs index 42341e0ffa..27c203c6b8 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs @@ -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 public List CreateConvertedList(List items){ var itemsList = new List(); +// 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;