Browse Source

Runtime modifiable Reports,

create TestReport to read Event log from machine

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@5651 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Peter Forstmeier 16 years ago
parent
commit
8de6e87f57
  1. 2
      samples/SharpDevelopReports/src/ReportSamples.sln
  2. 5
      samples/SharpDevelopReports/src/SharpReportSamples/ContributorsList.cs
  3. 149
      samples/SharpDevelopReports/src/SharpReportSamples/EventLogger.cs
  4. 22
      samples/SharpDevelopReports/src/SharpReportSamples/MainForm.Designer.cs
  5. 94
      samples/SharpDevelopReports/src/SharpReportSamples/MainForm.cs
  6. 2
      samples/SharpDevelopReports/src/SharpReportSamples/SharpReportSamples.csproj
  7. 11
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDefinitionDeserializer.cs
  8. 19
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Addin/Project/ReportItems/BaseImageItem.cs
  9. 1
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj
  10. 47
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseItems/BaseSection.cs
  11. 5
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseItems/Graphics/BaseImageItem.cs
  12. 5
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/CollectionStrategy.cs
  13. 3
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exceptions/MissingSectionException.cs
  14. 41
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exceptions/WrongSectionException.cs
  15. 4
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/ReportViewer/ReportViewer.cs
  16. 143
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/BaseItems/BaseSectionFixture.cs
  17. 1
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ICSharpCode.Reports.Core.Test.csproj

2
samples/SharpDevelopReports/src/ReportSamples.sln

@ -1,7 +1,7 @@
 
Microsoft Visual Studio Solution File, Format Version 10.00 Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008 # Visual Studio 2008
# SharpDevelop 3.2.0.5405 # SharpDevelop 3.2.0.5633
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpReportSamples", "SharpReportSamples\SharpReportSamples.csproj", "{BB5D34DA-3561-48B1-894A-46765C2A18C1}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpReportSamples", "SharpReportSamples\SharpReportSamples.csproj", "{BB5D34DA-3561-48B1-894A-46765C2A18C1}"
EndProject EndProject
Global Global

5
samples/SharpDevelopReports/src/SharpReportSamples/ContributorsList.cs

@ -17,10 +17,7 @@ namespace SharpReportSamples
/// </summary> /// </summary>
public class ContributorsReportData public class ContributorsReportData
{ {
/*
This list is by no means exhaustive:
Siegfried Pammer
*/
public static ContributorCollection CreateContributorsList () { public static ContributorCollection CreateContributorsList () {
ContributorCollection list = new ContributorCollection(); ContributorCollection list = new ContributorCollection();

149
samples/SharpDevelopReports/src/SharpReportSamples/EventLogger.cs

@ -0,0 +1,149 @@
/*
* Erstellt mit SharpDevelop.
* Benutzer: Peter Forstmeier
* Datum: 24.03.2010
* Zeit: 19:45
*
* Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern.
*/
using System;
using System.Collections;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Management;
using System.Reflection;
using System.Resources;
using System.Windows.Forms;
using ICSharpCode.Reports.Core;
//using System.Collections.Generic;
namespace SharpReportSamples
{
// public class EventList: List<EventLogEntry>{
// }
//
//
/// <summary>
/// Description of EventLogger.
/// </summary>
public class EventLogger
{
ImageList imageList ;
string fileName;
public EventLogger(string fileName)
{
this.fileName = fileName;
this.Run();
}
private void Run() {
EventLog ev = new EventLog();
ev.Log = "System";
ev.MachineName = "."; // Lokale Maschine
FillImageList();
// EventLog dosn't implement IList, so we have to convert it to the 'cheapest'
// IList implementaion
//
ArrayList ar = new ArrayList();
foreach (System.Diagnostics.EventLogEntry entry in ev.Entries)
{
if (entry.TimeWritten > DateTime.Now.AddDays(-1))
{
// Console.WriteLine ("{0} {1}",entry.TimeWritten,entry.Message);
ar.Add(entry);
}
}
this.EventLog = ar;
// ReportEngine engine = new ReportEngine();
// engine.SectionRendering += new EventHandler<SectionRenderEventArgs>(PushPrinting);
// engine.SectionRendered += new EventHandler<SectionRenderEventArgs>(PushPrinted);
// engine.PreviewPushDataReport(fileName,ar,null);
}
// using (var provider = ProfilingDataSQLiteProvider.FromFile("ProfilingSession.sdps"))
// var functions = provider.GetFunctions(0, provider.DataSets.Count - 1);
// foreach (CallTreeNode n in functions) Console.WriteLine("{0}: {1} calls, {2:f2}ms", n.Name, n.CallCount, n.TimeSpent);
private void filter (EventLog e)
{
/*
int i = 0;
foreach (System.Diagnostics.EventLogEntry entry in e.Entries)
{
if (entry.TimeWritten > DateTime.Now.AddDays(-1))
{
Console.WriteLine ("{0} {1}",entry.TimeWritten,entry.Message);
i++;
}
}
*/
//http://blog-mstechnology.blogspot.com/2009/08/filter-eventlog-entries-thru-c-code.html
/*
string SomeDateTime = "20100324000000.000000+000";
string Query = String.Format("SELECT * FROM Win32_NTLogEvent WHERE Logfile = 'Application' AND TimeGenerated > '{0}'", SomeDateTime);
ManagementObjectSearcher mos = new ManagementObjectSearcher(Query);
object o;
foreach (ManagementObject mo in mos.Get())
{
foreach (PropertyData pd in mo.Properties)
{
o = mo[pd.Name];
if (o != null)
{
// listBox1.Items.Add(String.Format("{0}: {1}", pd.Name,mo[pd.Name].ToString()));
}
}
}
*/
}
private void FillImageList() {
string ns = this.GetType().Namespace;
System.Console.WriteLine("{0}",ns);
Assembly a = Assembly.GetExecutingAssembly();
string [] resNames = a.GetManifestResourceNames();
foreach(string s in resNames)
{
System.Console.WriteLine("{0}",s);
}
this.imageList = new ImageList();
Stream imgStream = a.GetManifestResourceStream("SharpReportSamples.Resources.Error.png");
this.imageList.Images.Add(Image.FromStream(imgStream));
imgStream = a.GetManifestResourceStream("SharpReportSamples.Resources.Info.png");
this.imageList.Images.Add(Image.FromStream(imgStream));
imgStream = a.GetManifestResourceStream("SharpReportSamples.Resources.Warning.png");
this.imageList.Images.Add(Image.FromStream(imgStream));
System.Console.WriteLine("imagelist contains {0} images",this.imageList.Images.Count);
}
public ArrayList EventLog {get;set;}
public ImageList Images
{
get {return this.imageList;}
}
}
}

22
samples/SharpDevelopReports/src/SharpReportSamples/MainForm.Designer.cs generated

@ -40,11 +40,13 @@ namespace SharpReportSamples
System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("PullModel"); System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("PullModel");
System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("PushModel-IList"); System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("PushModel-IList");
System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("Provider Independent"); System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("Provider Independent");
System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("Sample Reports", new System.Windows.Forms.TreeNode[] { System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("Customized");
System.Windows.Forms.TreeNode treeNode6 = new System.Windows.Forms.TreeNode("Sample Reports", new System.Windows.Forms.TreeNode[] {
treeNode1, treeNode1,
treeNode2, treeNode2,
treeNode3, treeNode3,
treeNode4}); treeNode4,
treeNode5});
this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.treeView1 = new System.Windows.Forms.TreeView(); this.treeView1 = new System.Windows.Forms.TreeView();
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
@ -81,18 +83,20 @@ namespace SharpReportSamples
this.treeView1.Location = new System.Drawing.Point(10, 10); this.treeView1.Location = new System.Drawing.Point(10, 10);
this.treeView1.Margin = new System.Windows.Forms.Padding(5); this.treeView1.Margin = new System.Windows.Forms.Padding(5);
this.treeView1.Name = "treeView1"; this.treeView1.Name = "treeView1";
treeNode1.Name = "FormSheetItem"; treeNode1.Name = "FormSheetNode";
treeNode1.Text = "FormSheet"; treeNode1.Text = "FormSheet";
treeNode2.Name = "PullModelItem"; treeNode2.Name = "PullModelNode";
treeNode2.Text = "PullModel"; treeNode2.Text = "PullModel";
treeNode3.Name = "iListNode"; treeNode3.Name = "IListNode";
treeNode3.Text = "PushModel-IList"; treeNode3.Text = "PushModel-IList";
treeNode4.Name = "Knoten0"; treeNode4.Name = "ProviderIndependedNode";
treeNode4.Text = "Provider Independent"; treeNode4.Text = "Provider Independent";
treeNode5.Name = "Knoten0"; treeNode5.Name = "CustomizedNode";
treeNode5.Text = "Sample Reports"; treeNode5.Text = "Customized";
treeNode6.Name = "Customized";
treeNode6.Text = "Sample Reports";
this.treeView1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { this.treeView1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode5}); treeNode6});
this.treeView1.Size = new System.Drawing.Size(148, 444); this.treeView1.Size = new System.Drawing.Size(148, 444);
this.treeView1.TabIndex = 0; this.treeView1.TabIndex = 0;
this.treeView1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.TreeView1MouseDoubleClick); this.treeView1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.TreeView1MouseDoubleClick);

94
samples/SharpDevelopReports/src/SharpReportSamples/MainForm.cs

@ -28,6 +28,8 @@ namespace SharpReportSamples
private TreeNode pullNode; private TreeNode pullNode;
private TreeNode iListNode; private TreeNode iListNode;
private TreeNode providerIndependent; private TreeNode providerIndependent;
private TreeNode customized;
public MainForm() public MainForm()
{ {
@ -66,11 +68,13 @@ namespace SharpReportSamples
this.pullNode = this.treeView1.Nodes[0].Nodes[1]; this.pullNode = this.treeView1.Nodes[0].Nodes[1];
this.iListNode = this.treeView1.Nodes[0].Nodes[2]; this.iListNode = this.treeView1.Nodes[0].Nodes[2];
this.providerIndependent = this.treeView1.Nodes[0].Nodes[3]; this.providerIndependent = this.treeView1.Nodes[0].Nodes[3];
this.customized = this.treeView1.Nodes[0].Nodes[4];
AddNodesToTree (this.formNode,startPath + @"FormSheet\" ); AddNodesToTree (this.formNode,startPath + @"FormSheet\" );
AddNodesToTree (this.pullNode,startPath + @"PullModel\" ); AddNodesToTree (this.pullNode,startPath + @"PullModel\" );
AddNodesToTree (this.iListNode,startPath + @"IList\" ); AddNodesToTree (this.iListNode,startPath + @"IList\" );
AddNodesToTree (this.providerIndependent,startPath + @"ProviderIndependent\" ); AddNodesToTree (this.providerIndependent,startPath + @"ProviderIndependent\" );
AddNodesToTree (this.customized,startPath + @"Customized\" );
} }
@ -104,7 +108,8 @@ namespace SharpReportSamples
this.RunContributors(reportName); this.RunContributors(reportName);
} else if (s == "NoConnectionReport") { } else if (s == "NoConnectionReport") {
this.RunProviderIndependent(reportName); this.RunProviderIndependent(reportName);
} } else if (s =="Customized")
this.RunEventlogger(reportName);
else { else {
ReportParameters parameters = ReportEngine.LoadParameters(reportName); ReportParameters parameters = ReportEngine.LoadParameters(reportName);
@ -176,39 +181,82 @@ namespace SharpReportSamples
} }
//Try this to react to SectionrenderEvent,
/* ImageList imageList;
private void PushPrinting (object sender,SectionRenderEventArgs e)
private void RunEventlogger (string fileName)
{
EventLogger eLog = new EventLogger(fileName);
this.imageList = eLog.Images;
ReportModel model = ReportEngine.LoadReportModel(fileName);
IDataManager dataManager = DataManager.CreateInstance(eLog.EventLog,model.ReportSettings);
this.previewControl1.SectionRendering += PushPrinting;
this.previewControl1.PreviewLayoutChanged += delegate (object sender, EventArgs e)
{
this.previewControl1.RunReport(model,dataManager);
};
this.previewControl1.RunReport(model,dataManager);
}
//Handles SectionRenderEvent
private void PushPrinting (object sender, SectionRenderEventArgs e )
{ {
string sectionName = e.Section.Name;
switch (e.CurrentSection) { if (sectionName == ReportSectionNames.ReportHeader) {
case GlobalEnums.ReportSection.ReportHeader: Console.WriteLine("xx " + ReportSectionNames.ReportHeader);
break; }
else if (sectionName == ReportSectionNames.ReportPageHeader) {
Console.WriteLine("xx " +ReportSectionNames .ReportPageHeader);
}
case GlobalEnums.ReportSection.ReportPageHeader: else if (sectionName == ReportSectionNames.ReportDetail){
break;
BaseDataItem item = e.Section.FindItem("EntryType") as BaseDataItem;
if (item != null) {
string s = item.DBValue;
Image im = null;
if (s == "Information") {
im = this.imageList.Images[1];
} else if (s == "Warning") {
im = this.imageList.Images[2];
} else if (s == "Error")
{
im = this.imageList.Images[0];
}
case GlobalEnums.ReportSection.ReportDetail: if (im != null)
BaseRowItem ri = e.Section.Items[0] as BaseRowItem; {
if (ri != null) { BaseImageItem bi = e.Section.FindItem("BaseImageItem1") as BaseImageItem;
BaseDataItem r = (BaseDataItem)ri.Items.Find("unbound3"); if (bi != null) {
if (r != null) { bi.Image = im;
r.DBValue = "xxxxxxx";
} }
} }
}
}
break; else if (sectionName == ReportSectionNames.ReportPageFooter){
case GlobalEnums.ReportSection.ReportPageFooter: Console.WriteLine("xx " + ReportSectionNames.ReportPageFooter);
break; }
case GlobalEnums.ReportSection.ReportFooter: else if (sectionName == ReportSectionNames.ReportFooter){
break; Console.WriteLine("xx " + ReportSectionNames.ReportFooter);
}
default: else{
break; throw new WrongSectionException(sectionName);
} }
} }
*/
#endregion #endregion

2
samples/SharpDevelopReports/src/SharpReportSamples/SharpReportSamples.csproj

@ -43,6 +43,7 @@
<RequiredTargetFramework>3.5</RequiredTargetFramework> <RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference> </Reference>
<Reference Include="System.Drawing" /> <Reference Include="System.Drawing" />
<Reference Include="System.Management" />
<Reference Include="System.Windows.Forms" /> <Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="System.Xml.Linq"> <Reference Include="System.Xml.Linq">
@ -51,6 +52,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="ContributorsList.cs" /> <Compile Include="ContributorsList.cs" />
<Compile Include="EventLogger.cs" />
<Compile Include="MainForm.cs" /> <Compile Include="MainForm.cs" />
<Compile Include="MainForm.Designer.cs"> <Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon> <DependentUpon>MainForm.cs</DependentUpon>

11
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Addin/Project/DesignerBinding/ReportDefinitionDeserializer.cs

@ -1,11 +1,14 @@
using System; using System;
using System.ComponentModel;
using System.ComponentModel.Design; using System.ComponentModel.Design;
using System.IO; using System.IO;
using System.Windows.Forms; using System.Windows.Forms;
using System.Xml; using System.Xml;
using ICSharpCode.SharpDevelop;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.Reports.Core; using ICSharpCode.Reports.Core;
using ICSharpCode.Reports.Core.Interfaces;
using ICSharpCode.SharpDevelop;
namespace ICSharpCode.Reports.Addin namespace ICSharpCode.Reports.Addin
{ {
@ -85,8 +88,8 @@ namespace ICSharpCode.Reports.Addin
private static void Absolut2RelativePath (BaseSection section, string fileName) private static void Absolut2RelativePath (BaseSection section, string fileName)
{ {
foreach (Control item in section.Controls) { foreach (Control ctrl in section.Controls) {
BaseImageItem baseImageItem = item as BaseImageItem; BaseImageItem baseImageItem = ctrl as BaseImageItem;
if (baseImageItem != null) { if (baseImageItem != null) {
baseImageItem.ReportFileName = fileName; baseImageItem.ReportFileName = fileName;
@ -99,7 +102,7 @@ namespace ICSharpCode.Reports.Addin
Path.GetDirectoryName(baseImageItem.ImageFileName)); Path.GetDirectoryName(baseImageItem.ImageFileName));
baseImageItem.RelativeFileName = d + Path.DirectorySeparatorChar + Path.GetFileName(baseImageItem.ImageFileName); baseImageItem.RelativeFileName = d + Path.DirectorySeparatorChar + Path.GetFileName(baseImageItem.ImageFileName);
Console.WriteLine("Rel Filename {0}",baseImageItem.RelativeFileName); Console.WriteLine("Rel Filename {0}",baseImageItem.RelativeFileName);
} }
} }
} }

19
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Addin/Project/ReportItems/BaseImageItem.cs

@ -65,7 +65,11 @@ namespace ICSharpCode.Reports.Addin
if (this.scaleImageToSize) { if (this.scaleImageToSize) {
graphics.DrawImageUnscaled(this.Image,this.Location.X,this.Location.Y); graphics.DrawImageUnscaled(this.Image,this.Location.X,this.Location.Y);
} else { } else {
graphics.DrawImage(this.Image,this.ClientRectangle); Image im = this.image;
if (im != null) {
graphics.DrawImage(this.Image,this.ClientRectangle);
}
} }
} }
@ -95,7 +99,7 @@ namespace ICSharpCode.Reports.Addin
} }
private static Bitmap FakeImage(Size size) private static Bitmap FakeImage(Size size, string text)
{ {
Bitmap b = new Bitmap (size.Width,size.Height); Bitmap b = new Bitmap (size.Width,size.Height);
using (Graphics g = Graphics.FromImage (b)){ using (Graphics g = Graphics.FromImage (b)){
@ -103,7 +107,7 @@ namespace ICSharpCode.Reports.Addin
g.DrawRectangle (new Pen(Color.Black, 1), g.DrawRectangle (new Pen(Color.Black, 1),
1,1,size.Width -2,size.Height -2); 1,1,size.Width -2,size.Height -2);
g.DrawString("<Database>",GlobalValues.DefaultFont, g.DrawString(text,GlobalValues.DefaultFont,
new SolidBrush(Color.Gray), new SolidBrush(Color.Gray),
new RectangleF(2,2,size.Width,size.Height) ); new RectangleF(2,2,size.Width,size.Height) );
} }
@ -137,7 +141,7 @@ namespace ICSharpCode.Reports.Addin
public Image Image { public Image Image {
get { get {
if (this.imageSource == GlobalEnums.ImageSource.Database ) { if (this.imageSource == GlobalEnums.ImageSource.Database ) {
this.image = FakeImage(base.Size); this.image = FakeImage(base.Size,"<Database>");
} }
if (this.image != null) { if (this.image != null) {
return image; return image;
@ -163,19 +167,20 @@ namespace ICSharpCode.Reports.Addin
} }
[Browsable(false)] [Category("Image")]
public GlobalEnums.ImageSource ImageSource { public GlobalEnums.ImageSource ImageSource {
get { return imageSource; } get { return imageSource; }
set { imageSource = value; } set { imageSource = value; }
} }
[Category("Image from Database")] [Category("Image from Database")]
public string ColumnName { public string ColumnName {
get { return columnName; } get { return columnName; }
set { set {
columnName = value; columnName = value;
this.imageSource = GlobalEnums.ImageSource.Database;
} }
} }
@ -185,7 +190,6 @@ namespace ICSharpCode.Reports.Addin
get { return baseTableName; } get { return baseTableName; }
set { set {
baseTableName = value; baseTableName = value;
this.imageSource = GlobalEnums.ImageSource.Database;
} }
} }
@ -308,6 +312,7 @@ namespace ICSharpCode.Reports.Addin
prop = props.Find("BaseTableName",true); prop = props.Find("BaseTableName",true);
allProperties.Add(prop); allProperties.Add(prop);
return new PropertyDescriptorCollection(allProperties.ToArray()); return new PropertyDescriptorCollection(allProperties.ToArray());
} }
} }

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

@ -127,6 +127,7 @@
<Compile Include="Project\Exceptions\UnknownFunctionException.cs" /> <Compile Include="Project\Exceptions\UnknownFunctionException.cs" />
<Compile Include="Project\Exceptions\UnknownItemException.cs" /> <Compile Include="Project\Exceptions\UnknownItemException.cs" />
<Compile Include="Project\Exceptions\WrongColumnException.cs" /> <Compile Include="Project\Exceptions\WrongColumnException.cs" />
<Compile Include="Project\Exceptions\WrongSectionException.cs" />
<Compile Include="Project\Exporter\BasePager.cs" /> <Compile Include="Project\Exporter\BasePager.cs" />
<Compile Include="Project\Exporter\Converters\BaseConverter.cs" /> <Compile Include="Project\Exporter\Converters\BaseConverter.cs" />
<Compile Include="Project\Exporter\Converters\ConverterFactory.cs" /> <Compile Include="Project\Exporter\Converters\ConverterFactory.cs" />

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

@ -8,6 +8,8 @@
using System; using System;
using System.ComponentModel; using System.ComponentModel;
using System.Xml.Serialization; using System.Xml.Serialization;
using System.Linq;
using ICSharpCode.Reports.Core.Interfaces;
/// <summary> /// <summary>
/// This Class is the BaseClass for <see cref="ReportSection"></see> /// This Class is the BaseClass for <see cref="ReportSection"></see>
@ -18,7 +20,7 @@ namespace ICSharpCode.Reports.Core
{ {
public class BaseSection : BaseReportItem { public class BaseSection : BaseReportItem {
private int sectionMargin; // private int sectionMargin;
private bool pageBreakAfter; private bool pageBreakAfter;
private ReportItemCollection items; private ReportItemCollection items;
@ -68,19 +70,48 @@ namespace ICSharpCode.Reports.Core
#endregion #endregion
#region properties #region FindItem
public int SectionMargin private BaseReportItem FindRec (ReportItemCollection items, string name)
{ {
get { foreach(BaseReportItem item in items)
return this.sectionMargin; {
IContainerItem cont = item as IContainerItem;
if (cont != null) {
return FindRec(cont.Items,name);
} else {
var query = from bt in items where bt.Name == name select bt;
if (query.Count() >0) {
return query.FirstOrDefault();
}
}
} }
set { return null;
this.sectionMargin = value; }
public BaseReportItem FindItem (string itemName)
{
foreach (BaseReportItem item in items)
{
IContainerItem cont = item as IContainerItem;
if (cont != null) {
return FindRec (cont.Items,itemName);
} else {
//return InnerFind(itemName);
return FindRec(this.items,itemName);
}
} }
return null;
} }
#endregion
#region properties
public int SectionMargin {get;set;}
public override System.Drawing.Point Location public override System.Drawing.Point Location
{ {

5
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseItems/Graphics/BaseImageItem.cs

@ -265,9 +265,8 @@ namespace ICSharpCode.Reports.Core {
/// ///
public GlobalEnums.ImageSource ImageSource public GlobalEnums.ImageSource ImageSource
{ {
get { get {return imageSource;}
return imageSource; set {this.imageSource = value;}
}
} }
///<summary> ///<summary>

5
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/CollectionStrategy.cs

@ -264,9 +264,12 @@ namespace ICSharpCode.Reports.Core {
//image processing from IList //image processing from IList
BaseImageItem baseImageItem = item as BaseImageItem; BaseImageItem baseImageItem = item as BaseImageItem;
if (baseImageItem != null) { if (baseImageItem != null) {
PropertyDescriptor p = this.listProperties.Find(baseImageItem.ColumnName, true); PropertyDescriptor p = this.listProperties.Find(baseImageItem.ColumnName, true);
baseImageItem.Image = p.GetValue(this.Current) as System.Drawing.Image; if (p != null) {
baseImageItem.Image = p.GetValue(this.Current) as System.Drawing.Image;
}
return; return;
} }
} }

3
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exceptions/MissingSectionException.cs

@ -10,7 +10,8 @@ using System.Runtime.Serialization;
/// <summary> /// <summary>
/// Description of MissingSectionException. /// Description of MissingSectionException.
/// </summary> /// </summary>
namespace ICSharpCode.Reports.Core{ namespace ICSharpCode.Reports.Core
{
[Serializable()] [Serializable()]
public class MissingSectionException: Exception public class MissingSectionException: Exception

41
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exceptions/WrongSectionException.cs

@ -0,0 +1,41 @@
/*
* Erstellt mit SharpDevelop.
* Benutzer: Peter Forstmeier
* Datum: 24.03.2010
* Zeit: 19:31
*
* Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern.
*/
using System;
using System.Runtime.Serialization;
namespace ICSharpCode.Reports.Core
{
/// <summary>
/// Description of WrongSectionException.
/// </summary>
[Serializable()]
public class WrongSectionException: Exception
{
public WrongSectionException():base()
{
}
public WrongSectionException(string errorMessage) :base (errorMessage)
{
}
public WrongSectionException(string errorMessage,
Exception exception):base (errorMessage,exception)
{
}
protected WrongSectionException(SerializationInfo info,
StreamingContext context) : base(info, context)
{
// Implement type-specific serialization constructor logic.
}
}
}

4
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/ReportViewer/ReportViewer.cs

@ -234,7 +234,6 @@ namespace ICSharpCode.Reports.Core.ReportViewer
} }
private void PushPrinting (object sender, SectionRenderEventArgs e ) { private void PushPrinting (object sender, SectionRenderEventArgs e ) {
// Console.WriteLine ("ReportViewer - SectionRenderEventargs from <{0}> with {1} item ",e.Section.Name,e.Section.Items.Count);
EventHelper.Raise<SectionRenderEventArgs>(SectionRendering,this,e); EventHelper.Raise<SectionRenderEventArgs>(SectionRendering,this,e);
string sectionName = e.Section.Name; string sectionName = e.Section.Name;
@ -258,9 +257,8 @@ namespace ICSharpCode.Reports.Core.ReportViewer
Console.WriteLine("xx " + ReportSectionNames.ReportFooter); Console.WriteLine("xx " + ReportSectionNames.ReportFooter);
} }
else{ else{
Console.WriteLine("keine ahnung "); throw new WrongSectionException(sectionName);
} }
} }

143
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/BaseItems/BaseSectionFixture.cs

@ -0,0 +1,143 @@
/*
* Erstellt mit SharpDevelop.
* Benutzer: Peter Forstmeier
* Datum: 28.03.2010
* Zeit: 17:31
*
* Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern.
*/
using System;
using NUnit.Framework;
namespace ICSharpCode.Reports.Core.Test.BaseItems
{
[TestFixture]
public class BaseSectionFixture
{
#region constructor
[Test]
public void PlainConstructor()
{
BaseSection section = new BaseSection();
Assert.AreEqual(String.Empty,section.Name);
}
[Test]
public void ConstructorWithNameAsParam ()
{
BaseSection section = new BaseSection("mysection");
Assert.AreEqual("mysection",section.Name);
}
#endregion
#region initialvalues
[Test]
public void CheckInitialValues ()
{
BaseSection section = new BaseSection();
Assert.AreEqual(0,section.Items.Count);
Assert.AreEqual(0,section.SectionMargin);
Assert.AreEqual(0,section.SectionOffset);
Assert.AreEqual(false,section.PageBreakAfter);
Assert.AreEqual(false,section.DrawBorder);
Assert.AreEqual(System.Drawing.Color.White,section.BackColor);
}
#endregion
[Test]
public void FindItem_NoContainer()
{
BaseSection section = ConfigurePlainSection();
BaseReportItem item = section.FindItem("ImageItem");
Assert.That(item != null);
Assert.IsInstanceOf(typeof(BaseImageItem),item);
Assert.That(item.Name == "ImageItem");
}
[Test]
public void FindItemNullIfItemNotExist()
{
BaseSection section = ConfigurePlainSection();
BaseReportItem item = section.FindItem("notexist");
Assert.IsNull(item);
}
[Test]
public void FindItemInRow ()
{
BaseSection section = ConfigureSectionWithRow();
BaseReportItem item = section.FindItem("TextItem");
Assert.That(item != null);
Assert.IsInstanceOf(typeof(BaseTextItem),item);
Assert.That(item.Name == "TextItem");
}
[Test]
public void FindItemInRowNullIfItemNotExist ()
{
BaseSection section = ConfigureSectionWithRow();
BaseReportItem item = section.FindItem("notexist");
Assert.IsNull(item);
}
private BaseSection ConfigureSectionWithRow ()
{
BaseSection section = new BaseSection();
BaseRowItem row = new BaseRowItem();
BaseTextItem bti = new BaseTextItem{
Name = "TextItem"
};
BaseImageItem bii = new BaseImageItem(){
Name = "ImageItem"
};
row.Items.Add(bti);
row.Items.Add(bii);
section.Items.Add(row);
return section;
}
private BaseSection ConfigurePlainSection ()
{
BaseSection section = new BaseSection();
BaseTextItem bti = new BaseTextItem{
Name = "TextItem"
};
BaseImageItem bii = new BaseImageItem(){
Name = "ImageItem"
};
section.Items.Add(bti);
section.Items.Add(bii);
return section;
}
#region
#endregion
[TestFixtureSetUp]
public void Init()
{
// TODO: Add Init code.
}
[TestFixtureTearDown]
public void Dispose()
{
// TODO: Add tear down code.
}
}
}

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

@ -63,6 +63,7 @@
<Compile Include="BaseItems\BaseGraphicItemFixture.cs" /> <Compile Include="BaseItems\BaseGraphicItemFixture.cs" />
<Compile Include="BaseItems\BaseReportItemFixture.cs" /> <Compile Include="BaseItems\BaseReportItemFixture.cs" />
<Compile Include="BaseItems\BaseRowItemFixture.cs" /> <Compile Include="BaseItems\BaseRowItemFixture.cs" />
<Compile Include="BaseItems\BaseSectionFixture.cs" />
<Compile Include="BaseItems\BaseTextItemFixture.cs" /> <Compile Include="BaseItems\BaseTextItemFixture.cs" />
<Compile Include="Collections\AvailableFieldsCollection.cs" /> <Compile Include="Collections\AvailableFieldsCollection.cs" />
<Compile Include="Collections\ColumnCollectionFixture.cs" /> <Compile Include="Collections\ColumnCollectionFixture.cs" />

Loading…
Cancel
Save