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 4f8bba4d8e..69c4c652c2 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
@@ -145,6 +145,7 @@
Component
+
Component
@@ -170,7 +171,7 @@
Component
-
+
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupFooter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupFooter.cs
new file mode 100644
index 0000000000..bb8eade19a
--- /dev/null
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupFooter.cs
@@ -0,0 +1,22 @@
+/*
+ * Created by SharpDevelop.
+ * User: Peter Forstmeier
+ * Date: 07.11.2010
+ * Time: 19:33
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+using System;
+
+namespace ICSharpCode.Reports.Addin
+{
+ ///
+ /// Description of BaseGroupFooter.
+ ///
+ public class GroupFooter:BaseGroupedRow
+ {
+ public GroupFooter()
+ {
+ }
+ }
+}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupedRow.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupeHeader.cs
similarity index 99%
rename from src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupedRow.cs
rename to src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupeHeader.cs
index 105c396c2a..57f51f2b86 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupedRow.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupeHeader.cs
@@ -22,6 +22,7 @@ namespace ICSharpCode.Reports.Addin
TypeDescriptor.AddProvider(new GroupedRowTypeProvider(), typeof(BaseGroupedRow));
}
+
[Category("Behavior")]
public bool PageBreakOnGroupChange {get;set;}
}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/AbstractLayout.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/AbstractLayout.cs
index 181e4e4f06..e4b839d24b 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/AbstractLayout.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/AbstractLayout.cs
@@ -77,7 +77,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
item.Location = p;
}
-
+
protected static void AdjustContainer (ISimpleContainer parent,
ICSharpCode.Reports.Core.BaseReportItem item)
{
@@ -92,9 +92,9 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
#region HeaderColumns
- protected static ICSharpCode.Reports.Core.BaseRowItem CreateRowWithTextColumns(ISimpleContainer parent,ReportItemCollection items)
+ protected ICSharpCode.Reports.Core.BaseRowItem CreateRowWithTextColumns(ISimpleContainer parent)
{
- ReportItemCollection colDetail = AbstractLayout.HeaderColumnsFromReportItems(items);
+ ReportItemCollection colDetail = AbstractLayout.HeaderColumnsFromReportItems(ReportItems);
ICSharpCode.Reports.Core.BaseRowItem row = new ICSharpCode.Reports.Core.BaseRowItem();
AdjustContainer(parent,row);
@@ -136,15 +136,15 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
#endregion
- protected ReportItemCollection AddItemsToContainer (ReportItemCollection items)
+ protected ReportItemCollection AddItemsToContainer ()
{
int locationX = GlobalValues.ControlMargins.Left;
- var minCtrlWidth = CalculateControlWidth(ParentItem,items);
+ var minCtrlWidth = CalculateControlWidth(ParentItem,ReportItems);
var col = new ReportItemCollection();
- foreach (var ir in items) {
+ foreach (var ir in ReportItems) {
ir.Location = new Point(locationX,GlobalValues.ControlMargins.Top);
col.Add(ir);
locationX += minCtrlWidth;
@@ -155,7 +155,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
protected static int CalculateControlWidth(ISimpleContainer row, ReportItemCollection colDetail)
{
- return row.Size.Width / colDetail.Count;
+ return row.Size.Width / colDetail.Count;
}
@@ -179,12 +179,31 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
return groupHeader;
}
+
+ protected ICSharpCode.Reports.Core.GroupFooter CreateFooter (Point footerLocation)
+ {
+ ICSharpCode.Reports.Core.GroupFooter groupFooter = new ICSharpCode.Reports.Core.GroupFooter();
+ groupFooter.Location = footerLocation;
+ groupFooter.Size = new Size (300,30);
+// groupFooter.Items.Add(dataItem);
+ return groupFooter;
+ }
+
+
+ protected void ConfigureDetails (Point detailLocation,Size detailSize)
+ {
+ ParentItem.Location = detailLocation;
+ ParentItem.Size = detailSize;
+ }
+
#endregion
protected ReportModel ReportModel {get; private set;}
-
+
protected ISimpleContainer ParentItem {get;set;}
+ protected ReportItemCollection ReportItems {get;set;}
+
}
}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/ListLayout.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/ListLayout.cs
index f70730169f..1bb673c857 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/ListLayout.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/ListLayout.cs
@@ -15,12 +15,10 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
public class ListLayout : AbstractLayout
{
- ReportItemCollection reportItems;
-
-
+
public ListLayout(ReportModel reportModel,ReportItemCollection reportItemCollection):base(reportModel)
{
- this.reportItems = reportItemCollection;
+ base.ReportItems = reportItemCollection;
ICSharpCode.Reports.Core.BaseRowItem row = new ICSharpCode.Reports.Core.BaseRowItem();
AdjustContainer(base.ReportModel.DetailSection,row);
base.ParentItem = row;
@@ -33,8 +31,8 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
public override void CreatePageHeader()
{
base.CreatePageHeader();
- ICSharpCode.Reports.Core.BaseRowItem row = CreateRowWithTextColumns(base.ReportModel.PageHeader,
- this.reportItems);
+ ICSharpCode.Reports.Core.BaseRowItem row = CreateRowWithTextColumns(base.ReportModel.PageHeader);
+
AdjustContainer(ParentItem,row);
base.ReportModel.PageHeader.Items.Add(row);
}
@@ -45,25 +43,43 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
if (section == null) {
throw new ArgumentNullException("section");
}
+ Size detailSize = Size.Empty;
+ Size itemSize = Size.Empty;
if (base.ReportModel.ReportSettings.GroupColumnsCollection.Count > 0)
{
var groupheader = base.CreateGroupHeader(new Point (GlobalValues.ControlMargins.Left,GlobalValues.ControlMargins.Top));
-
base.ReportModel.DetailSection.Items.Add(groupheader);
- ParentItem.Location = new Point(ParentItem.Location.X,50);
- ParentItem.Size = new Size(ParentItem.Size.Width,40);
- section.Size = new Size(section.Size.Width,90);
+ // Detail
+ itemSize = CreateDetail();
+ detailSize = new Size(ParentItem.Size.Width,itemSize.Height + GlobalValues.ControlMargins.Top + GlobalValues.ControlMargins.Bottom);
+
+
+ // GroupFooter
+ var groupFooter = base.CreateFooter(new Point(GlobalValues.ControlMargins.Left,80));
+ base.ReportModel.DetailSection.Items.Add(groupFooter);
+ section.Size = new Size(section.Size.Width,125);
}
-
- var items = base.AddItemsToContainer(this.reportItems);
- ParentItem.Items.AddRange(items);
- ParentItem.Size = new Size(ParentItem.Size.Width,items[0].Size.Height + GlobalValues.ControlMargins.Top + GlobalValues.ControlMargins.Bottom);
+ else
+ {
+ itemSize = CreateDetail();
+ detailSize = new Size(ParentItem.Size.Width,itemSize.Height + GlobalValues.ControlMargins.Top + GlobalValues.ControlMargins.Bottom);
+ section.Size = new Size(section.Size.Width,ParentItem.Size.Height + GlobalValues.ControlMargins.Top + GlobalValues.ControlMargins.Bottom);
+ }
+ base.ConfigureDetails ( new Point(ParentItem.Location.X,45),detailSize);
section.Items.Add(ParentItem as BaseReportItem);
}
+
+ Size CreateDetail()
+ {
+ var items = base.AddItemsToContainer();
+ ParentItem.Items.AddRange(items);
+ return items[0].Size;
+ }
+
#endregion
}
}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/TableLayout.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/TableLayout.cs
index d703c69ca9..ded2a68d45 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/TableLayout.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/TableLayout.cs
@@ -14,12 +14,10 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
public class TableLayout: AbstractLayout
{
- ReportItemCollection reportItems;
-
public TableLayout(ReportModel reportModel,ReportItemCollection reportItemCollection):base(reportModel)
{
- this.reportItems = reportItemCollection;
+ ReportItems = reportItemCollection;
}
@@ -39,62 +37,76 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
System.Drawing.Printing.Margins margin = GlobalValues.ControlMargins;
ICSharpCode.Reports.Core.BaseTableItem table = new ICSharpCode.Reports.Core.BaseTableItem();
+ ICSharpCode.Reports.Core.BaseRowItem detailRow = new ICSharpCode.Reports.Core.BaseRowItem();
+
table.Name = "Table1";
+ base.ParentItem = table;
AdjustContainer(base.ReportModel.DetailSection,table);
base.ReportModel.DetailSection.Items.Add(table);
- base.ParentItem = table;
-
- ICSharpCode.Reports.Core.BaseRowItem headerRow = CreateRowWithTextColumns(ParentItem, this.reportItems);
- ParentItem.Items.Add (headerRow);
+ ICSharpCode.Reports.Core.BaseRowItem headerRow = CreateRowWithTextColumns(ParentItem);
+ ParentItem.Items.Add (headerRow);
Point insertLocation = new Point (margin.Left,headerRow.Location.Y + headerRow.Size.Height + margin.Bottom + margin.Top);
- if (base.ReportModel.ReportSettings.GroupColumnsCollection.Count > 0) {
+ if (base.ReportModel.ReportSettings.GroupColumnsCollection.Count > 0) {
+
+ //Groupheader
var groupHeader = base.CreateGroupHeader(insertLocation);
ParentItem.Items.Add(groupHeader);
insertLocation = new Point(margin.Left,insertLocation.Y + groupHeader.Size.Height + margin.Bottom + margin.Top);
+
+ //Detail
+ CreateDetail(detailRow,insertLocation);
+ ParentItem.Items.Add (detailRow);
+
+ // GroupFooter
+ var groupFooter = base.CreateFooter(new Point(margin.Left,130));
+ ParentItem.Items.Add(groupFooter);
+
+ }
+ else
+ {
+ CreateDetail(detailRow,insertLocation);
+ ParentItem.Items.Add (detailRow);
}
- //Insert details allways
-
- ICSharpCode.Reports.Core.BaseRowItem detailRow = new ICSharpCode.Reports.Core.BaseRowItem();
+ CalculateContainerSize();
+ section.Size = new Size (section.Size.Width,ParentItem.Size.Height + margin.Top + margin.Bottom);
+ }
+
+
+ void CreateDetail (ICSharpCode.Reports.Core.BaseRowItem detailRow,Point insertLocation)
+ {
AdjustContainer (ParentItem,detailRow);
-
detailRow.Location = insertLocation;
detailRow.Size = new Size(detailRow.Size.Width,30);
-
- int defX = AbstractLayout.CalculateControlWidth(detailRow,reportItems);
+ int defX = AbstractLayout.CalculateControlWidth(detailRow,ReportItems);
- int startX = margin.Left;
+ int startX = GlobalValues.ControlMargins.Left;
- foreach (ICSharpCode.Reports.Core.BaseReportItem ir in this.reportItems)
+ foreach (ICSharpCode.Reports.Core.BaseReportItem ir in ReportItems)
{
- Point np = new Point(startX,margin.Top);
+ Point np = new Point(startX,GlobalValues.ControlMargins.Top);
startX += defX;
ir.Location = np;
ir.Parent = detailRow;
detailRow.Items.Add(ir);
}
-
- ParentItem.Items.Add (detailRow);
- ParentItem.Size = CalculateContainerSize(ParentItem);
- section.Size = new Size (section.Size.Width,ParentItem.Size.Height + margin.Top + margin.Bottom);
}
- private Size CalculateContainerSize(ISimpleContainer container)
+ private void CalculateContainerSize()
{
int h = GlobalValues.ControlMargins.Top;
- foreach (ICSharpCode.Reports.Core.BaseReportItem item in container.Items)
+ foreach (ICSharpCode.Reports.Core.BaseReportItem item in ParentItem.Items)
{
h = h + item.Size.Height + GlobalValues.ControlMargins.Bottom;
}
h = h + 3*GlobalValues.ControlMargins.Bottom;
-
- return new Size (container.Size.Width,h);
+ ParentItem.Size = new Size (ParentItem.Size.Width,h);
}
}
}
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 dd2bbe243c..c9ce298065 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
@@ -67,19 +67,21 @@ namespace ICSharpCode.Reports.Addin
tb.DisplayName = ResourceService.GetString("SharpReport.Toolbar.DataRow");
sideTab.Items.Add(new SideTabItemDesigner(tb));
- /*
- //Group
- tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseGroupItem));
- tb.Bitmap = WinFormsResourceService.GetBitmap("Icons.16x16.SharpQuery.Table");
- tb.DisplayName = "SimpleGroupItem";
- sideTab.Items.Add(new SideTabItemDesigner(tb));
- */
+
//GroupHeader
tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseGroupedRow));
tb.Bitmap = WinFormsResourceService.GetBitmap("Icons.16x16.SharpQuery.Table");
- tb.DisplayName = "GroupHeaderRow";
+ tb.DisplayName = "GroupHeader";
+ sideTab.Items.Add(new SideTabItemDesigner(tb));
+
+
+ //GroupFooter
+ tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.GroupFooter));
+ tb.Bitmap = WinFormsResourceService.GetBitmap("Icons.16x16.SharpQuery.Table");
+ tb.DisplayName = "GroupFooter";
sideTab.Items.Add(new SideTabItemDesigner(tb));
+
//BaseTable
tb.Bitmap = WinFormsResourceService.GetBitmap("Icons.16x16.SharpQuery.Table");
tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseTableItem));
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 a37e93aa74..08943790e7 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
@@ -90,6 +90,7 @@
+
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGroupeFooter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGroupeFooter.cs
new file mode 100644
index 0000000000..a8b1fae0b3
--- /dev/null
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGroupeFooter.cs
@@ -0,0 +1,22 @@
+/*
+ * Created by SharpDevelop.
+ * User: Peter Forstmeier
+ * Date: 07.11.2010
+ * Time: 19:44
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+using System;
+
+namespace ICSharpCode.Reports.Core
+{
+ ///
+ /// Description of BaseGroupeFooter.
+ ///
+ public class GroupFooter:BaseGroupItem
+ {
+ public GroupFooter()
+ {
+ }
+ }
+}