Browse Source

Control for GroupHeader, GroupHeader can contain TextItems as well

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/reports@6444 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Peter Forstmeier 15 years ago
parent
commit
466aa3a09f
  1. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/ICSharpCode.Reports.Addin.csproj
  2. 3
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportDesignerView.cs
  3. 3
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ExplorerTree.cs
  4. 5
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ReportExplorerPad.cs
  5. 10
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupedRow.cs
  6. 8
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Toolbox/ToolboxProvider.cs
  7. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj
  8. 23
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGroupeRow.cs
  9. 5
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs
  10. 122
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs
  11. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/TableConverter.cs
  12. 6
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/old_GroupedRowConverter.cs

2
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/ICSharpCode.Reports.Addin.csproj

@ -166,7 +166,7 @@
<Compile Include="Project\ReportItems\ErrorItem.cs"> <Compile Include="Project\ReportItems\ErrorItem.cs">
<SubType>Component</SubType> <SubType>Component</SubType>
</Compile> </Compile>
<Compile Include="Project\ReportItems\GroupedRow.cs" /> <Compile Include="Project\ReportItems\BaseGroupedRow.cs" />
<Compile Include="Project\ReportItems\RectangleItemTypeProvider.cs" /> <Compile Include="Project\ReportItems\RectangleItemTypeProvider.cs" />
<Compile Include="Project\ReportManagers\BaseManager.cs" /> <Compile Include="Project\ReportManagers\BaseManager.cs" />
<Compile Include="Project\ReportManagers\StandartPreviewManager.cs" /> <Compile Include="Project\ReportManagers\StandartPreviewManager.cs" />

3
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportDesignerView.cs

@ -8,18 +8,15 @@
*/ */
using System; using System;
using System.Collections; using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design; using System.ComponentModel.Design;
using System.ComponentModel.Design.Serialization; using System.ComponentModel.Design.Serialization;
using System.Drawing.Design; using System.Drawing.Design;
using System.IO; using System.IO;
using System.Linq;
using System.Text; using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.Reports.Addin.Designer; using ICSharpCode.Reports.Addin.Designer;
using ICSharpCode.Reports.Core;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;

3
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ExplorerTree.cs

@ -5,12 +5,13 @@
// <version>$Revision$</version> // <version>$Revision$</version>
// </file> // </file>
using ICSharpCode.Core.WinForms;
using System; using System;
using System.ComponentModel; using System.ComponentModel;
using System.Drawing; using System.Drawing;
using System.Windows.Forms; using System.Windows.Forms;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.Core.WinForms;
using ICSharpCode.Reports.Core; using ICSharpCode.Reports.Core;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;

5
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ReportExplorerPad.cs

@ -5,14 +5,13 @@
// <version>$Revision$</version> // <version>$Revision$</version>
// </file> // </file>
using ICSharpCode.Core.WinForms;
using System; using System;
using System.ComponentModel; using System.ComponentModel;
using System.Drawing; using System.Drawing;
using System.Windows.Forms; using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.Core.WinForms;
using ICSharpCode.Reports.Core; using ICSharpCode.Reports.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.Reports.Addin namespace ICSharpCode.Reports.Addin

10
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/GroupedRow.cs → 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.Addin.Designer;
using ICSharpCode.Reports.Core; using ICSharpCode.Reports.Core;
namespace ICSharpCode.Reports.Addin namespace ICSharpCode.Reports.Addin
{ {
/// <summary> /// <summary>
/// Description of GroupedRow. /// Description of GroupedRow.
/// </summary> /// </summary>
[Designer(typeof(ICSharpCode.Reports.Addin.Designer.GroupedRowDesigner))] [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 TypeDescriptor.AddProvider(new GroupedRowTypeProvider(), typeof(BaseGroupedRow));
// http://msdn.microsoft.com/en-us/library/t9abe4ab(vs.71).aspx
TypeDescriptor.AddProvider(new GroupedRowTypeProvider(), typeof(BaseGroupedRowItem));
} }
} }
internal class GroupedRowTypeProvider : TypeDescriptionProvider internal class GroupedRowTypeProvider : TypeDescriptionProvider
{ {
public GroupedRowTypeProvider() : base(TypeDescriptor.GetProvider(typeof(AbstractItem))) public GroupedRowTypeProvider() : base(TypeDescriptor.GetProvider(typeof(AbstractItem)))

8
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Toolbox/ToolboxProvider.cs

@ -77,15 +77,13 @@ namespace ICSharpCode.Reports.Addin
//Group //Group
tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseGroupItem)); tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseGroupItem));
tb.Bitmap = WinFormsResourceService.GetBitmap("Icons.16x16.SharpQuery.Table"); tb.Bitmap = WinFormsResourceService.GetBitmap("Icons.16x16.SharpQuery.Table");
// tb.DisplayName = ResourceService.GetString("SharpReport.Toolbar.DataRow"); tb.DisplayName = "SimpleGroupItem";
tb.DisplayName = "GroupHeader";
sideTab.Items.Add(new SideTabItemDesigner(tb)); sideTab.Items.Add(new SideTabItemDesigner(tb));
//Group //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.Bitmap = WinFormsResourceService.GetBitmap("Icons.16x16.SharpQuery.Table");
// tb.DisplayName = ResourceService.GetString("SharpReport.Toolbar.DataRow"); tb.DisplayName = "GroupHeaderRow";
tb.DisplayName = "GroupRow";
sideTab.Items.Add(new SideTabItemDesigner(tb)); sideTab.Items.Add(new SideTabItemDesigner(tb));
//BaseTable //BaseTable

1
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj

@ -86,6 +86,7 @@
<Compile Include="Project\BaseClasses\SinglePage.cs" /> <Compile Include="Project\BaseClasses\SinglePage.cs" />
<Compile Include="Project\BaseClasses\SectionBounds.cs" /> <Compile Include="Project\BaseClasses\SectionBounds.cs" />
<Compile Include="Project\BaseClasses\SortColumn.cs" /> <Compile Include="Project\BaseClasses\SortColumn.cs" />
<Compile Include="Project\BaseItems\BaseGroupeRow.cs" />
<Compile Include="Project\BaseItems\BaseGroupItem.cs" /> <Compile Include="Project\BaseItems\BaseGroupItem.cs" />
<Compile Include="Project\BaseItems\BaseTextItem.cs" /> <Compile Include="Project\BaseItems\BaseTextItem.cs" />
<Compile Include="Project\BaseItems\BaseGraphicItem.cs" /> <Compile Include="Project\BaseItems\BaseGraphicItem.cs" />

23
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
{
/// <summary>
/// Description of BaseGroupeRow.
/// </summary>
public class BaseGroupedRow:BaseRowItem
{
public BaseGroupedRow():base()
{
Console.WriteLine("Constr baseGroupedrow");
}
}
}

5
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); LayoutRow(simpleContainer);
} }

122
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; 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 { do {
PrintHelper.AdjustSectionLocation (section); PrintHelper.AdjustSectionLocation (section);
@ -92,7 +154,7 @@ namespace ICSharpCode.Reports.Core.Exporter
StandardPrinter.AdjustBackColor(simpleContainer,GlobalValues.DefaultBackColor); StandardPrinter.AdjustBackColor(simpleContainer,GlobalValues.DefaultBackColor);
base.DataNavigator.SwitchGroup(); base.DataNavigator.SwitchGroup();
do { do {
currentPosition = ConvertGroupChilds (mylist,section,simpleContainer,defaultLeftPos,currentPosition); // currentPosition = ConvertGroupChilds (mylist,section,simpleContainer,defaultLeftPos,currentPosition);
} }
while ( base.DataNavigator.ChildMoveNext()); while ( base.DataNavigator.ChildMoveNext());
} }
@ -120,36 +182,50 @@ namespace ICSharpCode.Reports.Core.Exporter
private Point ConvertGroupHeader(ExporterCollection mylist,BaseSection section,ISimpleContainer simpleContainer,int leftPos,Point offset)
private void AfterConverting (BaseSection section)
{ {
section.Items[0].Size = base.RestoreSize; Point retVal = Point.Empty;
section.SectionOffset += section.Size.Height + 3 * GlobalValues.GapBetweenContainer; ReportItemCollection groupCollection = null;
var grh = new Collection<BaseGroupedRow>(section.Items.OfType<BaseGroupedRow>().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 old_ConvertGroupHeader(ExporterCollection mylist,BaseSection section,ISimpleContainer simpleContainer,int leftPos,Point offset)
private Point ConvertGroupHeader(ExporterCollection mylist,BaseSection section,ISimpleContainer simpleContainer,int leftPos,Point offset) {
{
var groupCollection = section.Items.ExtractGroupedColumns(); var groupCollection = section.Items.ExtractGroupedColumns();
base.DataNavigator.Fill(groupCollection); base.DataNavigator.Fill(groupCollection);
base.FireSectionRendering(section); base.FireSectionRendering(section);
ExporterCollection list = StandardPrinter.ConvertPlainCollection(groupCollection,offset); ExporterCollection list = StandardPrinter.ConvertPlainCollection(groupCollection,offset);
StandardPrinter.EvaluateRow(base.Evaluator,list); // StandardPrinter.EvaluateRow(base.Evaluator,list);
mylist.AddRange(list); mylist.AddRange(list);
AfterConverting (section); AfterConverting (section,list);
return new Point (leftPos,offset.Y + groupCollection[0].Size.Height + 20 + (3 *GlobalValues.GapBetweenContainer)); 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) private Point ConvertGroupChilds(ExporterCollection mylist, BaseSection section, ISimpleContainer simpleContainer, int defaultLeftPos, Point currentPosition)
{ {
base.DataNavigator.FillChild(simpleContainer.Items); base.DataNavigator.FillChild(simpleContainer.Items);
PrepareContainerForConverting(simpleContainer); PrepareContainerForConverting(section,simpleContainer);
base.FireSectionRendering(section); // base.FireSectionRendering(section);
Point curPos = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition); Point curPos = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition);
StandardPrinter.EvaluateRow(base.Evaluator,mylist); // StandardPrinter.EvaluateRow(base.Evaluator,mylist);
AfterConverting (section); AfterConverting (section,mylist);
return curPos; return curPos;
} }
@ -157,15 +233,23 @@ namespace ICSharpCode.Reports.Core.Exporter
private Point ConvertStandardRow(ExporterCollection mylist, BaseSection section, ISimpleContainer simpleContainer, int defaultLeftPos, Point currentPosition) private Point ConvertStandardRow(ExporterCollection mylist, BaseSection section, ISimpleContainer simpleContainer, int defaultLeftPos, Point currentPosition)
{ {
base.FillRow(simpleContainer); base.FillRow(simpleContainer);
PrepareContainerForConverting(simpleContainer); PrepareContainerForConverting(section,simpleContainer);
base.FireSectionRendering(section); // base.FireSectionRendering(section);
Point curPos = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition); Point curPos = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition);
StandardPrinter.EvaluateRow(base.Evaluator,mylist); // StandardPrinter.EvaluateRow(base.Evaluator,mylist);
AfterConverting (section); AfterConverting (section,mylist);
return curPos; 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) private static void ShouldDrawBorder (BaseSection section,ExporterCollection list)
{ {

2
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); 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)) { if (PrintHelper.IsPageFull(new Rectangle(new Point (simpleContainer.Location.X,currentPosition.Y),simpleContainer.Size),base.SectionBounds)) {
base.FirePageFull(mylist); base.FirePageFull(mylist);

6
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.FillRow(simpleContainer);
base.PrepareContainerForConverting(simpleContainer); // base.PrepareContainerForConverting(simpleContainer);
//
base.FireSectionRendering(section); // base.FireSectionRendering(section);
currentPosition = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition); currentPosition = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition);

Loading…
Cancel
Save