Browse Source
git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/reports@6274 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61pull/1/head
9 changed files with 313 additions and 38 deletions
@ -0,0 +1,164 @@ |
|||||||
|
/* |
||||||
|
* Erstellt mit SharpDevelop. |
||||||
|
* Benutzer: Peter |
||||||
|
* Datum: 02.01.2009 |
||||||
|
* Zeit: 17:33 |
||||||
|
* |
||||||
|
* Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern. |
||||||
|
*/ |
||||||
|
using System; |
||||||
|
using System.Collections.Generic; |
||||||
|
using System.Drawing; |
||||||
|
|
||||||
|
using ICSharpCode.Reports.Core.BaseClasses.Printing; |
||||||
|
using ICSharpCode.Reports.Core.Interfaces; |
||||||
|
|
||||||
|
namespace ICSharpCode.Reports.Core.Exporter |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// Description of RowConverter.
|
||||||
|
/// </summary>
|
||||||
|
///
|
||||||
|
|
||||||
|
public class GroupedRowConverter:BaseConverter |
||||||
|
{ |
||||||
|
|
||||||
|
private BaseReportItem parent; |
||||||
|
|
||||||
|
public GroupedRowConverter(IDataNavigator dataNavigator, |
||||||
|
ExporterPage singlePage, |
||||||
|
|
||||||
|
ILayouter layouter):base(dataNavigator,singlePage,layouter) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public override ExporterCollection Convert(BaseReportItem parent, BaseReportItem item) |
||||||
|
{ |
||||||
|
if (parent == null) { |
||||||
|
throw new ArgumentNullException("parent"); |
||||||
|
} |
||||||
|
if (item == null) { |
||||||
|
throw new ArgumentNullException("item"); |
||||||
|
} |
||||||
|
ISimpleContainer simpleContainer = item as ISimpleContainer; |
||||||
|
this.parent = parent; |
||||||
|
|
||||||
|
simpleContainer.Parent = parent; |
||||||
|
|
||||||
|
PrintHelper.AdjustParent(parent,simpleContainer.Items); |
||||||
|
if (PrintHelper.IsTextOnlyRow(simpleContainer)) { |
||||||
|
ExporterCollection myList = new ExporterCollection(); |
||||||
|
|
||||||
|
base.BaseConvert (myList,simpleContainer,parent.Location.X, |
||||||
|
new Point(base.SectionBounds.DetailStart.X,base.SectionBounds.DetailStart.Y)); |
||||||
|
|
||||||
|
|
||||||
|
return myList; |
||||||
|
} else { |
||||||
|
return this.ConvertDataRow(simpleContainer); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private ExporterCollection 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); |
||||||
|
section.Size = this.SectionBounds.DetailSectionRectangle.Size; |
||||||
|
base.SaveSize(section.Items[0].Size); |
||||||
|
Color color = ((BaseReportItem)simpleContainer).BackColor; |
||||||
|
|
||||||
|
if (base.DataNavigator.HasChildren) |
||||||
|
{ |
||||||
|
TestDecorateElement(simpleContainer); |
||||||
|
} |
||||||
|
|
||||||
|
base.FillRow(simpleContainer); |
||||||
|
|
||||||
|
TestPrepareContainerForConverting(simpleContainer); |
||||||
|
|
||||||
|
base.FireSectionRendering(section); |
||||||
|
|
||||||
|
currentPosition = base.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition); |
||||||
|
|
||||||
|
TestAfterConverting (mylist,section); |
||||||
|
|
||||||
|
if (base.DataNavigator.HasChildren) { |
||||||
|
|
||||||
|
((BaseReportItem)simpleContainer).BackColor = color; |
||||||
|
base.DataNavigator.SwitchGroup(); |
||||||
|
do { |
||||||
|
((BaseReportItem)simpleContainer).BackColor = color; |
||||||
|
|
||||||
|
base.DataNavigator.FillChild(simpleContainer.Items); |
||||||
|
TestPrepareContainerForConverting(simpleContainer); |
||||||
|
|
||||||
|
base.FireSectionRendering(section); |
||||||
|
|
||||||
|
currentPosition = base.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition); |
||||||
|
|
||||||
|
TestAfterConverting (mylist,section); |
||||||
|
} |
||||||
|
while ( base.DataNavigator.ChildMoveNext()); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
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; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
void TestPrepareContainerForConverting(ISimpleContainer simpleContainer) |
||||||
|
{ |
||||||
|
base.LayoutRow(simpleContainer); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
void TestAfterConverting (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) |
||||||
|
{ |
||||||
|
BaseReportItem i = simpleContainer as BaseReportItem; |
||||||
|
var retval = i.BackColor; |
||||||
|
i.BackColor = System.Drawing.Color.LightGray; |
||||||
|
return retval; |
||||||
|
} |
||||||
|
|
||||||
|
void ShouldDrawBorder (BaseSection section,ExporterCollection list) |
||||||
|
{ |
||||||
|
if (section.DrawBorder == true) { |
||||||
|
BaseRectangleItem br = BasePager.CreateDebugItem (section); |
||||||
|
BaseExportColumn bec = br.CreateExportColumn(); |
||||||
|
bec.StyleDecorator.Location = section.Location; |
||||||
|
list.Insert(0,bec); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue