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 fedbdb982e..aa07fe14dc 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 @@ -166,7 +166,7 @@ Component - + diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportDesignerView.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportDesignerView.cs index cd3cf734cc..3fb6ec3ab3 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportDesignerView.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportDesignerView.cs @@ -8,18 +8,15 @@ */ using System; using System.Collections; -using System.ComponentModel; using System.ComponentModel.Design; using System.ComponentModel.Design.Serialization; using System.Drawing.Design; using System.IO; -using System.Linq; using System.Text; using System.Windows.Forms; using ICSharpCode.Core; using ICSharpCode.Reports.Addin.Designer; -using ICSharpCode.Reports.Core; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Gui; diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ExplorerTree.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ExplorerTree.cs index 4a23ee0a58..7f912f7fa5 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ExplorerTree.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ExplorerTree.cs @@ -5,12 +5,13 @@ // $Revision$ // -using ICSharpCode.Core.WinForms; using System; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; + using ICSharpCode.Core; +using ICSharpCode.Core.WinForms; using ICSharpCode.Reports.Core; using ICSharpCode.SharpDevelop; diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ReportExplorerPad.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ReportExplorerPad.cs index 816189e0de..5b3d7b557d 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ReportExplorerPad.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ReportExplorerPad.cs @@ -5,14 +5,13 @@ // $Revision$ // -using ICSharpCode.Core.WinForms; using System; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; -using ICSharpCode.Core; + +using ICSharpCode.Core.WinForms; using ICSharpCode.Reports.Core; -using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Gui; namespace ICSharpCode.Reports.Addin diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/GroupedRow.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupedRow.cs similarity index 90% rename from src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/GroupedRow.cs rename to src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupedRow.cs index 005de8d3a7..980a23edc4 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/GroupedRow.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupedRow.cs @@ -13,23 +13,23 @@ using System.Drawing; using ICSharpCode.Reports.Addin.Designer; using ICSharpCode.Reports.Core; + namespace ICSharpCode.Reports.Addin { /// /// Description of GroupedRow. /// [Designer(typeof(ICSharpCode.Reports.Addin.Designer.GroupedRowDesigner))] - public class BaseGroupedRowItem:BaseRowItem + public class BaseGroupedRow:BaseRowItem { - public BaseGroupedRowItem() + public BaseGroupedRow() { -// http://www.cetix.de/DotNetNews/Thread188109-Schlankes_Grid.aspx -// http://msdn.microsoft.com/en-us/library/t9abe4ab(vs.71).aspx - TypeDescriptor.AddProvider(new GroupedRowTypeProvider(), typeof(BaseGroupedRowItem)); + TypeDescriptor.AddProvider(new GroupedRowTypeProvider(), typeof(BaseGroupedRow)); } } + internal class GroupedRowTypeProvider : TypeDescriptionProvider { public GroupedRowTypeProvider() : base(TypeDescriptor.GetProvider(typeof(AbstractItem))) 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 b30b49ffcb..46ab54cf56 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 @@ -77,15 +77,13 @@ namespace ICSharpCode.Reports.Addin //Group tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseGroupItem)); tb.Bitmap = WinFormsResourceService.GetBitmap("Icons.16x16.SharpQuery.Table"); -// tb.DisplayName = ResourceService.GetString("SharpReport.Toolbar.DataRow"); - tb.DisplayName = "GroupHeader"; + tb.DisplayName = "SimpleGroupItem"; sideTab.Items.Add(new SideTabItemDesigner(tb)); //Group - tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseGroupedRowItem)); + tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseGroupedRow)); tb.Bitmap = WinFormsResourceService.GetBitmap("Icons.16x16.SharpQuery.Table"); -// tb.DisplayName = ResourceService.GetString("SharpReport.Toolbar.DataRow"); - tb.DisplayName = "GroupRow"; + tb.DisplayName = "GroupHeaderRow"; sideTab.Items.Add(new SideTabItemDesigner(tb)); //BaseTable 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 ae720859f3..fd0f62e4f3 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/BaseGroupeRow.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGroupeRow.cs new file mode 100644 index 0000000000..0ebdab4e74 --- /dev/null +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGroupeRow.cs @@ -0,0 +1,23 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 24.08.2010 + * Time: 20:14 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; + +namespace ICSharpCode.Reports.Core +{ + /// + /// Description of BaseGroupeRow. + /// + public class BaseGroupedRow:BaseRowItem + { + public BaseGroupedRow():base() + { + Console.WriteLine("Constr baseGroupedrow"); + } + } +} 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 2cb1d120c1..5b84cdf667 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 @@ -155,8 +155,11 @@ namespace ICSharpCode.Reports.Core.Exporter - protected void PrepareContainerForConverting(ISimpleContainer simpleContainer) + protected void PrepareContainerForConverting(BaseSection section,ISimpleContainer simpleContainer) { + if (section != null) { + FireSectionRendering(section); + } LayoutRow(simpleContainer); } 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 791c91bb4b..078206be4b 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 @@ -67,6 +67,68 @@ namespace ICSharpCode.Reports.Core.Exporter int defaultLeftPos = parent.Location.X; + do { + + PrintHelper.AdjustSectionLocation (section); + section.Size = this.SectionBounds.DetailSectionRectangle.Size; + base.SaveSize(section.Items[0].Size); + + + + if (section.Items.HasGroupColumns) { + + // Convert Grouping Header + currentPosition = ConvertGroupHeader(mylist,section,simpleContainer,defaultLeftPos,currentPosition); + + //Convert children + + if (base.DataNavigator.HasChildren) { + + StandardPrinter.AdjustBackColor(simpleContainer,GlobalValues.DefaultBackColor); + base.DataNavigator.SwitchGroup(); + do { + currentPosition = ConvertGroupChilds (mylist,section,simpleContainer,defaultLeftPos,currentPosition); + } + while ( base.DataNavigator.ChildMoveNext()); + } + + } + else + { + // No Grouping + currentPosition = ConvertStandardRow (mylist,section,simpleContainer,defaultLeftPos,currentPosition); + } + + + if (PrintHelper.IsPageFull(new Rectangle(new Point (simpleContainer.Location.X,currentPosition.Y), section.Size),base.SectionBounds)) { + base.FirePageFull(mylist); + section.SectionOffset = base.SinglePage.SectionBounds.PageHeaderRectangle.Location.Y; + currentPosition = new Point(base.SectionBounds.PageHeaderRectangle.X,base.SectionBounds.PageHeaderRectangle.Y); + mylist.Clear(); + } + + ShouldDrawBorder (section,mylist); + + } + while (base.DataNavigator.MoveNext()); + + SectionBounds.ReportFooterRectangle = new Rectangle(SectionBounds.ReportFooterRectangle.Left, + section.Location.Y + section.Size.Height, + SectionBounds.ReportFooterRectangle.Width, + SectionBounds.ReportFooterRectangle.Height); + return mylist; + } + + + + private ExporterCollection old_ConvertDataRow (ISimpleContainer simpleContainer) + { + ExporterCollection mylist = new ExporterCollection(); + Point currentPosition = new Point(base.SectionBounds.DetailStart.X,base.SectionBounds.DetailStart.Y); + BaseSection section = parent as BaseSection; + + int defaultLeftPos = parent.Location.X; + do { PrintHelper.AdjustSectionLocation (section); @@ -92,7 +154,7 @@ namespace ICSharpCode.Reports.Core.Exporter StandardPrinter.AdjustBackColor(simpleContainer,GlobalValues.DefaultBackColor); base.DataNavigator.SwitchGroup(); do { - currentPosition = ConvertGroupChilds (mylist,section,simpleContainer,defaultLeftPos,currentPosition); +// currentPosition = ConvertGroupChilds (mylist,section,simpleContainer,defaultLeftPos,currentPosition); } while ( base.DataNavigator.ChildMoveNext()); } @@ -120,36 +182,50 @@ namespace ICSharpCode.Reports.Core.Exporter - - private void AfterConverting (BaseSection section) + private Point ConvertGroupHeader(ExporterCollection mylist,BaseSection section,ISimpleContainer simpleContainer,int leftPos,Point offset) { - section.Items[0].Size = base.RestoreSize; - section.SectionOffset += section.Size.Height + 3 * GlobalValues.GapBetweenContainer; + Point retVal = Point.Empty; + ReportItemCollection groupCollection = null; + var grh = new Collection(section.Items.OfType().ToList()); + if (grh.Count == 0) { + groupCollection = section.Items.ExtractGroupedColumns(); + base.DataNavigator.Fill(groupCollection); + base.FireSectionRendering(section); + ExporterCollection list = StandardPrinter.ConvertPlainCollection(groupCollection,offset); +// StandardPrinter.EvaluateRow(base.Evaluator,list); + mylist.AddRange(list); + AfterConverting (section,list); + retVal = new Point (leftPos,offset.Y + groupCollection[0].Size.Height + 20 + (3 *GlobalValues.GapBetweenContainer)); + } else { + retVal = ConvertStandardRow(mylist,section,grh[0],leftPos,offset); + } + return retVal; } + - - private Point ConvertGroupHeader(ExporterCollection mylist,BaseSection section,ISimpleContainer simpleContainer,int leftPos,Point offset) - { + private Point old_ConvertGroupHeader(ExporterCollection mylist,BaseSection section,ISimpleContainer simpleContainer,int leftPos,Point offset) + { var groupCollection = section.Items.ExtractGroupedColumns(); base.DataNavigator.Fill(groupCollection); base.FireSectionRendering(section); ExporterCollection list = StandardPrinter.ConvertPlainCollection(groupCollection,offset); - StandardPrinter.EvaluateRow(base.Evaluator,list); +// StandardPrinter.EvaluateRow(base.Evaluator,list); mylist.AddRange(list); - AfterConverting (section); + AfterConverting (section,list); + return new Point (leftPos,offset.Y + groupCollection[0].Size.Height + 20 + (3 *GlobalValues.GapBetweenContainer)); } - + private Point ConvertGroupChilds(ExporterCollection mylist, BaseSection section, ISimpleContainer simpleContainer, int defaultLeftPos, Point currentPosition) { base.DataNavigator.FillChild(simpleContainer.Items); - PrepareContainerForConverting(simpleContainer); - base.FireSectionRendering(section); + PrepareContainerForConverting(section,simpleContainer); +// base.FireSectionRendering(section); Point curPos = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition); - StandardPrinter.EvaluateRow(base.Evaluator,mylist); - AfterConverting (section); +// StandardPrinter.EvaluateRow(base.Evaluator,mylist); + AfterConverting (section,mylist); return curPos; } @@ -157,15 +233,23 @@ namespace ICSharpCode.Reports.Core.Exporter private Point ConvertStandardRow(ExporterCollection mylist, BaseSection section, ISimpleContainer simpleContainer, int defaultLeftPos, Point currentPosition) { base.FillRow(simpleContainer); - PrepareContainerForConverting(simpleContainer); - base.FireSectionRendering(section); + PrepareContainerForConverting(section,simpleContainer); +// base.FireSectionRendering(section); Point curPos = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition); - StandardPrinter.EvaluateRow(base.Evaluator,mylist); - AfterConverting (section); +// StandardPrinter.EvaluateRow(base.Evaluator,mylist); + AfterConverting (section,mylist); return curPos; } + private void AfterConverting (BaseSection section,ExporterCollection mylist) + { + StandardPrinter.EvaluateRow(base.Evaluator,mylist); + + section.Items[0].Size = base.RestoreSize; + section.SectionOffset += section.Size.Height + 3 * GlobalValues.GapBetweenContainer; + } + private static void ShouldDrawBorder (BaseSection section,ExporterCollection list) { 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 eee4589c66..6a0509ba37 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 @@ -88,7 +88,7 @@ namespace ICSharpCode.Reports.Core.Exporter StandardPrinter.EvaluateRow(base.Evaluator,mylist); - base.PrepareContainerForConverting(simpleContainer); + base.PrepareContainerForConverting(null,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 53a3207565..8dc7a2a9bb 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,9 +79,9 @@ namespace ICSharpCode.Reports.Core.Exporter base.FillRow(simpleContainer); - base.PrepareContainerForConverting(simpleContainer); - - base.FireSectionRendering(section); +// base.PrepareContainerForConverting(simpleContainer); +// +// base.FireSectionRendering(section); currentPosition = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition);