From 5ed9cc32a00004319eb6d5049c4f9a48ad0ffe47 Mon Sep 17 00:00:00 2001 From: Peter Forstmeier Date: Sun, 8 Aug 2010 16:23:24 +0000 Subject: [PATCH] Display non Data related Items in DataRow git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/reports@6384 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../ICSharpCode.Reports.Addin.csproj | 3 +- .../Project/Designer/GroupedRowDesigner.cs | 57 ------------------- .../Project/ReportItems/BaseGroupItem.cs | 22 +++++++ .../Project/ReportItems/BaseGroupedRow.cs | 29 ---------- .../Project/Toolbox/ToolboxProvider.cs | 2 +- .../ICSharpCode.Reports.Core.csproj | 1 + .../Project/BaseItems/BaseGroupeItem.cs | 22 +++++++ .../Project/DataManager/DataNavigator.cs | 31 +++++++--- .../Exporter/Converters/BaseConverter.cs | 9 ++- .../Converters/GroupedRowConverter.cs | 25 ++++---- .../Exporter/Converters/TableConverter.cs | 4 +- .../Converters/old_GroupedRowConverter.cs | 2 +- 12 files changed, 93 insertions(+), 114 deletions(-) delete mode 100644 src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Designer/GroupedRowDesigner.cs create mode 100644 src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupItem.cs delete mode 100644 src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupedRow.cs create mode 100644 src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGroupeItem.cs diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/ICSharpCode.Reports.Addin.csproj b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/ICSharpCode.Reports.Addin.csproj index 81fe751818..89c9453724 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/ICSharpCode.Reports.Addin.csproj +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/ICSharpCode.Reports.Addin.csproj @@ -88,7 +88,6 @@ - @@ -140,7 +139,7 @@ Component - + Component diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Designer/GroupedRowDesigner.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Designer/GroupedRowDesigner.cs deleted file mode 100644 index b951a0524b..0000000000 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Designer/GroupedRowDesigner.cs +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Created by SharpDevelop. - * User: Peter Forstmeier - * Date: 30.07.2010 - * Time: 20:03 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.ComponentModel.Design; -using System.Drawing; -using System.Windows.Forms.Design; - -namespace ICSharpCode.Reports.Addin.Designer -{ - /// - /// Description of BaseGroupHeaderDesigner. - /// - - public class GroupedRowDesigner:ParentControlDesigner - { - - private ISelectionService selectionService; - - public GroupedRowDesigner() - { - - } - - public override void Initialize(IComponent component) - { - if (component == null) { - throw new ArgumentNullException("component"); - } - base.Initialize(component); - GetService (); - } - - - private void OnSelectionChanged(object sender, EventArgs e) - { - Control.Invalidate( ); - } - - - private void GetService () - { - selectionService = GetService(typeof(ISelectionService)) as ISelectionService; - if (selectionService != null) - { - selectionService.SelectionChanged += OnSelectionChanged; - } - } - } -} diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupItem.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupItem.cs new file mode 100644 index 0000000000..64a8db8929 --- /dev/null +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupItem.cs @@ -0,0 +1,22 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 07.08.2010 + * Time: 21:57 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; + +namespace ICSharpCode.Reports.Addin +{ + /// + /// Description of BaseGroupItem. + /// + public class BaseGroupeItem:BaseDataItem + { + public BaseGroupeItem() + { + } + } +} diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupedRow.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupedRow.cs deleted file mode 100644 index 4d6dfcf392..0000000000 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupedRow.cs +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Created by SharpDevelop. - * User: Peter Forstmeier - * Date: 06.08.2010 - * Time: 19:25 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Drawing; - -using ICSharpCode.Reports.Addin.Designer; -using ICSharpCode.Reports.Core; - -namespace ICSharpCode.Reports.Addin -{ - /// - /// Description of BaseGroupedRow. - /// - [Designer(typeof(ICSharpCode.Reports.Addin.Designer.GroupedRowDesigner))] - public class BaseGroupedRow:BaseRowItem - { - public BaseGroupedRow() - { - } - } -} diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Toolbox/ToolboxProvider.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Toolbox/ToolboxProvider.cs index 9e7be5d0a8..3911129076 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Toolbox/ToolboxProvider.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Toolbox/ToolboxProvider.cs @@ -75,7 +75,7 @@ namespace ICSharpCode.Reports.Addin //Group - tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseGroupedRow)); + tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseGroupeItem)); tb.Bitmap = WinFormsResourceService.GetBitmap("Icons.16x16.SharpQuery.Table"); // tb.DisplayName = ResourceService.GetString("SharpReport.Toolbar.DataRow"); tb.DisplayName = "GroupHeader"; diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj index 9f08417a7c..4aef795b2a 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj @@ -86,6 +86,7 @@ + diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGroupeItem.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGroupeItem.cs new file mode 100644 index 0000000000..c420bbe919 --- /dev/null +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGroupeItem.cs @@ -0,0 +1,22 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 07.08.2010 + * Time: 22:10 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; + +namespace ICSharpCode.Reports.Core +{ + /// + /// Description of BaseGroupeItem. + /// + public class BaseGroupeItem:BaseDataItem + { + public BaseGroupeItem():base() + { + } + } +} diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataNavigator.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataNavigator.cs index 923f109fe3..6071a19487 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataNavigator.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataNavigator.cs @@ -33,11 +33,23 @@ namespace ICSharpCode.Reports.Core #endregion + private bool IsDataItem (BaseReportItem itm) + { + var d = itm as BaseDataItem; + return d != null; + } + + #region IDataNavigator implementation public void Fill (ReportItemCollection collection) { - foreach (IReportItem item in collection) { - this.store.Fill(item); + + foreach (BaseReportItem item in collection) { + + if (IsDataItem (item)) { + this.store.Fill(item); + } + } } @@ -160,15 +172,16 @@ namespace ICSharpCode.Reports.Core public void FillChild (ReportItemCollection collection) { - TableStrategy t = store as TableStrategy; + TableStrategy tableStrategy = store as TableStrategy; - foreach (BaseDataItem item in collection) { - CurrentItemsCollection ci = t.FillDataRow(ce.Current.ListIndex); - CurrentItem s = ci.FirstOrDefault(x => x.ColumnName == ((BaseDataItem)item).ColumnName); - item.DBValue = s.Value.ToString(); - + foreach (BaseReportItem item in collection) { + if (IsDataItem(item)) { + BaseDataItem di = item as BaseDataItem; + CurrentItemsCollection currentItemsCollection = tableStrategy.FillDataRow(ce.Current.ListIndex); + CurrentItem s = currentItemsCollection.FirstOrDefault(x => x.ColumnName == ((BaseDataItem)item).ColumnName); + di.DBValue = s.Value.ToString(); + } } - } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs index e8f1e2de99..8c3ec295bd 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs @@ -8,6 +8,7 @@ */ using System; using System.Drawing; +using System.Linq; using ICSharpCode.Reports.Core.BaseClasses.Printing; using ICSharpCode.Reports.Core.Events; using ICSharpCode.Reports.Core.Interfaces; @@ -156,7 +157,13 @@ namespace ICSharpCode.Reports.Core.Exporter - protected void LayoutRow (ISimpleContainer row) + protected void PrepareContainerForConverting(ISimpleContainer simpleContainer) + { + LayoutRow(simpleContainer); + } + + + private void LayoutRow (ISimpleContainer row) { PrintHelper.SetLayoutForRow(Graphics,Layouter,row); } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs index 7e99a2caa5..ad66e8e1e2 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs @@ -71,7 +71,11 @@ namespace ICSharpCode.Reports.Core.Exporter PrintHelper.AdjustSectionLocation (section); section.Size = this.SectionBounds.DetailSectionRectangle.Size; base.SaveSize(section.Items[0].Size); + Color color = ((BaseReportItem)simpleContainer).BackColor; + + // GroupeHeader + if (base.DataNavigator.HasChildren) { TestDecorateElement(simpleContainer); @@ -82,16 +86,15 @@ namespace ICSharpCode.Reports.Core.Exporter PrepareContainerForConverting(simpleContainer); base.FireSectionRendering(section); - + StandardPrinter.EvaluateRow(base.Evaluator,mylist); currentPosition = base.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition); AfterConverting (mylist,section); - // Grouping starts ------------------------ + // Grouping items ---------------------- if (base.DataNavigator.HasChildren) { - //((BaseReportItem)simpleContainer).BackColor = color; StandardPrinter.AdjustBackColor(simpleContainer,GlobalValues.DefaultBackColor); base.DataNavigator.SwitchGroup(); do { @@ -101,7 +104,9 @@ namespace ICSharpCode.Reports.Core.Exporter PrepareContainerForConverting(simpleContainer); base.FireSectionRendering(section); - + + StandardPrinter.EvaluateRow(base.Evaluator,mylist); + currentPosition = base.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition); AfterConverting (mylist,section); @@ -131,21 +136,17 @@ namespace ICSharpCode.Reports.Core.Exporter } - void PrepareContainerForConverting(ISimpleContainer simpleContainer) - { - base.LayoutRow(simpleContainer); - } + - void AfterConverting (ExporterCollection mylist,BaseSection section) + private void AfterConverting (ExporterCollection mylist,BaseSection section) { - StandardPrinter.EvaluateRow(base.Evaluator,mylist); section.Items[0].Size = base.RestoreSize; section.SectionOffset += section.Size.Height + 3 * GlobalValues.GapBetweenContainer; } - Color TestDecorateElement(ISimpleContainer simpleContainer) + private Color TestDecorateElement(ISimpleContainer simpleContainer) { BaseReportItem i = simpleContainer as BaseReportItem; var retval = i.BackColor; @@ -153,7 +154,7 @@ namespace ICSharpCode.Reports.Core.Exporter return retval; } - void ShouldDrawBorder (BaseSection section,ExporterCollection list) + private void ShouldDrawBorder (BaseSection section,ExporterCollection list) { if (section.DrawBorder == true) { BaseRectangleItem br = BasePager.CreateDebugItem (section); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/TableConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/TableConverter.cs index cb9c5d916c..96f0fece3d 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/TableConverter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/TableConverter.cs @@ -83,12 +83,12 @@ namespace ICSharpCode.Reports.Core.Exporter // BaseSection section = this.baseTable.Parent as BaseSection; PrintHelper.AdjustSectionLocation(section); + base.FillRow(simpleContainer); StandardPrinter.EvaluateRow(base.Evaluator,mylist); - base.LayoutRow(simpleContainer); - + base.PrepareContainerForConverting(simpleContainer); if (PrintHelper.IsPageFull(new Rectangle(new Point (simpleContainer.Location.X,currentPosition.Y),simpleContainer.Size),base.SectionBounds)) { base.FirePageFull(mylist); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/old_GroupedRowConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/old_GroupedRowConverter.cs index dcab33d430..982cfc624d 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/old_GroupedRowConverter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/old_GroupedRowConverter.cs @@ -79,7 +79,7 @@ namespace ICSharpCode.Reports.Core.Exporter base.FillRow(simpleContainer); - base.LayoutRow(simpleContainer); + base.PrepareContainerForConverting(simpleContainer); base.FireSectionRendering(section);