Browse Source

Cleanup Wizard Layouts, ISimpleContainer in BaseSection.cs

pull/2/head
peterforstmeier 15 years ago
parent
commit
0f2a8ae522
  1. 60
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/AbstractLayout.cs
  2. 17
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/ListLayout.cs
  3. 25
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/TableLayout.cs
  4. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseSection.cs

60
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/AbstractLayout.cs

@ -15,8 +15,6 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
public class AbstractLayout public class AbstractLayout
{ {
ISimpleContainer parentItem;
public AbstractLayout(ReportModel reportModel) public AbstractLayout(ReportModel reportModel)
{ {
if (reportModel == null) { if (reportModel == null) {
@ -35,11 +33,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
this.ReportModel.ReportHeader.Items.Add(textItem); this.ReportModel.ReportHeader.Items.Add(textItem);
} }
public virtual void SetParent (ISimpleContainer parentItem)
{
this.parentItem = parentItem;
}
public virtual void CreatePageHeader () public virtual void CreatePageHeader ()
{ {
} }
@ -83,8 +77,8 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
item.Location = p; item.Location = p;
} }
protected static void AdjustContainer (ICSharpCode.Reports.Core.BaseReportItem parent, protected static void AdjustContainer (ISimpleContainer parent,
ICSharpCode.Reports.Core.BaseReportItem item) ICSharpCode.Reports.Core.BaseReportItem item)
{ {
item.Size = new Size (parent.Size.Width - GlobalValues.ControlMargins.Left - GlobalValues.ControlMargins.Right, item.Size = new Size (parent.Size.Width - GlobalValues.ControlMargins.Left - GlobalValues.ControlMargins.Right,
@ -92,13 +86,13 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
item.Location = new Point(GlobalValues.ControlMargins.Left, item.Location = new Point(GlobalValues.ControlMargins.Left,
GlobalValues.ControlMargins.Top); GlobalValues.ControlMargins.Top);
item.Parent = parent; item.Parent = parent as BaseReportItem;
} }
#region HeaderColumns #region HeaderColumns
protected static ICSharpCode.Reports.Core.BaseRowItem CreateRowWithTextColumns(BaseReportItem parent,ReportItemCollection items) protected static ICSharpCode.Reports.Core.BaseRowItem CreateRowWithTextColumns(ISimpleContainer parent,ReportItemCollection items)
{ {
ReportItemCollection colDetail = AbstractLayout.HeaderColumnsFromReportItems(items); ReportItemCollection colDetail = AbstractLayout.HeaderColumnsFromReportItems(items);
@ -106,11 +100,12 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
AdjustContainer(parent,row); AdjustContainer(parent,row);
int defY = parent.Location.Y + GlobalValues.ControlMargins.Top; int defY = parent.Location.Y + GlobalValues.ControlMargins.Top;
int defX = row.Size.Width / colDetail.Count; int ctrlWidth = CalculateControlWidth(row,colDetail);
int startX = parent.Location.X + GlobalValues.ControlMargins.Left; int startX = parent.Location.X + GlobalValues.ControlMargins.Left;
foreach (ICSharpCode.Reports.Core.BaseTextItem ir in colDetail) { foreach (ICSharpCode.Reports.Core.BaseTextItem ir in colDetail) {
Point np = new Point(startX,defY); Point np = new Point(startX,defY);
startX += defX; startX += ctrlWidth;
ir.Location = np; ir.Location = np;
ir.Parent = row; ir.Parent = row;
row.Items.Add(ir); row.Items.Add(ir);
@ -119,6 +114,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
} }
private static ReportItemCollection HeaderColumnsFromReportItems(ReportItemCollection reportItemCollection) private static ReportItemCollection HeaderColumnsFromReportItems(ReportItemCollection reportItemCollection)
{ {
if (reportItemCollection == null) { if (reportItemCollection == null) {
@ -138,35 +134,44 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
} }
#endregion #endregion
/*
protected static void AddItemsToSection (ICSharpCode.Reports.Core.BaseSection section,ReportItemCollection items) protected static ReportItemCollection AddItemsToSection (ICSharpCode.Reports.Core.BaseSection section,ReportItemCollection items)
{ {
int defY = section.Location.Y + GlobalValues.ControlMargins.Top; int defY = section.Location.Y + GlobalValues.ControlMargins.Top;
int defX = section.Size.Width / items.Count; int ctrlWidth = CalculateControlWidth(section,items);
int startX = section.Location.X + GlobalValues.ControlMargins.Left; int startX = section.Location.X + GlobalValues.ControlMargins.Left;
var vv = new ReportItemCollection();
foreach (var ir in items) { foreach (var ir in items) {
Point np = new Point(startX,defY); Point np = new Point(startX,defY);
startX += defX; startX += ctrlWidth;
ir.Location = np; ir.Location = np;
section.Items.Add(ir); // section.Items.Add(ir);
vv.Add(ir);
} }
return vv;
} }
*/
protected ReportItemCollection AddItemsToContainer (ReportItemCollection items)
protected void AddItemsToContainer (ICSharpCode.Reports.Core.BaseSection section,ReportItemCollection items)
{ {
section.Items.Add(this.parentItem as BaseReportItem);
int locationY = 10; int locationY = 10;
int locationX = this.parentItem.Location.X + GlobalValues.ControlMargins.Left; int locationX = this.ParentItem.Location.X + GlobalValues.ControlMargins.Left;
int minCtrlWidth = this.parentItem.Size.Width / items.Count; var minCtrlWidth = CalculateControlWidth(ParentItem,items);
var col = new ReportItemCollection();
foreach (var ir in items) { foreach (var ir in items) {
ir.Location = new Point(locationX,locationY); ir.Location = new Point(locationX,locationY);
this.parentItem.Items.Add(ir); col.Add(ir);
locationX += minCtrlWidth; locationX += minCtrlWidth;
} }
return col;
}
protected static int CalculateControlWidth(ISimpleContainer row, ReportItemCollection colDetail)
{
return row.Size.Width / colDetail.Count;
} }
@ -191,12 +196,11 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
} }
#endregion #endregion
protected ReportModel ReportModel {get; private set;} protected ReportModel ReportModel {get; private set;}
protected ISimpleContainer ParentItem { protected ISimpleContainer ParentItem {get;set;}
get { return parentItem; }
}
} }
} }

17
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/ListLayout.cs

@ -23,7 +23,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
this.reportItems = reportItemCollection; this.reportItems = reportItemCollection;
ICSharpCode.Reports.Core.BaseRowItem row = new ICSharpCode.Reports.Core.BaseRowItem(); ICSharpCode.Reports.Core.BaseRowItem row = new ICSharpCode.Reports.Core.BaseRowItem();
AdjustContainer(base.ReportModel.DetailSection,row); AdjustContainer(base.ReportModel.DetailSection,row);
base.SetParent(row); base.ParentItem = row;
} }
@ -45,7 +45,9 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
throw new ArgumentNullException("section"); throw new ArgumentNullException("section");
} }
if (base.ReportModel.ReportSettings.GroupColumnsCollection.Count > 0) { if (base.ReportModel.ReportSettings.GroupColumnsCollection.Count > 0)
{
var groupheader = base.CreateGroupHeader(new Point (5,10)); var groupheader = base.CreateGroupHeader(new Point (5,10));
base.ReportModel.DetailSection.Items.Add(groupheader); base.ReportModel.DetailSection.Items.Add(groupheader);
@ -56,11 +58,16 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
} }
if (base.ParentItem != null) { if (base.ParentItem != null) {
base.AddItemsToContainer(base.ReportModel.DetailSection,this.reportItems); var items = base.AddItemsToContainer(this.reportItems);
ParentItem.Items.AddRange(items);
ParentItem.Size = new Size(ParentItem.Size.Width,40); ParentItem.Size = new Size(ParentItem.Size.Width,40);
section.Items.Add(ParentItem as BaseReportItem);
} }
else{ else
AddItemsToSection (base.ReportModel.DetailSection,this.reportItems); {
//var items1 = AddItemsToSection (base.ReportModel.DetailSection,this.reportItems);
//AddItemsToSection (base.ReportModel.DetailSection,this.reportItems);
//section.Items.AddRange(items1);
} }
} }

25
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/TableLayout.cs

@ -23,7 +23,6 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
} }
public override void CreatePageHeader() public override void CreatePageHeader()
{ {
base.CreatePageHeader(); base.CreatePageHeader();
@ -41,30 +40,30 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
ICSharpCode.Reports.Core.BaseTableItem table = new ICSharpCode.Reports.Core.BaseTableItem(); ICSharpCode.Reports.Core.BaseTableItem table = new ICSharpCode.Reports.Core.BaseTableItem();
table.Name = "Table1"; table.Name = "Table1";
AdjustContainer(base.ReportModel.DetailSection,table); AdjustContainer(base.ReportModel.DetailSection,table);
base.ReportModel.DetailSection.Items.Add(table);
base.ParentItem = table;
ICSharpCode.Reports.Core.BaseRowItem headerRow = CreateRowWithTextColumns(table, ICSharpCode.Reports.Core.BaseRowItem headerRow = CreateRowWithTextColumns(ParentItem, this.reportItems);
this.reportItems);
Point insertLocation = new Point (margin.Left,headerRow.Location.Y + headerRow.Size.Height + margin.Bottom + margin.Top); 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) {
var groupHeader = base.CreateGroupHeader(insertLocation); var groupHeader = base.CreateGroupHeader(insertLocation);
table.Items.Add(groupHeader); ParentItem.Items.Add(groupHeader);
insertLocation = new Point(margin.Left,insertLocation.Y + groupHeader.Size.Height + margin.Bottom + margin.Top); insertLocation = new Point(margin.Left,insertLocation.Y + groupHeader.Size.Height + margin.Bottom + margin.Top);
} }
ICSharpCode.Reports.Core.BaseRowItem detailRow = new ICSharpCode.Reports.Core.BaseRowItem(); ICSharpCode.Reports.Core.BaseRowItem detailRow = new ICSharpCode.Reports.Core.BaseRowItem();
AdjustContainer (table,detailRow); AdjustContainer (ParentItem,detailRow);
detailRow.Location = insertLocation; detailRow.Location = insertLocation;
int defX = detailRow.Size.Width / this.reportItems.Count; int defX = AbstractLayout.CalculateControlWidth(detailRow,reportItems);
int startX = detailRow.Location.X + margin.Left; int startX = detailRow.Location.X + margin.Left;
@ -80,13 +79,13 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
insertLocation = new Point(margin.Left,insertLocation.Y + detailRow.Size.Height + margin.Bottom + margin.Top); insertLocation = new Point(margin.Left,insertLocation.Y + detailRow.Size.Height + margin.Bottom + margin.Top);
table.Items.Add (headerRow); ParentItem.Items.Add (headerRow);
table.Items.Add (detailRow); ParentItem.Items.Add (detailRow);
table.Size = CalculateContainerSize(table,margin); ParentItem.Size = CalculateContainerSize(ParentItem,margin);
section.Size = new Size (section.Size.Width,table.Size.Height + margin.Top + margin.Bottom); section.Size = new Size (section.Size.Width,ParentItem.Size.Height + margin.Top + margin.Bottom);
base.ReportModel.DetailSection.Items.Add(table);
} }

2
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseSection.cs

@ -16,7 +16,7 @@ using ICSharpCode.Reports.Core.Interfaces;
namespace ICSharpCode.Reports.Core namespace ICSharpCode.Reports.Core
{ {
public class BaseSection : BaseReportItem { public class BaseSection : BaseReportItem,ISimpleContainer {
private bool pageBreakAfter; private bool pageBreakAfter;
private ReportItemCollection items; private ReportItemCollection items;

Loading…
Cancel
Save