Browse Source

RowItem is used as a Container for ReportItems. This make's it possible to frame Lines of Data or give them a different BackGroundColor

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1238 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Peter Forstmeier 20 years ago
parent
commit
4d52821474
  1. 155
      src/AddIns/Misc/SharpReport/SharpReport/AutoReport.cs
  2. 2
      src/AddIns/Misc/SharpReport/SharpReport/Designer/IDesignable.cs
  3. 2
      src/AddIns/Misc/SharpReport/SharpReport/Designer/NameService.cs
  4. 205
      src/AddIns/Misc/SharpReport/SharpReport/Designer/Report.cs
  5. 30
      src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/BaseDesignerControl.cs
  6. 4
      src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/ItemsDragDropEventArgs.cs
  7. 7
      src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/ReportDetail.cs
  8. 185
      src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/ReportSection.cs
  9. 184
      src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/ReportSectionControlbase.cs
  10. 12
      src/AddIns/Misc/SharpReport/SharpReport/Designer/SideTab/BuildSideTab.cs
  11. 80
      src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ControlHelper.cs
  12. 67
      src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportControlBase.cs
  13. 47
      src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportDbTextControl.cs
  14. 3
      src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportImageControl.cs
  15. 74
      src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportRowControl.cs
  16. 29
      src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportTextControl.cs
  17. 6
      src/AddIns/Misc/SharpReport/SharpReport/ReportItems/Functions/MiscFunctions/PageNumber.cs
  18. 6
      src/AddIns/Misc/SharpReport/SharpReport/ReportItems/Functions/MiscFunctions/Today.cs
  19. 8
      src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportCircleItem.cs
  20. 4
      src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportImageItem.cs
  21. 6
      src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportLineItem.cs
  22. 6
      src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportRectangleItem.cs
  23. 25
      src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ItemsHelper.cs
  24. 67
      src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportDataItem.cs
  25. 192
      src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportRowItem.cs
  26. 59
      src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportTextItem.cs
  27. 3
      src/AddIns/Misc/SharpReport/SharpReport/SharpReport.csproj
  28. 143
      src/AddIns/Misc/SharpReport/SharpReport/SharpReportManager.cs
  29. 51
      src/AddIns/Misc/SharpReport/SharpReport/Visitors/AbstractVisitor.cs
  30. 120
      src/AddIns/Misc/SharpReport/SharpReport/Visitors/LoadReportVisitor.cs
  31. 2
      src/AddIns/Misc/SharpReport/SharpReport/Visitors/SaveReportVisitor.cs
  32. 12
      src/AddIns/Misc/SharpReport/SharpReportAddin/Commands/ItemContextCommands.cs
  33. 54
      src/AddIns/Misc/SharpReport/SharpReportAddin/FieldsExplorer/FieldsExplorer.cs
  34. 3
      src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportDisplayBinding.cs
  35. 8
      src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportView.cs
  36. 49
      src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseDataItem.cs
  37. 51
      src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseReportItem.cs
  38. 85
      src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseReportObject.cs
  39. 55
      src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseSection.cs
  40. 3
      src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseTextItem.cs
  41. 26
      src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/Graphics/BaseRectangleItem.cs
  42. 170
      src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/RowItem.cs
  43. 70
      src/AddIns/Misc/SharpReport/SharpReportCore/BaseSettings.cs
  44. 50
      src/AddIns/Misc/SharpReport/SharpReportCore/Collections/Collections.cs
  45. 61
      src/AddIns/Misc/SharpReport/SharpReportCore/DataManager/DataManager.cs
  46. 69
      src/AddIns/Misc/SharpReport/SharpReportCore/DataManager/DataNavigator.cs
  47. 31
      src/AddIns/Misc/SharpReport/SharpReportCore/DataManager/ListStrategy/BaseListStrategy.cs
  48. 22
      src/AddIns/Misc/SharpReport/SharpReportCore/DataManager/ListStrategy/CollectionStrategy.cs
  49. 65
      src/AddIns/Misc/SharpReport/SharpReportCore/DataManager/ListStrategy/TableStrategy.cs
  50. 38
      src/AddIns/Misc/SharpReport/SharpReportCore/Exceptions/MissingSectionException.cs
  51. 2
      src/AddIns/Misc/SharpReport/SharpReportCore/Exceptions/SharpReportWrongItemException.cs
  52. 10
      src/AddIns/Misc/SharpReport/SharpReportCore/Globals/GlobalEnums.cs
  53. 13
      src/AddIns/Misc/SharpReport/SharpReportCore/Globals/GlobalValues.cs
  54. 28
      src/AddIns/Misc/SharpReport/SharpReportCore/Interfaces/IContainerItem.cs
  55. 19
      src/AddIns/Misc/SharpReport/SharpReportCore/Interfaces/IDataContainer.cs
  56. 13
      src/AddIns/Misc/SharpReport/SharpReportCore/Interfaces/IDataViewStrategy.cs
  57. 121
      src/AddIns/Misc/SharpReport/SharpReportCore/Printing/AbstractDataRenderer.cs
  58. 65
      src/AddIns/Misc/SharpReport/SharpReportCore/Printing/AbstractRenderer.cs
  59. 1
      src/AddIns/Misc/SharpReport/SharpReportCore/Printing/Formatter/DefaultFormatter.cs
  60. 105
      src/AddIns/Misc/SharpReport/SharpReportCore/Printing/RenderDataReport.cs
  61. 8
      src/AddIns/Misc/SharpReport/SharpReportCore/Printing/RenderFormSheetReport.cs
  62. 2
      src/AddIns/Misc/SharpReport/SharpReportCore/Printing/ReportDocument.cs
  63. 1
      src/AddIns/Misc/SharpReport/SharpReportCore/ReportModel.cs
  64. 5
      src/AddIns/Misc/SharpReport/SharpReportCore/SharpReportCore.csproj
  65. 3
      src/AddIns/Misc/SharpReport/SharpReportCore/Visitors/IVisitor.cs
  66. 3
      src/AddIns/Misc/SharpReport/SharpReportCore/Visitors/LoadModelVisitor.cs
  67. 21
      src/AddIns/Misc/SharpReport/SharpReportCore/Xml/XmlHelper.cs
  68. 2
      src/AddIns/Misc/SharpReport/SharpReportWizard/GeneratorCommands.cs
  69. 145
      src/AddIns/Misc/SharpReport/SharpReportWizard/Generators/AbstractReportGenerator.cs
  70. 11
      src/AddIns/Misc/SharpReport/SharpReportWizard/Generators/GenerateFormSheetReport.cs
  71. 23
      src/AddIns/Misc/SharpReport/SharpReportWizard/Generators/GeneratePullDataReport.cs
  72. 17
      src/AddIns/Misc/SharpReport/SharpReportWizard/Generators/GeneratePushDataReport.cs
  73. 37
      src/AddIns/Misc/SharpReport/SharpReportWizard/ReportGenerator.cs
  74. 28
      src/AddIns/Misc/SharpReport/SharpReportWizard/ReportLayouts/AbstractLayout.cs
  75. 69
      src/AddIns/Misc/SharpReport/SharpReportWizard/ReportLayouts/TableLayout.cs
  76. 13
      src/AddIns/Misc/SharpReport/SharpReportWizard/WizardPanels/PushModelPanel.cs
  77. 2
      src/AddIns/Misc/SharpReport/SharpReportWizard/WizardPanels/ResultPanel.cs
  78. BIN
      src/Main/StartUp/Project/Resources/BitmapResources.resources

155
src/AddIns/Misc/SharpReport/SharpReport/AutoReport.cs

@ -18,6 +18,7 @@ using ICSharpCode.Core; @@ -18,6 +18,7 @@ using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using SharpReport;
using SharpReport.Designer;
using SharpReportCore;
using SharpReport.ReportItems;
@ -37,22 +38,13 @@ namespace SharpReport { @@ -37,22 +38,13 @@ namespace SharpReport {
public class AutoReport : object,IDisposable {
SharpReport.Designer.IDesignableFactory iDesignableFactory;
private NameService nameService;
public AutoReport() {
iDesignableFactory = new SharpReport.Designer.IDesignableFactory();
nameService = new NameService();
}
#region System.IDisposable interface implementation
public void Dispose() {
}
#endregion
#region Build report's
#region Build ReportItemsCollection
/// <summary>
/// Build BaseDataItems from a schemaDataTable
@ -61,7 +53,7 @@ namespace SharpReport { @@ -61,7 +53,7 @@ namespace SharpReport {
/// <param name="schemaTable">SchemaDefinition Datatable</param>
/// <returns>Collection of BaseDataItems</returns>
public ReportItemCollection ReportItemsFromTable (ReportModel model,DataTable schemaTable) {
public ReportItemCollection DataItemsFromTable (ReportModel model,DataTable schemaTable) {
ReportItemCollection itemCol = new ReportItemCollection();
for (int i = 0;i < schemaTable.Rows.Count;i++){
@ -77,39 +69,15 @@ namespace SharpReport { @@ -77,39 +69,15 @@ namespace SharpReport {
return itemCol;
}
///<summary>
/// Build a <see cref="ColumnCollection"></see> this collection holds all the fields
/// comming from the DataSource
///</summary>
public ColumnCollection AbstractColumnsFromDataSet(DataSet dataSet) {
if (dataSet.Tables.Count > 1) {
MessageService.ShowError ("AutoBuildFromDataSet : at this time no more than one table is allowed " + dataSet.Tables.Count.ToString());
throw new ArgumentException ("Too much Tables in DataSet");
}
ColumnCollection collection = new ColumnCollection();
foreach (DataTable tbl in dataSet.Tables) {
DataColumn col;
for (int i = 0;i < tbl.Columns.Count ;i++ ) {
col = tbl.Columns[i];
AbstractColumn abstrColumn = new AbstractColumn();
abstrColumn.ColumnName = col.ColumnName;
abstrColumn.DataType = col.DataType;
collection.Add (abstrColumn);
}
}
return collection;
}
/// <summary>
/// Build BaseDataItems from a *.xsd File
/// Build BaseDataItems from a *.xsd (Schema) File
/// </summary>
/// <param name="model">a valid ReportModel</param>
/// <param name="dataSet">DataSet from *.xsd File</param>
/// <returns> Collection of BaseDataItems</returns>
public ReportItemCollection ReportItemsFromSchema (ReportModel model,DataSet dataSet) {
public ReportItemCollection DataItemsFromSchema (ReportModel model,DataSet dataSet) {
if (dataSet.Tables.Count > 1) {
MessageService.ShowError ("AutoBuildFromDataSet : at this time no more than one table is allowed " + dataSet.Tables.Count.ToString());
throw new ArgumentException ("Too much Tables in DataSet");
@ -131,26 +99,61 @@ namespace SharpReport { @@ -131,26 +99,61 @@ namespace SharpReport {
}
return itemCol;
}
#endregion
#region Build report's
///<summary>
/// Build a <see cref="ColumnCollection"></see> this collection holds all the fields
/// comming from the DataSource
///</summary>
public ColumnCollection AbstractColumnsFromDataSet(DataSet dataSet) {
if (dataSet.Tables.Count > 1) {
MessageService.ShowError ("AutoBuildFromDataSet : at this time no more than one table is allowed " + dataSet.Tables.Count.ToString());
throw new ArgumentException ("Too much Tables in DataSet");
}
ColumnCollection collection = new ColumnCollection();
foreach (DataTable tbl in dataSet.Tables) {
DataColumn col;
for (int i = 0;i < tbl.Columns.Count ;i++ ) {
col = tbl.Columns[i];
AbstractColumn abstrColumn = new AbstractColumn();
abstrColumn.ColumnName = col.ColumnName;
abstrColumn.DataType = col.DataType;
collection.Add (abstrColumn);
}
}
return collection;
}
public ReportItemCollection AutoDataColumns(ReportItemCollection col) {
if (col != null) {
ReportItemCollection itemCol = new ReportItemCollection();
ReportDataItem oldItem = null;
ReportDataItem sourceItem = null;
for (int i = 0;i < col.Count ;i++ ){
ReportDataItem newItem = new ReportDataItem();
oldItem = (ReportDataItem)col[i];
newItem.VisualControl.Text = oldItem.ColumnName;
newItem.ColumnName = oldItem.ColumnName;
newItem.DbValue = oldItem.DbValue;
newItem.BaseTableName = oldItem.BaseTableName;
newItem.DataType = oldItem.DataType;
newItem.Location = new Point (i * 30,5);
itemCol.Add(newItem);
ReportDataItem destItem = new ReportDataItem();
sourceItem = (ReportDataItem)col[i];
destItem.VisualControl.Text = sourceItem.ColumnName;
destItem.ColumnName = sourceItem.ColumnName;
destItem.DbValue = sourceItem.DbValue;
destItem.BaseTableName = sourceItem.BaseTableName;
destItem.DataType = sourceItem.DataType;
destItem.Location = new Point (i * 30,5);
itemCol.Add(destItem);
}
return itemCol;
} else {
throw new ArgumentNullException ("AutoReport:ReportItemCollection");
}
}
#endregion
#region HeaderColumns
@ -163,7 +166,7 @@ namespace SharpReport { @@ -163,7 +166,7 @@ namespace SharpReport {
/// <param name="setOnTop">Locate the Columns of Top or an Bottom of the Section</param>
/// <returns>a Collection of BaseTextItems</returns>
public ReportItemCollection AutoHeaderFromTable (BaseSection section,DataTable schemaTable,bool setOnTop) {
public ReportItemCollection HeaderColumnsFromTable (BaseSection section,DataTable schemaTable,bool setOnTop) {
ReportItemCollection itemCol = new ReportItemCollection();
for (int i = 0;i < schemaTable.Rows.Count;i++){
DataRow r = schemaTable.Rows[i];
@ -185,7 +188,7 @@ namespace SharpReport { @@ -185,7 +188,7 @@ namespace SharpReport {
}
public ReportItemCollection AutoHeaderFromReportItems(ReportItemCollection reportItemCollection,BaseSection section,bool setOnTop) {
public ReportItemCollection HeaderColumnsFromReportItems(ReportItemCollection reportItemCollection,BaseSection section,bool setOnTop) {
if (reportItemCollection == null) {
throw new ArgumentNullException ("reportItemCollection");
}
@ -215,6 +218,58 @@ namespace SharpReport { @@ -215,6 +218,58 @@ namespace SharpReport {
}
#endregion
/*
#region Standarts for all reports (Headlines etc)
/// <summary>
/// Insert a <see cref="ReportTextItem"></see> in the PageHeader with
/// the <see cref="ReportModel.ReportSettings.ReportName"></see> as
/// text
/// </summary>
/// <param name="model">ReportModel</param>
public void CreatePageHeader (ReportModel model) {
BaseSection section = model.PageHeader;
section.SuspendLayout();
SharpReport.Designer.IDesignableFactory gf = new SharpReport.Designer.IDesignableFactory();
BaseTextItem item = (BaseTextItem)gf.Create ("ReportTextItem");
item.SuspendLayout();
item.Text = model.ReportSettings.ReportName;
item.Font = CopyFont(model.ReportSettings.DefaultFont);
item.Location = new Point (0,0);
item.Size = new Size (item.Size.Width,item.Font.Height + SharpReportCore.GlobalValues.EnlargeControl);
section.Items.Add (item);
item.ResumeLayout();
section.ResumeLayout();
}
///<summary>
/// Insert Function 'PageNumber' in Section PageFooter
/// </summary>
/// <param name="model">ReportModel</param>
public void CreatePageNumber (ReportModel model) {
BaseSection section = model.PageFooter;
section.SuspendLayout();
FunctionFactory gf = new FunctionFactory();
PageNumber pageNumber = (PageNumber)gf.Create ("PageNumber");
pageNumber.SuspendLayout();
pageNumber.Text = ResourceService.GetString("SharpReport.Toolbar.Functions.PageNumber");
pageNumber.Location = new Point (0,0);
section.Items.Add(pageNumber);
pageNumber.ResumeLayout();
section.ResumeLayout();
}
#endregion
*/
#region System.IDisposable interface implementation
public void Dispose() {
}
#endregion
}
}

2
src/AddIns/Misc/SharpReport/SharpReport/Designer/IDesignable.cs

@ -40,8 +40,6 @@ namespace SharpReport.Designer{ @@ -40,8 +40,6 @@ namespace SharpReport.Designer{
}
event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
// event EventHandler <GroupChangedEventArgs> GroupChanged;
event EventHandler <EventArgs> Selected;
}
}

2
src/AddIns/Misc/SharpReport/SharpReport/Designer/NameService.cs

@ -15,7 +15,7 @@ using System.ComponentModel; @@ -15,7 +15,7 @@ using System.ComponentModel;
using SharpReportCore;
/// <summary>
/// Build proper (unique) Names for all added Item's
/// Build a proper (unique) Names for all added Item's
/// </summary>
/// <remarks>
/// created by - Forstmeier Peter

205
src/AddIns/Misc/SharpReport/SharpReport/Designer/Report.cs

@ -29,12 +29,12 @@ namespace SharpReport.Designer{ @@ -29,12 +29,12 @@ namespace SharpReport.Designer{
private SharpReport.Designer.ReportFooter visualFooter;
private SharpReport.Designer.ReportPageFooter visualPageFooter;
private SharpReport.Designer.ReportDetail visualDetail;
// Generic selected object in report
private IBaseRenderer selectedObject;
// Section selected in report
private ReportSection selectedSection;
@ -91,6 +91,12 @@ namespace SharpReport.Designer{ @@ -91,6 +91,12 @@ namespace SharpReport.Designer{
base.Dispose(disposing);
}
private void SetDefaultValues() {
foreach (BaseSection sec in this.sectionCollection) {
sec.SectionMargin = this.reportSettings.DefaultMargins.Left;
sec.Parent = null;
}
}
private void InitSectionCollection () {
sectionCollection = new ReportSectionCollection();
@ -99,13 +105,13 @@ namespace SharpReport.Designer{ @@ -99,13 +105,13 @@ namespace SharpReport.Designer{
detail = new ReportSection(visualDetail);
pageFooter = new ReportSection(visualPageFooter);
footer = new ReportSection(visualFooter);
header.Name = header.VisualControl.GetType().Name;
pageHeader.Name = pageHeader.VisualControl.GetType().Name;
detail.Name = detail.VisualControl.GetType().Name;
footer.Name = footer.VisualControl.GetType().Name;
pageFooter.Name = pageFooter.VisualControl.GetType().Name;
sectionCollection.Add(header);
sectionCollection.Add(pageHeader);
sectionCollection.Add(detail);
@ -131,7 +137,7 @@ namespace SharpReport.Designer{ @@ -131,7 +137,7 @@ namespace SharpReport.Designer{
visualPageFooter.ReportItemsHandling += new ItemDragDropEventHandler (OnAddReportItem);
visualFooter.ReportItemsHandling += new ItemDragDropEventHandler (OnAddReportItem);
}
private Rectangle SectionClientArea (SharpReport.Designer.ReportSectionControlBase ctrl) {
Rectangle rect = new Rectangle();
rect.X = ctrl.Location.X;
@ -141,89 +147,152 @@ namespace SharpReport.Designer{ @@ -141,89 +147,152 @@ namespace SharpReport.Designer{
return rect;
}
private void SetParent(BaseReportItem child,Point pointOf) {
foreach (BaseReportItem i in this.SelectedSection.Items) {
Rectangle r = new Rectangle (i.Location,i.Size);
if (r.Contains(pointOf)) {
child.Parent = i as IContainerItem;
return;
}
}
child.Parent = this.SelectedSection;
}
protected void OnAddReportItem (object sender,ItemDragDropEventArgs e) {
if (e.Action != ItemDragDropEventArgs.enmAction.Add) {
throw new NotSupportedException ("Only add allowed in Report.OnAddReportItem");
private IContainerItem FindParent(ItemDragDropEventArgs iddea) {
foreach (BaseReportItem i in this.SelectedSection.Items) {
Rectangle r = new Rectangle (i.Location,i.Size);
if (r.Contains(iddea.ItemAtPoint)) {
return i as IContainerItem;
}
}
return null;
}
private BaseReportItem BuildDraggedItem (ItemDragDropEventArgs iddea) {
GlobalEnums.ReportItemType rptType = (GlobalEnums.ReportItemType)
GlobalEnums.StringToEnum(typeof(GlobalEnums.ReportItemType),iddea.ItemName);
ReportSectionControlBase b = (ReportSectionControlBase)sender;
SharpReport.Designer.IDesignableFactory gf = new SharpReport.Designer.IDesignableFactory();
return gf.Create (rptType.ToString());
}
private void CustomizeItem ( ItemDragDropEventArgs iddea,
ReportItemCollection itemCollection,
BaseReportItem baseReportItem) {
GlobalEnums.ReportItemType rptType = (GlobalEnums.ReportItemType)
GlobalEnums.StringToEnum(typeof(GlobalEnums.ReportItemType),iddea.ItemName);
// Find Selected Section
if (b != null) {
selectedSection = (ReportSection)sectionCollection.Find(b.GetType().Name);
baseReportItem.Name = nameService.CreateName(itemCollection,
baseReportItem.Name);
if (baseReportItem.Parent == this.selectedSection) {
baseReportItem.Location = new Point(iddea.ItemAtPoint.X,iddea.ItemAtPoint.Y);
} else {
throw new NullReferenceException("No Section in Report.OnAddReportItem");
BaseReportItem br = (BaseReportItem)this.FindParent(iddea);
baseReportItem.Location = new Point(iddea.ItemAtPoint.X - br.Location.X,10);
}
}
private void AdjustDesignable (BaseReportItem item) {
IDesignable designable = item as IDesignable;
designable.VisualControl.Name = item.Name;
}
private void SetVisualControl (BaseReportItem item){
Control ctrl = null;
if (item.Parent == null) {
ctrl = this.selectedSection.VisualControl.Body;
} else {
if (item.Parent is ReportControlBase) {
ReportControlBase rb = item.Parent as ReportControlBase;
ctrl = rb.Body;
}
}
//ReportItem from Factory
GlobalEnums.ReportItemType rptType = (GlobalEnums.ReportItemType)
GlobalEnums.StringToEnum(typeof(GlobalEnums.ReportItemType),e.ItemName);
BaseReportItem baseReportItem = null;
try {
SharpReport.Designer.IDesignableFactory gf = new SharpReport.Designer.IDesignableFactory();
baseReportItem = gf.Create (rptType.ToString());
IDesignable iDesignable = baseReportItem as IDesignable;
if (iDesignable != null) {
iDesignable.Location = e.ItemAtPoint;
iDesignable.Name = nameService.CreateName(this.selectedSection.Items,
rptType.ToString());
} else {
string str = String.Format("<{0}> does not implement IDesignable");
MessageService.ShowError(str);
if (ctrl != null) {
IDesignable designable = item as IDesignable;
if (designable != null) {
ctrl.Controls.Add(designable.VisualControl);
this.AdjustControl(designable);
ctrl.Invalidate();
}
} catch (Exception ee) {
MessageService.ShowError(ee,ee.Message);
}
if (baseReportItem == null) {
string str = String.Format("Unable to create <0> ",rptType.ToString());
MessageService.ShowError(str);
}
private ReportSection SectionByName ( ReportSectionControlBase item) {
if (item != null) {
return (ReportSection)sectionCollection.Find(item.GetType().Name);
}
throw new NullReferenceException("No Section in Report.OnAddReportItem");
}
private void AdjustControl (IDesignable ctrl) {
ctrl.VisualControl.BringToFront();
ctrl.VisualControl.Focus();
}
private void OnAddReportItem (object sender,ItemDragDropEventArgs iddea) {
if (iddea.Action != ItemDragDropEventArgs.enmAction.Add) {
throw new NotSupportedException ();
}
//If all went well until now
selectedSection = SectionByName ((ReportSectionControlBase)sender);
BaseReportItem baseReportItem = BuildDraggedItem(iddea);
if (baseReportItem != null) {
// set usefull values
SetParent (baseReportItem,iddea.ItemAtPoint);
IItemRenderer itemRenderer = baseReportItem as IItemRenderer;
try {
//Insert Item into selectedSection.Items
if (selectedSection != null) {
baseReportItem.Parent = selectedSection;
try {
IItemRenderer aa = baseReportItem as IItemRenderer;
if (aa != null) {
selectedSection.Items.Add(aa);
} else {
throw new NullReferenceException("Report:OnAddReportItem ");
if (itemRenderer != null) {
SetVisualControl (baseReportItem);
if (baseReportItem.Parent != null) {
if (baseReportItem.Parent == this.selectedSection) {
// we have a 'TopLevel' Control
baseReportItem.Parent = selectedSection;
this.selectedSection.Items.Added += OnItemCollectionAdd;
this.selectedSection.Items.Add(itemRenderer);
CustomizeItem (iddea,selectedSection.Items,baseReportItem);
} else {
IContainerItem parent = baseReportItem.Parent as IContainerItem;
if (parent != null) {
parent.Items.Added += OnItemCollectionAdd;
parent.Items.Add (itemRenderer);
CustomizeItem (iddea,parent.Items,baseReportItem);
}
} catch (Exception) {
throw;
}
}
} catch (Exception ee) {
throw ee;
} else {
throw new NullReferenceException("Report:OnAddReportItem ");
}
AdjustDesignable(baseReportItem);
}else {
throw new Exception("No Item created in Report.OnAddReportItem");
}
try {
selectedObject = (IItemRenderer)baseReportItem;
} catch (Exception ex) {
MessageService.ShowError(ex,ex.Message);
string str = String.Format("Unable to create <0> ",iddea.ItemName);
MessageService.ShowError(str);
}
selectedObject = (IBaseRenderer)baseReportItem;
if (DesignViewChanged != null) {
DesignViewChanged (this,e);
DesignViewChanged (this,iddea);
}
}
#region property's
private void OnItemCollectionAdd(object sender, CollectionItemEventArgs<IItemRenderer> e){
SharpReport.Designer.IDesignable iDesignable = e.Item as SharpReport.Designer.IDesignable;
iDesignable.Selected += new EventHandler <EventArgs>(this.ItemSelected);
}
#region property's
public ReportSectionCollection SectionCollection
{
@ -258,8 +327,12 @@ namespace SharpReport.Designer{ @@ -258,8 +327,12 @@ namespace SharpReport.Designer{
}
set {
reportSettings = value;
SetDefaultValues();
}
}
#endregion
#region events
@ -297,7 +370,7 @@ namespace SharpReport.Designer{ @@ -297,7 +370,7 @@ namespace SharpReport.Designer{
#region Windows Forms Designer generated code
/// <summary>
/// This method is required for Windows Forms designer support.

30
src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/BaseDesignerControl.cs

@ -27,12 +27,14 @@ namespace SharpReport.Designer @@ -27,12 +27,14 @@ namespace SharpReport.Designer
private SharpReport.Designer.Report reportControl;
private Ruler.ctrlRuler ctrlRuler1;
private System.Drawing.GraphicsUnit graphicsUnit = GraphicsUnit.Point;
private System.Drawing.GraphicsUnit graphicsUnit;
private ReportModel reportModel;
public event PropertyChangedEventHandler DesignerDirty;
public BaseDesignerControl()
{
InitializeComponent();
@ -48,12 +50,32 @@ namespace SharpReport.Designer @@ -48,12 +50,32 @@ namespace SharpReport.Designer
reportModel = new ReportModel (graphicsUnit);
this.ReportControl.ReportSettings = reportModel.ReportSettings;
}
#region public'c
//if languages change, we need a way to chage the headlines here as well
public void Localise() {
reportControl.Localise();
}
public void RemoveSelectedItem () {
if (this.SelectedObject == null) {
return;
}
BaseReportItem item = this.SelectedObject as BaseReportItem;
if ((item.Parent == this.SelectedSection)|| (item.Parent == null)){
this.SelectedSection.Items.Remove (item);
} else {
IContainerItem con = item.Parent as IContainerItem;
if (con != null) {
con.Items.Remove (item);
}
}
}
#endregion
#region overrides
protected override void Dispose(bool disposing ) {
@ -106,13 +128,13 @@ namespace SharpReport.Designer @@ -106,13 +128,13 @@ namespace SharpReport.Designer
public ReportModel ReportModel {
get {
reportModel.ReportSettings = reportControl.ReportSettings;
reportModel.SectionCollection.Clear();
foreach (ReportSection section in reportControl.SectionCollection) {
reportModel.SectionCollection.Add (section);
}
return this.reportModel;
return reportModel;
}
set {
this.reportModel = value;

4
src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/ItemsDragDropEventArgs.cs

@ -33,10 +33,8 @@ namespace SharpReport.Designer { @@ -33,10 +33,8 @@ namespace SharpReport.Designer {
string itemName;
enmAction action;
Point itemAtPoint;
public ItemDragDropEventArgs(enmAction action, Point itemAtPoint, string itemName)
{
public ItemDragDropEventArgs(enmAction action, Point itemAtPoint, string itemName){
this.action = action;
this.itemAtPoint = itemAtPoint;
this.itemName = itemName;

7
src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/ReportDetail.cs

@ -32,7 +32,6 @@ namespace SharpReport.Designer{ @@ -32,7 +32,6 @@ namespace SharpReport.Designer{
ControlStyles.ResizeRedraw,
true);
this.UpdateStyles();
// base.ItemSelected += new SelectedEventHandler (OnItemSelected);
base.ItemDragDrop += new ItemDragDropEventHandler (ItemsChanging);
}
@ -47,11 +46,7 @@ namespace SharpReport.Designer{ @@ -47,11 +46,7 @@ namespace SharpReport.Designer{
ReportItemsHandling (this,e);
}
}
// protected void OnItemSelected (object sender,EventArgs e) {
// MessageBox.Show ("On Item selected" + sender.ToString());
// }
//
#region Windows Forms Designer generated code
/// <summary>

185
src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/ReportSection.cs

@ -37,6 +37,7 @@ namespace SharpReport{ @@ -37,6 +37,7 @@ namespace SharpReport{
public event EventHandler <EventArgs> ItemSelected;
public event EventHandler <EventArgs> Selected;
#region Constructors
internal ReportSection() : base(){
@ -51,7 +52,6 @@ namespace SharpReport{ @@ -51,7 +52,6 @@ namespace SharpReport{
internal ReportSection(SharpReport.Designer.ReportSectionControlBase visualControl) : base(){
this.Initialize();
this.VisualControl = visualControl;
// this.visualControl.ItemSelected += new SelectedEventHandler (OnItemSelectfrom);
base.SectionOffset = 0;
}
@ -59,7 +59,7 @@ namespace SharpReport{ @@ -59,7 +59,7 @@ namespace SharpReport{
private void Initialize(){
base.Items.Added += OnItemAddeded;
base.Items.Removed += OnItemRemoveded;
base.Items.Removed += OnRemoveTopLevelItem;
}
internal ReportSectionControlBase VisualControl{
@ -85,58 +85,72 @@ namespace SharpReport{ @@ -85,58 +85,72 @@ namespace SharpReport{
}
}
void SerializeItemProperties (XmlDocument doc,
XmlElement xmlControl,
BaseReportItem item,PropertyInfo [] prop) {
XmlElement xmlProperty;
XmlAttribute attPropValue;
foreach (PropertyInfo p in prop) {
AttributeCollection attributes = TypeDescriptor.GetProperties(item)[p.Name].Attributes;
XmlIgnoreAttribute xmlIgnoreAttribute = (XmlIgnoreAttribute)attributes[typeof(XmlIgnoreAttribute)];
if (xmlIgnoreAttribute == null){
xmlProperty = xmlControl.OwnerDocument.CreateElement (p.Name);
if (p.PropertyType == typeof(Font)) {
XmlFormReader.BuildFontElement (item.Font,xmlProperty);
}
else {
attPropValue = xmlControl.OwnerDocument.CreateAttribute ("value");
attPropValue.InnerText = Convert.ToString(p.GetValue(item,null));
xmlProperty.Attributes.Append(attPropValue);
}
xmlControl.AppendChild(xmlProperty);
}
}
}
private XmlElement SerializeControl (XmlDocument doc,BaseReportItem item) {
Type type = item.GetType();
PropertyInfo [] prop = type.GetProperties();
XmlElement xmlControl = doc.CreateElement ("control");
XmlAttribute typeAttr = doc.CreateAttribute ("type");
typeAttr.InnerText = type.FullName;
xmlControl.Attributes.Append(typeAttr);
XmlAttribute baseAttr = doc.CreateAttribute ("basetype");
baseAttr.InnerText = type.BaseType.ToString();
xmlControl.Attributes.Append(baseAttr);
SerializeItemProperties (doc,xmlControl,item,prop);
return xmlControl;
}
/// <summary>
/// Read all ReportItenms of Section
/// </summary>
/// <param name="doc"></param>
private void ReportItemsToXml (XmlElement ctrlElement) {
foreach (BaseReportItem it in base.Items) {
Type type = it.GetType();
PropertyInfo [] prop = type.GetProperties();
XmlElement ctrl = ctrlElement.OwnerDocument.CreateElement ("control");
XmlAttribute typeAttr = ctrlElement.OwnerDocument.CreateAttribute ("type");
typeAttr.InnerText = type.FullName;
ctrl.Attributes.Append(typeAttr);
XmlAttribute baseAttr = ctrlElement.OwnerDocument.CreateAttribute ("basetype");
baseAttr.InnerText = type.BaseType.ToString();
ctrl.Attributes.Append(baseAttr);
private XmlElement ReportItemsToXml (XmlDocument doc,ReportItemCollection items) {
XmlElement xmlControls = doc.CreateElement ("controls");
foreach (BaseReportItem item in items) {
XmlElement xmlControl = SerializeControl (doc,item);
XmlElement xmlProperty;
XmlAttribute attPropValue;
IContainerItem iContainer = item as IContainerItem;
foreach (PropertyInfo p in prop) {
AttributeCollection attributes = TypeDescriptor.GetProperties(it)[p.Name].Attributes;
XmlIgnoreAttribute xmlIgnoreAttribute = (XmlIgnoreAttribute)attributes[typeof(XmlIgnoreAttribute)];
if (xmlIgnoreAttribute == null){
xmlProperty = ctrl.OwnerDocument.CreateElement (p.Name);
if (p.PropertyType == typeof(Font)) {
XmlFormReader.BuildFontElement (it.Font,xmlProperty);
}
else {
attPropValue = ctrl.OwnerDocument.CreateAttribute ("value");
attPropValue.InnerText = Convert.ToString(p.GetValue(it,null));
xmlProperty.Attributes.Append(attPropValue);
}
ctrl.AppendChild(xmlProperty);
}
if (iContainer != null) {
xmlControl.AppendChild ( ReportItemsToXml(doc,iContainer.Items));
}
ctrlElement.AppendChild(ctrl);
xmlControls.AppendChild(xmlControl);
}
return xmlControls;
}
private void SectionItemToXml (XmlElement xmlSection) {
Type type = this.GetType();
PropertyInfo [] prop = type.GetProperties();
XmlAttribute att = xmlSection.OwnerDocument.CreateAttribute ("name");
att.InnerText = this.VisualControl.GetType().Name;
xmlSection.Attributes.Append(att);
private void SerializeSectionProperties (XmlDocument doc,
XmlElement section,
PropertyInfo [] prop) {
XmlElement xmlProperty;
XmlAttribute attPropValue;
@ -144,16 +158,31 @@ namespace SharpReport{ @@ -144,16 +158,31 @@ namespace SharpReport{
foreach (PropertyInfo p in prop) {
if (this.CheckForXmlIgnore(p) == null ) {
if (p.CanWrite) {
xmlProperty = xmlSection.OwnerDocument.CreateElement (p.Name);
attPropValue = xmlSection.OwnerDocument.CreateAttribute ("value");
xmlProperty = doc.CreateElement (p.Name);
attPropValue = doc.CreateAttribute ("value");
attPropValue.InnerText = Convert.ToString(p.GetValue(this,null));
xmlProperty.Attributes.Append(attPropValue);
xmlSection.AppendChild(xmlProperty);
section.AppendChild(xmlProperty);
}
}
}
}
private XmlElement SectionItemToXml (XmlDocument doc) {
XmlElement section = doc.CreateElement ("section");
Type type = this.GetType();
PropertyInfo [] prop = type.GetProperties();
XmlAttribute att = section.OwnerDocument.CreateAttribute ("name");
att.InnerText = this.VisualControl.GetType().Name;
section.Attributes.Append(att);
this.SerializeSectionProperties (doc,section,prop);
return section;
}
#endregion
@ -161,31 +190,27 @@ namespace SharpReport{ @@ -161,31 +190,27 @@ namespace SharpReport{
#region iStoreable Interface
public XmlDocument GetXmlData(){
//Only a temp DocumentObject
XmlDocument doc = SharpReportCore.XmlHelper.BuildXmlDocument ();
XmlElement root = doc.CreateElement ("Sections");
XmlDocument xmlDocument = SharpReportCore.XmlHelper.BuildXmlDocument ();
XmlElement xmlRoot = xmlDocument.CreateElement ("Sections");
doc.AppendChild(root);
xmlDocument.AppendChild(xmlRoot);
//Read the 'section'
XmlElement section = doc.CreateElement ("section");
SectionItemToXml (section);
XmlElement xmlSection = SectionItemToXml (xmlDocument);
//Then read all ReportItems of this Section
XmlElement xmlControls = doc.CreateElement ("controls");
ReportItemsToXml (xmlControls);
section.AppendChild(xmlControls);
//and Append this to RootElement
root.AppendChild(section);
doc.AppendChild(root);
return doc;
XmlElement xmlControls = ReportItemsToXml (xmlDocument,base.Items);
xmlSection.AppendChild(xmlControls);
xmlRoot.AppendChild(xmlSection);
xmlDocument.AppendChild(xmlRoot);
return xmlDocument;
}
#endregion
public void OnItemSelect(object sender, EventArgs e){
if (!base.Suspend) {
if (ItemSelected != null)
ItemSelected(sender, e);
@ -224,27 +249,12 @@ namespace SharpReport{ @@ -224,27 +249,12 @@ namespace SharpReport{
public void OnSelect(){
if (Selected != null)
Selected(this,EventArgs.Empty);
}
private void OnItemAddeded(object sender, CollectionItemEventArgs<IItemRenderer> e){
AddItem(e.Item);
}
private void OnItemRemoveded(object sender, CollectionItemEventArgs<IItemRenderer> e){
//We have to Convert to IDesignable to
//get the VisualControl
SharpReport.Designer.IDesignable iDes = e.Item as SharpReport.Designer.IDesignable;
if (iDes != null) {
try {
this.VisualControl.Body.Controls.Remove (iDes.VisualControl);
} catch (Exception) {
throw new SystemException("ReportSection:OnItemRemoveded");
}
}
}
private void OnItemAddeded(object sender, CollectionItemEventArgs<IItemRenderer> e){
SharpReport.Designer.IDesignable iDesignable = e.Item as SharpReport.Designer.IDesignable;
private void AddItem(IItemRenderer item){
SharpReport.Designer.IDesignable iDesignable = item as SharpReport.Designer.IDesignable;
if (iDesignable != null) {
if (this.VisualControl != null) {
iDesignable.Selected += new EventHandler <EventArgs>(this.ReportItemSelected);
@ -256,6 +266,18 @@ namespace SharpReport{ @@ -256,6 +266,18 @@ namespace SharpReport{
}
}
private void OnRemoveTopLevelItem(object sender, CollectionItemEventArgs<IItemRenderer> e){
//We have to Convert to IDesignable to
//get the VisualControl
SharpReport.Designer.IDesignable iDes = e.Item as SharpReport.Designer.IDesignable;
if (iDes != null) {
this.VisualControl.Body.Controls.Remove (iDes.VisualControl);
}
}
public void Render (ReportSettings settings,
SharpReportCore.ReportPageEventArgs e) {
base.Render (e);
@ -297,6 +319,9 @@ namespace SharpReport{ @@ -297,6 +319,9 @@ namespace SharpReport{
}
}
[Browsable(false)]
[XmlIgnoreAttribute]
public override bool Visible {

184
src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/ReportSectionControlbase.cs

@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
*/
using System;
using System.Globalization;
using System.Drawing;
using System.Windows.Forms;
using System.ComponentModel;
@ -17,7 +18,7 @@ using SharpReport.ReportItems; @@ -17,7 +18,7 @@ using SharpReport.ReportItems;
namespace SharpReport.Designer{
/// <summary>
/// BaseControl for <see cref="ReportSection"></see>
/// BaseControl for <see cref="ReportSection"></see>
/// </summary>
///
@ -29,12 +30,14 @@ namespace SharpReport.Designer{ @@ -29,12 +30,14 @@ namespace SharpReport.Designer{
private Ruler.ctrlRuler ctrlRuler1;
private System.Windows.Forms.Panel bodyPanel;
private string caption = String.Empty;
private string caption;
private bool mouseDown;
private bool dragAllowed;
private int currentY;
private IDesignableFactory designableFactory;
private BaseReportItem draggedItem;
public event EventHandler <EventArgs> ItemSelected;
@ -49,13 +52,13 @@ namespace SharpReport.Designer{ @@ -49,13 +52,13 @@ namespace SharpReport.Designer{
ControlStyles.AllPaintingInWmPaint |
ControlStyles.ResizeRedraw,
true);
this.UpdateStyles();
this.UpdateStyles();
caption = this.Name;
this.designableFactory = new IDesignableFactory();
}
void ReportSectionLoad(object sender, System.EventArgs e)
{
void ReportSectionLoad(object sender, System.EventArgs e){
titleLabel.Text = this.GetType().Name;
}
@ -64,46 +67,35 @@ namespace SharpReport.Designer{ @@ -64,46 +67,35 @@ namespace SharpReport.Designer{
}
private void BodyPanelPaint(object sender, PaintEventArgs e) {
Graphics g = e.Graphics;
g.Clear(this.Body.BackColor);
System.Windows.Forms.ControlPaint.DrawGrid (e.Graphics,
this.Body.ClientRectangle,
GlobalValues.GridSize,
Color.Gray);
private void BodyPanelPaint(object sender, PaintEventArgs pea) {
pea.Graphics.Clear(this.Body.BackColor);
ControlPaint.DrawGrid (pea.Graphics,
this.Body.ClientRectangle,
GlobalValues.GridSize,
Color.Gray);
}
private void TitelLabelPaint(object sender, PaintEventArgs e) {
e.Graphics.Clear (this.BackColor);
private void TitelLabelPaint(object sender, PaintEventArgs pea) {
pea.Graphics.Clear (this.BackColor);
using (Brush brush = new SolidBrush(Color.Black)) {
e.Graphics.DrawString (caption,
this.Font,
brush,
new PointF(0,0));
pea.Graphics.DrawString (caption,
this.Font,
brush,
new PointF(0,0));
}
}
void SplitPanelMouseDown(object sender, System.Windows.Forms.MouseEventArgs e){
mouseDown = true;
mouseDown = true;
currentY = e.Y;
}
void SplitPanelMouseMove(object sender, System.Windows.Forms.MouseEventArgs e){
// System.Console.WriteLine("MoseMove");
if (mouseDown)
{
// if (this.Height + (e.Y - currentY) > titlePanel.Height)
// this.Height = this.Height + (e.Y - currentY);
}
}
void SplitPanelMouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
void SplitPanelMouseUp(object sender, System.Windows.Forms.MouseEventArgs mea){
if (mouseDown){
this.Height = this.Height + (e.Y - currentY);
this.Height = this.Height + (mea.Y - currentY);
if (SectionChanged != null) {
SectionChanged (this,new SectionChangedEventArgs (null,null));
}
@ -121,7 +113,7 @@ namespace SharpReport.Designer{ @@ -121,7 +113,7 @@ namespace SharpReport.Designer{
public Control Head
{
get {
get {
return this.titlePanel;
}
}
@ -144,6 +136,7 @@ namespace SharpReport.Designer{ @@ -144,6 +136,7 @@ namespace SharpReport.Designer{
if (ItemSelected != null) {
ItemSelected (this,new EventArgs());
}
if (ItemDragDrop != null) {
ItemDragDropEventArgs ea = new ItemDragDropEventArgs (ItemDragDropEventArgs.enmAction.Add,
pointAt,
@ -155,58 +148,65 @@ namespace SharpReport.Designer{ @@ -155,58 +148,65 @@ namespace SharpReport.Designer{
#endregion
#region overrides
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
protected override void OnPaint(System.Windows.Forms.PaintEventArgs pea)
{
base.OnPaint(e);
base.OnPaint(pea);
using (Pen p = new Pen(Color.Gray,5)){
e.Graphics.DrawRectangle(p, 0, 0, this.Width - 1, this.Height - 1);
pea.Graphics.DrawRectangle(p, 0, 0, this.Width - 1, this.Height - 1);
}
}
protected override void OnResize (EventArgs e) {
base.OnResize (e);
}
#endregion
#region dragdrop
protected bool CheckDragElement (System.Windows.Forms.DragEventArgs e) {
bool drag = false;
if (e.Data.GetDataPresent(typeof(System.String))){
Object item = (object)e.Data.GetData(typeof(System.String));
string str = Convert.ToString(item);
try {
GlobalEnums.StringToEnum (typeof(GlobalEnums.ReportItemType),str);
e.Effect = DragDropEffects.Copy;
drag = true;
} catch (Exception ex) {
e.Effect = DragDropEffects.None;
drag = false;
throw ex;
} finally {
}
private string DragObjectToString (DragEventArgs dea) {
if (dea.Data.GetDataPresent(typeof(System.String))){
return Convert.ToString (dea.Data.GetData(typeof(System.String)),
CultureInfo.InvariantCulture);
} else {
e.Effect = DragDropEffects.None;
return String.Empty;
}
}
private bool CheckDraggedControl (DragEventArgs dea) {
string str = this.DragObjectToString (dea);
return this.designableFactory.Contains(str);
}
private bool CheckDragElement (System.Windows.Forms.DragEventArgs dea) {
bool drag;
if (CheckDraggedControl(dea)) {
dea.Effect = DragDropEffects.Copy;
drag = true;
} else {
dea.Effect = DragDropEffects.None;
drag = false;
}
return drag;
}
void BodyPanelDragDrop(object sender, System.Windows.Forms.DragEventArgs e){
if (e.Data.GetDataPresent(typeof(System.String))){
Object item = (object)e.Data.GetData(typeof(System.String));
void BodyPanelDragDrop(object sender, System.Windows.Forms.DragEventArgs dea){
if (dea.Data.GetDataPresent(typeof(System.String))){
Object item = (object)dea.Data.GetData(typeof(System.String));
FiredDragDropItem (Convert.ToString(item),
this.Body.PointToClient (Cursor.Position));
this.Body.PointToClient (Cursor.Position));
}
}
void BodyPanelDragEnter(object sender, System.Windows.Forms.DragEventArgs e){
// System.Console.WriteLine("BodyPanelDragEnter");
dragAllowed = CheckDragElement(e);
this.Body.Invalidate();
void BodyPanelDragEnter(object sender, System.Windows.Forms.DragEventArgs dea){
dragAllowed = CheckDragElement(dea);
string s = DragObjectToString (dea);
this.draggedItem = this.designableFactory.Create(s);
}
void BodyPanelDragLeave(object sender, System.EventArgs e){
@ -214,41 +214,40 @@ namespace SharpReport.Designer{ @@ -214,41 +214,40 @@ namespace SharpReport.Designer{
this.Body.Invalidate();
}
private void BodyPanelDragOver(object sender, System.Windows.Forms.DragEventArgs e){
System.Console.WriteLine("ReportSectionControlBase:BodyDragOver");
// if (this.bodyPanel.Controls.Count > 0) {
// if (PerformHitTest()) {
//
// } else {
//// System.Console.WriteLine("\t\t no Hit");
//
// }
//
// }
if (dragAllowed) {
e.Effect = DragDropEffects.Copy;
private void BodyPanelDragOver(object sender, System.Windows.Forms.DragEventArgs dea){
IContainerItem parentControl = this.IsValidContainer(dea);
if (parentControl != null) {
if (parentControl.IsValidChild(this.draggedItem)) {
dea.Effect = DragDropEffects.Copy;
} else {
dea.Effect = DragDropEffects.None;
}
} else {
e.Effect = DragDropEffects.None;
if (dragAllowed) {
dea.Effect = DragDropEffects.Copy;
} else {
dea.Effect = DragDropEffects.None;
}
}
}
/*
bool PerformHitTest() {
Point p = this.bodyPanel.PointToClient(Control.MousePosition);
private IContainerItem IsValidContainer(DragEventArgs dea) {
Point point = new Point(dea.X,dea.Y);
for (int i = 0; i < this.bodyPanel.Controls.Count; i++) {
Control c = this.bodyPanel.Controls[i];
Rectangle r = new Rectangle(c.Left,c.Top,c.ClientRectangle.Width,c.ClientRectangle.Height);
if (r.Contains (p)) {
this.ItemSelected(c,EventArgs.Empty);
return true;
}
Rectangle r = c.ClientRectangle;
if (r.Contains(c.PointToClient(point))) {
IContainerItem ia = c as IContainerItem;
return ia;
}
}
return false;
return null;
}
*/
#endregion
@ -270,9 +269,9 @@ namespace SharpReport.Designer{ @@ -270,9 +269,9 @@ namespace SharpReport.Designer{
// bodyPanel
//
this.bodyPanel.AllowDrop = true;
this.bodyPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.bodyPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.bodyPanel.BackColor = System.Drawing.SystemColors.Window;
this.bodyPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.bodyPanel.Location = new System.Drawing.Point(24, 20);
@ -313,7 +312,6 @@ namespace SharpReport.Designer{ @@ -313,7 +312,6 @@ namespace SharpReport.Designer{
this.splitPanel.Size = new System.Drawing.Size(432, 4);
this.splitPanel.TabIndex = 7;
this.splitPanel.MouseUp += new System.Windows.Forms.MouseEventHandler(this.SplitPanelMouseUp);
this.splitPanel.MouseMove += new System.Windows.Forms.MouseEventHandler(this.SplitPanelMouseMove);
this.splitPanel.MouseDown += new System.Windows.Forms.MouseEventHandler(this.SplitPanelMouseDown);
//
// titlePanel
@ -353,5 +351,5 @@ namespace SharpReport.Designer{ @@ -353,5 +351,5 @@ namespace SharpReport.Designer{
}
}

12
src/AddIns/Misc/SharpReport/SharpReport/Designer/SideTab/BuildSideTab.cs

@ -71,6 +71,12 @@ namespace SharpReport @@ -71,6 +71,12 @@ namespace SharpReport
GlobalEnums.ReportItemType.ReportTextItem.ToString(),
bitmap);
tab.Items.Add (t);
t = sideTab.SideTabItemFactory.CreateSideTabItem( "DataRow",
GlobalEnums.ReportItemType.ReportRowItem.ToString(),
ResourceService.GetBitmap("Icons.16x16.SharpQuery.Table"));
tab.Items.Add (t);
t = sideTab.SideTabItemFactory.CreateSideTabItem( ResourceService.GetString("SharpReport.Toolbar.DataField"),
GlobalEnums.ReportItemType.ReportDataItem.ToString(),
ResourceService.GetBitmap("Icons.16x16.SharpQuery.Column"));
@ -82,10 +88,12 @@ namespace SharpReport @@ -82,10 +88,12 @@ namespace SharpReport
GlobalEnums.ReportItemType.ReportImageItem.ToString(),
bitmap);
tab.Items.Add (t);
t = sideTab.SideTabItemFactory.CreateSideTabItem( ResourceService.GetString("SharpReport.Toolbar.Rectangle"),
GlobalEnums.ReportItemType.ReportRectangleItem.ToString(),
GlobalValues.RectangleBitmap());
ResourceService.GetBitmap("Icons.16x16.SharpReport.Rectangle"));
// t = sideTab.SideTabItemFactory.CreateSideTabItem( ResourceService.GetString("SharpReport.Toolbar.Rectangle"),
// GlobalEnums.ReportItemType.ReportRectangleItem.ToString(),
// GlobalValues.RectangleBitmap());
tab.Items.Add (t);
bitmap = ResourceService.GetIcon("Icons.16.16.SharpReport.Line").ToBitmap();

80
src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ControlHelper.cs

@ -0,0 +1,80 @@ @@ -0,0 +1,80 @@
/*
* Created by SharpDevelop.
* User: Forstmeier Helmut
* Date: 03.03.2006
* Time: 08:28
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Drawing;
using System.Windows.Forms;
namespace SharpReport.Designer
{
/// <summary>
/// Description of ControlHelper.
/// </summary>
public class ControlHelper{
Control control;
public ControlHelper(Control control){
if (control == null) {
throw new ArgumentNullException("control");
}
this.control = control;
}
public Rectangle BuildFocusRectangle {
get {
return new Rectangle(this.control.ClientRectangle.Left,
this.control.ClientRectangle.Top,
this.control.ClientRectangle.Width -1,
this.control.ClientRectangle.Height -1);
}
}
public void DrawEdges (PaintEventArgs e) {
int arc = 5;
Rectangle r = this.BuildFocusRectangle;
using (Pen p = new Pen (Color.Black)) {
e.Graphics.DrawRectangle (p,
r);
}
using (Pen pb = new Pen(this.control.BackColor)){
//top
int leftLine = r.Left + arc;
int rightLine = r.Left + r.Width - arc;
int botLine = r.Top + r.Height;
//top
e.Graphics.DrawLine (pb,
leftLine,r.Top,
rightLine, r.Top);
//bottom
e.Graphics.DrawLine (pb,
leftLine,botLine,
rightLine,botLine);
//left
int top = r.Top + arc;
int down = r.Top + r.Height - arc;
e.Graphics.DrawLine(pb,
r.Left,top,
r.Left,down);
//right
e.Graphics.DrawLine(pb,
r.Left + r.Width,top,
r.Left + r.Width,down);
}
}
}
}

67
src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportControlBase.cs

@ -22,8 +22,8 @@ namespace SharpReport.Designer{ @@ -22,8 +22,8 @@ namespace SharpReport.Designer{
public abstract class ReportControlBase : ReportObjectControlBase{
private System.Windows.Forms.Label lblTopLeft;
private System.Windows.Forms.Label lblBottomRight;
const string contextMenuPath = "/SharpReport/ContextMenu/Items";
private ControlHelper controlHelper;
private const string contextMenuPath = "/SharpReport/ContextMenu/Items";
private enum SizeDirection{
None,
@ -46,6 +46,7 @@ namespace SharpReport.Designer{ @@ -46,6 +46,7 @@ namespace SharpReport.Designer{
this.UpdateStyles();
lblTopLeft.Visible = false;
lblBottomRight.Visible = false;
controlHelper = new ControlHelper((Control)this);
}
private void ReportControlBaseEnter(object sender, System.EventArgs e){
@ -94,15 +95,7 @@ namespace SharpReport.Designer{ @@ -94,15 +95,7 @@ namespace SharpReport.Designer{
mouseDown = SizeDirection.None;
base.OnControlChanged();
}
private Rectangle BuildFocusRectangle(){
return new Rectangle(this.ClientRectangle.Left,
this.ClientRectangle.Top,
this.ClientRectangle.Width -1,
this.ClientRectangle.Height -1);
}
private void DrawDecorations(Graphics g){
// it is not said that the
// focused object in all the app
@ -112,48 +105,13 @@ namespace SharpReport.Designer{ @@ -112,48 +105,13 @@ namespace SharpReport.Designer{
if (lblBottomRight.Visible){
g.Clear(this.Body.BackColor);
ControlPaint.DrawFocusRectangle(g,
this.BuildFocusRectangle());
controlHelper.BuildFocusRectangle);
}
}
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e){
base.OnPaint(e);
int arc = 5;
Rectangle r = this.BuildFocusRectangle();
using (Pen p = new Pen (Color.Black)) {
e.Graphics.DrawRectangle (p,
r);
}
using (Pen pb = new Pen(this.BackColor)){
//top
int leftLine = r.Left + arc;
int rightLine = r.Left + r.Width - arc;
int botLine = r.Top + r.Height;
//top
e.Graphics.DrawLine (pb,
leftLine,r.Top,
rightLine, r.Top);
//bottom
e.Graphics.DrawLine (pb,
leftLine,botLine,
rightLine,botLine);
//left
int top = r.Top + arc;
int down = r.Top + r.Height - arc;
e.Graphics.DrawLine(pb,
r.Left,top,
r.Left,down);
//right
e.Graphics.DrawLine(pb,
r.Left + r.Width,top,
r.Left + r.Width,down);
}
controlHelper.DrawEdges(e);
this.DrawDecorations(e.Graphics);
}
@ -161,17 +119,6 @@ namespace SharpReport.Designer{ @@ -161,17 +119,6 @@ namespace SharpReport.Designer{
base.OnResize(e);
this.Invalidate();
}
/*
private Image Line(){
Bitmap b = new Bitmap (8,1);
using (Graphics g = Graphics.FromImage (b)){
using (Pen p = new Pen(Color.Black,1)){
g.DrawLine(p,0,0,8,0);
}
}
return (Image)b;
}
*/
#region Windows Forms Designer generated code
/// <summary>

47
src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportDbTextControl.cs

@ -8,50 +8,25 @@ @@ -8,50 +8,25 @@
*/
using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing;
using SharpReportCore;
namespace SharpReport.Designer
{
namespace SharpReport.Designer{
/// <summary>
/// Description of ReportDbTextItem.
/// </summary>
internal class ReportDbTextControl : ReportControlBase
{
private TextDrawer textDrawer = new TextDrawer();
public ReportDbTextControl()
{
internal class ReportDbTextControl : ReportTextControl{
public ReportDbTextControl():base(){
InitializeComponent();
this.SetStyle(ControlStyles.DoubleBuffer |
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.ResizeRedraw,
true);
this.UpdateStyles();
this.Size = GlobalValues.PreferedSize;
base.Name = this.Name;
}
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
base.OnPaint(e);
Graphics g = e.Graphics;
// we can draw in the control as we draw in preview
StringFormat fmt = base.StringFormat;
fmt.Alignment = base.StringAlignment;
textDrawer.DrawString(g,
this.Text,
this.Font,
new SolidBrush(this.ForeColor),
(RectangleF)this.ClientRectangle,
fmt);
protected override void OnPaint(System.Windows.Forms.PaintEventArgs pea){
base.Text = this.Text;
base.OnPaint(pea);
}

3
src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportImageControl.cs

@ -9,9 +9,8 @@ @@ -9,9 +9,8 @@
//------------------------------------------------------------------------------
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Windows.Forms;
using SharpReport.Designer;
/// <summary>

74
src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportRowControl.cs

@ -0,0 +1,74 @@ @@ -0,0 +1,74 @@
/*
* Created by SharpDevelop.
* User: Forstmeier Helmut
* Date: 01.03.2006
* Time: 14:29
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Drawing;
using System.ComponentModel;
using System.Windows.Forms;
using SharpReportCore;
namespace SharpReport.Designer{
/// <summary>
/// Description of ReportTableControl.
/// </summary>
public class ReportRowControl:ReportControlBase{
ControlHelper controlHelper;
public ReportRowControl():base(){
InitializeComponent();
this.SetStyle(ControlStyles.DoubleBuffer |
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.ResizeRedraw,
true);
this.UpdateStyles();
this.Size = new Size((GlobalValues.PreferedSize.Width * 2) + 10,
GlobalValues.PreferedSize.Height + 10);
controlHelper = new ControlHelper((Control)this);
}
#region overrides
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e){
base.OnPaint(e);
TextDrawer tx = new TextDrawer();
tx.DrawString(e.Graphics,this.Name,
this.Font,
new SolidBrush(this.ForeColor),
new Rectangle(1,0,e.ClipRectangle.Width,(int)this.Font.GetHeight(e.Graphics) + 2),
new StringFormat());
}
public override string ToString() {
return this.Name;
}
#endregion
#region Windows Forms Designer generated code
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent() {
//
// ReportRectangleControl
//
this.BackColor = System.Drawing.Color.White;
this.Name = "RowItem";
this.Size = new System.Drawing.Size(72, 40);
}
#endregion
}
}

29
src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportTextControl.cs

@ -8,29 +8,29 @@ @@ -8,29 +8,29 @@
*/
using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing;
using System.Windows.Forms;
using SharpReportCore;
namespace SharpReport.Designer
{
namespace SharpReport.Designer{
/// <summary>
/// Description of ReportTextItem.
/// </summary>
internal class ReportTextControl : ReportControlBase{
private TextDrawer textDrawer = new TextDrawer();
public ReportTextControl(){
InitializeComponent();
this.SetStyle(ControlStyles.DoubleBuffer |
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.ResizeRedraw,
true);
this.UpdateStyles();
this.Size = GlobalValues.PreferedSize;
}
@ -44,15 +44,22 @@ namespace SharpReport.Designer @@ -44,15 +44,22 @@ namespace SharpReport.Designer
}
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e){
base.OnPaint(e);
Graphics g = e.Graphics;
protected override void OnPaint(System.Windows.Forms.PaintEventArgs pea){
base.OnPaint(pea);
Graphics graphics = pea.Graphics;
StringFormat fmt = GlobalValues.StandartStringFormat();
fmt.Alignment = this.StringAlignment;
string str;
textDrawer.DrawString(g,
this.Text,
if (String.IsNullOrEmpty(this.Text)) {
str = this.Name;
} else {
str = this.Text;
}
textDrawer.DrawString(graphics,
str,
this.Font,
new SolidBrush(this.ForeColor),
(RectangleF)this.ClientRectangle,
@ -72,7 +79,7 @@ namespace SharpReport.Designer @@ -72,7 +79,7 @@ namespace SharpReport.Designer
//
this.BackColor = System.Drawing.Color.White;
this.Name = "ReportTextItem";
this.Size = new System.Drawing.Size(120, 20);
this.Size = new System.Drawing.Size(120, 60);
}
#endregion

6
src/AddIns/Misc/SharpReport/SharpReport/ReportItems/Functions/MiscFunctions/PageNumber.cs

@ -44,7 +44,7 @@ namespace SharpReport.ReportItems.Functions { @@ -44,7 +44,7 @@ namespace SharpReport.ReportItems.Functions {
base.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler (BasePropertyChange);
ItemsHelper.UpdateTextControl (this.visualControl,this);
ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this);
this.Text = functionName;
this.visualControl.FunctionValue = String.Empty;
@ -61,13 +61,13 @@ namespace SharpReport.ReportItems.Functions { @@ -61,13 +61,13 @@ namespace SharpReport.ReportItems.Functions {
private void BasePropertyChange (object sender, PropertyChangedEventArgs e){
if (initDone == true) {
ItemsHelper.UpdateTextBase(this.visualControl,this);
ItemsHelper.UpdateControlFromTextBase(this.visualControl,this);
}
}
private void OnControlChanged (object sender, EventArgs e) {
ItemsHelper.UpdateTextControl (this.visualControl,this);
ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this);
this.HandlePropertyChanged("OnControlChanged");
}

6
src/AddIns/Misc/SharpReport/SharpReport/ReportItems/Functions/MiscFunctions/Today.cs

@ -48,7 +48,7 @@ namespace SharpReport.ReportItems.Functions { @@ -48,7 +48,7 @@ namespace SharpReport.ReportItems.Functions {
this.visualControl.ForeColorChanged += new EventHandler (OnControlChanged);
base.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler (BasePropertyChange);
ItemsHelper.UpdateTextControl (this.visualControl,this);
ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this);
this.Text = functionName;
GrapFromBase();
@ -64,13 +64,13 @@ namespace SharpReport.ReportItems.Functions { @@ -64,13 +64,13 @@ namespace SharpReport.ReportItems.Functions {
#region events
private void BasePropertyChange (object sender, PropertyChangedEventArgs e){
if (initDone == true) {
ItemsHelper.UpdateTextBase(this.visualControl,this);
ItemsHelper.UpdateControlFromTextBase(this.visualControl,this);
}
}
private void OnControlChanged (object sender, EventArgs e) {
ItemsHelper.UpdateTextControl (this.visualControl,this);
ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this);
this.HandlePropertyChanged("OnControlChanged");
}

8
src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportCircleItem.cs

@ -17,7 +17,7 @@ using SharpReport.Designer; @@ -17,7 +17,7 @@ using SharpReport.Designer;
namespace SharpReport.ReportItems{
public class ReportCircleItem : BaseCircleItem,SharpReport.Designer.IDesignable{
public class ReportCircleItem : BaseCircleItem,IDesignable{
/// <summary>
/// This Class draws a Circle
///All this Graphical Classes derive from <see cref="BaseGraphicItem"></see>
@ -42,7 +42,7 @@ namespace SharpReport.ReportItems{ @@ -42,7 +42,7 @@ namespace SharpReport.ReportItems{
this.visualControl.ForeColorChanged += new EventHandler (OnControlChanged);
base.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler (BasePropertyChange);
ItemsHelper.UpdateGraphicControl (this.visualControl,this);
ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this);
this.initDone = true;
}
@ -50,12 +50,12 @@ namespace SharpReport.ReportItems{ @@ -50,12 +50,12 @@ namespace SharpReport.ReportItems{
private void BasePropertyChange (object sender, PropertyChangedEventArgs e){
if (initDone == true) {
ItemsHelper.UpdateGraphicBase (this.visualControl,this);
ItemsHelper.UpdateControlFromGraphicBase (this.visualControl,this);
}
}
private void OnControlChanged (object sender, EventArgs e) {
ItemsHelper.UpdateGraphicControl (this.visualControl,this);
ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this);
this.HandlePropertyChanged("OnControlChanged");
}

4
src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportImageItem.cs

@ -37,7 +37,7 @@ namespace SharpReport.ReportItems { @@ -37,7 +37,7 @@ namespace SharpReport.ReportItems {
this.visualControl.ForeColorChanged += new EventHandler (OnControlChanged);
base.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler (BasePropertyChange);
ItemsHelper.UpdateGraphicControl (this.visualControl,this);
ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this);
this.initDone = true;
}
@ -71,7 +71,7 @@ namespace SharpReport.ReportItems { @@ -71,7 +71,7 @@ namespace SharpReport.ReportItems {
}
private void OnControlChanged (object sender, EventArgs e) {
ItemsHelper.UpdateGraphicControl (this.visualControl,this);
ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this);
this.HandlePropertyChanged("OnControlChanged");
}

6
src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportLineItem.cs

@ -41,7 +41,7 @@ namespace SharpReport.ReportItems{ @@ -41,7 +41,7 @@ namespace SharpReport.ReportItems{
this.visualControl.ForeColorChanged += new EventHandler (OnControlChanged);
base.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler (BasePropertyChange);
ItemsHelper.UpdateGraphicControl (this.visualControl,this);
ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this);
this.initDone = true;
}
@ -49,12 +49,12 @@ namespace SharpReport.ReportItems{ @@ -49,12 +49,12 @@ namespace SharpReport.ReportItems{
private void BasePropertyChange (object sender, PropertyChangedEventArgs e){
if (initDone == true) {
ItemsHelper.UpdateGraphicBase (this.visualControl,this);
ItemsHelper.UpdateControlFromGraphicBase (this.visualControl,this);
}
}
private void OnControlChanged (object sender, EventArgs e) {
ItemsHelper.UpdateGraphicControl (this.visualControl,this);
ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this);
this.HandlePropertyChanged("OnControlChanged");
}

6
src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportRectangleItem.cs

@ -47,7 +47,7 @@ namespace SharpReport.ReportItems{ @@ -47,7 +47,7 @@ namespace SharpReport.ReportItems{
this.VisualControl.DragEnter += new DragEventHandler (OnDragEnter);
base.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler (BasePropertyChange);
ItemsHelper.UpdateGraphicControl (this.visualControl,this);
ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this);
this.initDone = true;
}
@ -61,12 +61,12 @@ namespace SharpReport.ReportItems{ @@ -61,12 +61,12 @@ namespace SharpReport.ReportItems{
private void BasePropertyChange (object sender, PropertyChangedEventArgs e){
if (initDone == true) {
ItemsHelper.UpdateGraphicBase (this.visualControl,this);
ItemsHelper.UpdateControlFromGraphicBase (this.visualControl,this);
}
}
private void OnControlChanged (object sender, EventArgs e) {
ItemsHelper.UpdateGraphicControl (this.visualControl,this);
ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this);
this.HandlePropertyChanged("OnControlChanged");
}

25
src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ItemsHelper.cs

@ -23,7 +23,7 @@ namespace SharpReport { @@ -23,7 +23,7 @@ namespace SharpReport {
public class ItemsHelper : object {
public static void UpdateTextControl (ReportObjectControlBase control,
public static void UpdateBaseFromTextControl (ReportObjectControlBase control,
BaseReportItem item) {
item.SuspendLayout();
@ -36,10 +36,10 @@ namespace SharpReport { @@ -36,10 +36,10 @@ namespace SharpReport {
item.ResumeLayout();
}
public static void UpdateGraphicControl (AbstractGraphicControl control,
public static void UpdateBaseFromGraphicControl (AbstractGraphicControl control,
BaseGraphicItem item) {
ItemsHelper.UpdateTextControl (control,item);
ItemsHelper.UpdateBaseFromTextControl (control,item);
item.SuspendLayout();
item.Thickness = control.Thickness;
item.DashStyle = control.DashStyle;
@ -47,36 +47,33 @@ namespace SharpReport { @@ -47,36 +47,33 @@ namespace SharpReport {
}
public static void UpdateTextBase (ReportObjectControlBase control,
public static void UpdateControlFromTextBase (ReportObjectControlBase control,
BaseReportItem item) {
// control.SuspendLayout();
// item.SuspendLayout();
control.SuspendLayout();
item.SuspendLayout();
control.BackColor = item.BackColor;
control.ForeColor = item.ForeColor;
control.Location = item.Location;
control.Size = item.Size;
control.Font = item.Font;
control.Name = item.Name;
BaseTextItem b = item as BaseTextItem;
if (b != null) {
control.StringAlignment = b.StringAlignment;
}
// item.ResumeLayout();
// control.ResumeLayout();
item.ResumeLayout();
control.ResumeLayout();
}
public static void UpdateGraphicBase (AbstractGraphicControl control,
public static void UpdateControlFromGraphicBase (AbstractGraphicControl control,
BaseGraphicItem item) {
ItemsHelper.UpdateTextBase(control,item);
// control.SuspendLayout();
// item.SuspendLayout();
ItemsHelper.UpdateControlFromTextBase(control,item);
control.Location = item.Location;
control.DashStyle = item.DashStyle;
control.Thickness = item.Thickness;
// item.ResumeLayout();
// control.ResumeLayout();
}
}
}

67
src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportDataItem.cs

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
/*
* Created by SharpDevelop.
* User: Forstmeier Helmut
* User: Forstmeier Peter
* Date: 13.11.2004
* Time: 22:48
*
@ -19,29 +19,27 @@ namespace SharpReport.ReportItems{ @@ -19,29 +19,27 @@ namespace SharpReport.ReportItems{
/// This class reads a Column from a DataSource
/// </summary>
public class ReportDataItem : BaseDataItem ,SharpReport.Designer.IDesignable{
public class ReportDataItem : BaseDataItem ,IDesignable{
private ReportDbTextControl visualControl;
bool initDone;
#region Constructors
public ReportDataItem() : base(){
Setup();
if (base.ColumnName != null) {
this.visualControl.Text = base.ColumnName;
} else {
visualControl.Text = base.UnboundText;
}
public ReportDataItem() : this(String.Empty){
}
public ReportDataItem(string columnName):base(columnName){
Setup();
visualControl.Text = base.ColumnName;
}
#endregion
#region SetUp
private void Setup(){
visualControl = new ReportDbTextControl();
this.visualControl.Text = base.ColumnName;
this.visualControl.Click += new EventHandler(OnControlSelect);
this.visualControl.VisualControlChanged += new EventHandler (OnControlChanged);
@ -50,8 +48,8 @@ namespace SharpReport.ReportItems{ @@ -50,8 +48,8 @@ namespace SharpReport.ReportItems{
this.visualControl.ForeColorChanged += new EventHandler (OnControlChanged);
base.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler (BasePropertyChange);
ItemsHelper.UpdateTextControl (this.visualControl,this);
this.Text = visualControl.Name;
ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this);
this.Text = base.ColumnName;
GrapFromBase();
this.initDone = true;
}
@ -65,12 +63,6 @@ namespace SharpReport.ReportItems{ @@ -65,12 +63,6 @@ namespace SharpReport.ReportItems{
#endregion
#region overrides
public override void Dispose() {
base.Dispose();
this.visualControl.Dispose();
}
public override string ToString(){
return this.Name;
}
@ -80,17 +72,17 @@ namespace SharpReport.ReportItems{ @@ -80,17 +72,17 @@ namespace SharpReport.ReportItems{
#region events's
private void BasePropertyChange (object sender, PropertyChangedEventArgs e){
if (initDone == true) {
ItemsHelper.UpdateTextBase(this.visualControl,this);
ItemsHelper.UpdateControlFromTextBase(this.visualControl,this);
}
}
private void OnControlChanged (object sender, EventArgs e) {
ItemsHelper.UpdateTextControl (this.visualControl,this);
ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this);
this.HandlePropertyChanged("OnControlChanged");
}
public void OnControlSelect(object sender, EventArgs e){
private void OnControlSelect(object sender, EventArgs e){
if (Selected != null)
Selected(this,e);
}
@ -173,7 +165,7 @@ namespace SharpReport.ReportItems{ @@ -173,7 +165,7 @@ namespace SharpReport.ReportItems{
#region IDesignable
[System.Xml.Serialization.XmlIgnoreAttribute]
[Browsable(false)]
public ReportObjectControlBase VisualControl {
@ -181,9 +173,36 @@ namespace SharpReport.ReportItems{ @@ -181,9 +173,36 @@ namespace SharpReport.ReportItems{
return visualControl;
}
}
public new event PropertyChangedEventHandler PropertyChanged;
public event EventHandler <EventArgs> Selected;
#endregion
/*
#region IDisposable
public override void Dispose(){
this.Dispose(true);
GC.SuppressFinalize(this);
}
~ReportDataItem()
{
Dispose(false);
}
protected override void Dispose(bool disposing){
try {
if (disposing) {
// Free other state (managed objects).
if (this.visualControl != null) {
this.visualControl.Dispose();
}
}
} finally {
base.Dispose();
}
}
#endregion
*/
}
}

192
src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportRowItem.cs

@ -0,0 +1,192 @@ @@ -0,0 +1,192 @@
/*
* Created by SharpDevelop.
* User: Forstmeier Helmut
* Date: 01.03.2006
* Time: 14:35
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.ComponentModel;
using SharpReport.Designer;
using SharpReportCore;
namespace SharpReport.ReportItems
{
/// <summary>
/// Description of ReportTableItem.
/// </summary>
public class ReportRowItem : RowItem ,IDesignable{
private ReportRowControl visualControl;
private bool initDone;
#region Constructor
public ReportRowItem():this (GlobalValues.UnboundName){
}
public ReportRowItem (string tableName):base(tableName) {
Setup();
}
#endregion
#region Setup
private void Setup(){
visualControl = new ReportRowControl();
this.visualControl.Click += new EventHandler(OnControlSelect);
this.visualControl.VisualControlChanged += new EventHandler (OnControlChanged);
this.visualControl.FontChanged += new EventHandler (OnControlChanged);
this.visualControl.ForeColorChanged += new EventHandler (OnControlChanged);
this.visualControl.BackColorChanged += new EventHandler (OnAppereanceChanged);
base.PropertyChanged += new PropertyChangedEventHandler (BasePropertyChange);
base.Items.Added += OnAdd;
base.Items.Removed += OnRemove;
ItemsHelper.UpdateControlFromTextBase (this.visualControl,this);
this.initDone = true;
}
#endregion
#region Events for Childs
private void ChildSelected(object sender, EventArgs e){
if (Selected != null)
Selected(sender,e);
}
private void OnChildControlChanged (object sender, EventArgs e) {
ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this);
this.HandlePropertyChanged("OnChildControlChanged");
}
private void ChildPropertyChange (object sender, PropertyChangedEventArgs e){
if (initDone == true) {
ItemsHelper.UpdateControlFromTextBase (this.visualControl,this);
}
}
#endregion
private void UpdateChilds () {
foreach (BaseReportItem br in this.Items) {
br.BackColor = this.BackColor;
}
}
#region EventHandling for this Class
private void OnAdd (object sender, CollectionItemEventArgs<IItemRenderer> e){
IDesignable des = e.Item as IDesignable;
if (des != null) {
this.visualControl.Controls.Add (des.VisualControl);
des.Selected += ChildSelected;
des.PropertyChanged += ChildPropertyChange;
}
}
private void OnRemove (object sender, CollectionItemEventArgs<IItemRenderer> e){
IDesignable des = e.Item as IDesignable;
if (des != null) {
this.visualControl.Controls.Remove(des.VisualControl);
des.Selected -= ChildSelected;
this.HandlePropertyChanged("OnChildControlRemoved");
}
}
private void BasePropertyChange (object sender, PropertyChangedEventArgs e){
if (initDone == true) {
ItemsHelper.UpdateControlFromTextBase (this.visualControl,this);
}
}
private void OnControlChanged (object sender, EventArgs e) {
ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this);
this.HandlePropertyChanged("OnControlChanged");
}
private void OnAppereanceChanged (object sender, EventArgs e) {
ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this);
UpdateChilds();
this.HandlePropertyChanged("OnControlChanged");
}
private void OnControlSelect(object sender, EventArgs e){
if (Selected != null)
Selected(this,e);
}
/// <summary>
/// A Property in ReportItem has changed, inform the Designer
/// to set the View's 'IsDirtyFlag' to true
/// </summary>
protected void HandlePropertyChanged(string info) {
if ( !base.Suspend) {
if (PropertyChanged != null) {
PropertyChanged (this,new PropertyChangedEventArgs(info));
}
}
}
#endregion
#region IDesignable
[System.Xml.Serialization.XmlIgnoreAttribute]
[Browsable(false)]
public ReportObjectControlBase VisualControl {
get {
return visualControl;
}
}
public new event PropertyChangedEventHandler PropertyChanged;
public event EventHandler <EventArgs> Selected;
#endregion
#region overrides
public override string ToString(){
return this.Name;
}
#endregion
/*
#region IDisposable
public override void Dispose(){
this.Dispose(true);
GC.SuppressFinalize(this);
}
~ReportRowItem()
{
Dispose(false);
}
protected override void Dispose(bool disposing){
try {
if (disposing) {
}
} finally {
if (this.visualControl != null) {
this.visualControl.Dispose();
this.visualControl = null;
}
base.Dispose();
}
}
#endregion
*/
}
}

59
src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportTextItem.cs

@ -14,7 +14,6 @@ using System.Drawing.Printing; @@ -14,7 +14,6 @@ using System.Drawing.Printing;
using SharpReportCore;
using SharpReport.Designer;
using SharpReport.ReportItems;
namespace SharpReport.ReportItems {
/// <summary>
@ -25,7 +24,7 @@ namespace SharpReport.ReportItems { @@ -25,7 +24,7 @@ namespace SharpReport.ReportItems {
public class ReportTextItem : BaseTextItem,SharpReport.Designer.IDesignable{
public class ReportTextItem : BaseTextItem,IDesignable {
private ReportTextControl visualControl;
@ -41,27 +40,20 @@ namespace SharpReport.ReportItems { @@ -41,27 +40,20 @@ namespace SharpReport.ReportItems {
this.visualControl.FontChanged += new EventHandler (OnControlChanged);
this.visualControl.ForeColorChanged += new EventHandler (OnControlChanged);
base.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler (BasePropertyChange);
ItemsHelper.UpdateTextControl (this.visualControl,this);
base.PropertyChanged += new PropertyChangedEventHandler (BasePropertyChange);
// ItemsHelper.UpdateTextControl (this.visualControl,this);
this.Text = visualControl.Name;
GrapFromBase();
visualControl.StringFormat = base.StandartStringFormat;
ItemsHelper.UpdateControlFromTextBase (this.visualControl,this);
this.initDone = true;
}
private void GrapFromBase() {
this.visualControl.SuspendLayout();
visualControl.StringFormat = base.StandartStringFormat;
this.visualControl.ResumeLayout();
}
#endregion
#region overrides
public override void Dispose() {
base.Dispose();
this.visualControl.Dispose();
}
public override string ToString(){
return this.Name;
@ -71,18 +63,21 @@ namespace SharpReport.ReportItems { @@ -71,18 +63,21 @@ namespace SharpReport.ReportItems {
#region events
private void BasePropertyChange (object sender, PropertyChangedEventArgs e){
System.Console.WriteLine("Text:BasePropertyChanged");
if (initDone == true) {
ItemsHelper.UpdateTextBase(this.visualControl,this);
ItemsHelper.UpdateControlFromTextBase(this.visualControl,this);
}
}
private void OnControlChanged (object sender, EventArgs e) {
ItemsHelper.UpdateTextControl (this.visualControl,this);
System.Console.WriteLine("Text:OnControlChanged");
ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this);
this.HandlePropertyChanged("OnControlSelected");
}
public void OnControlSelect(object sender, EventArgs e){
private void OnControlSelect(object sender, EventArgs e){
System.Console.WriteLine("Text:OnControlSelect");
if (Selected != null)
Selected(this,e);
}
@ -93,6 +88,7 @@ namespace SharpReport.ReportItems { @@ -93,6 +88,7 @@ namespace SharpReport.ReportItems {
/// </summary>
protected void HandlePropertyChanged(string info) {
System.Console.WriteLine("Text:HandlePropertyChanged");
if ( !base.Suspend) {
if (PropertyChanged != null) {
PropertyChanged (this,new PropertyChangedEventArgs(info));
@ -171,5 +167,32 @@ namespace SharpReport.ReportItems { @@ -171,5 +167,32 @@ namespace SharpReport.ReportItems {
public event EventHandler <EventArgs> Selected;
#endregion
/*
#region IDisposable
public override void Dispose(){
this.Dispose(true);
GC.SuppressFinalize(this);
}
~ReportTextItem()
{
Dispose(false);
}
protected override void Dispose(bool disposing){
try {
if (disposing) {
// Free other state (managed objects).
if (this.visualControl != null) {
this.visualControl.Dispose();
}
}
} finally {
base.Dispose();
}
}
#endregion
*/
}
}

3
src/AddIns/Misc/SharpReport/SharpReport/SharpReport.csproj

@ -84,6 +84,9 @@ @@ -84,6 +84,9 @@
<Compile Include="Configuration\AssemblyInfo.cs" />
<Compile Include="Designer\SectionControls\ReportSection.cs" />
<Compile Include="Designer\SideTab\BuildSideTab.cs" />
<Compile Include="Designer\VisualControls\ReportRowControl.cs" />
<Compile Include="ReportItems\TextBased\ReportRowItem.cs" />
<Compile Include="Designer\VisualControls\ControlHelper.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="Designer" />

143
src/AddIns/Misc/SharpReport/SharpReport/SharpReportManager.cs

@ -111,40 +111,11 @@ namespace SharpReport{ @@ -111,40 +111,11 @@ namespace SharpReport{
}
private void AddItemsToSection (BaseSection section,ReportItemCollection collection) {
if ((section == null)|| (collection == null) ) {
throw new ArgumentNullException ("section");
}
if (collection == null) {
throw new ArgumentNullException("collection");
}
// if there are already items in the section,
// the we have to append the Items, means whe have to enlarge the section
if (section.Items.Count > 0) {
section.Size = new Size (section.Size.Width,
section.Size.Height + GlobalValues.DefaultSectionHeight);
// Adjust the Location
foreach (IItemRenderer i in collection) {
i.Location = new Point (i.Location.X,GlobalValues.DefaultSectionHeight);
}
}
for (int i = 0;i < collection.Count ;i ++ ) {
BaseReportItem r = (BaseReportItem)collection[i];
r.Parent = section.Name;
section.Items.Add (r);
}
}
private Font CopyFont (Font orgF) {
Font f = new Font(orgF.Name,orgF.Size,orgF.Style,orgF.Unit);
return f;
}
#endregion
#region Standarts for all reports (Headlines etc)
/// <summary>
@ -163,6 +134,7 @@ namespace SharpReport{ @@ -163,6 +134,7 @@ namespace SharpReport{
item.Font = CopyFont(model.ReportSettings.DefaultFont);
item.Location = new Point (0,0);
item.Size = new Size (item.Size.Width,item.Font.Height + SharpReportCore.GlobalValues.EnlargeControl);
item.Parent = section;
section.Items.Add (item);
item.ResumeLayout();
section.ResumeLayout();
@ -182,119 +154,20 @@ namespace SharpReport{ @@ -182,119 +154,20 @@ namespace SharpReport{
pageNumber.Text = ResourceService.GetString("SharpReport.Toolbar.Functions.PageNumber");
pageNumber.Location = new Point (0,0);
pageNumber.Parent = section;
section.Items.Add(pageNumber);
pageNumber.ResumeLayout();
section.ResumeLayout();
}
}
#endregion
#region HeaderColumns
/*
/// <summary>
/// Builds ColumHeaders for Reports, we take the ColumnNames as Text Property
/// </summary>
/// <param name="model">A valid(filled) reportModel</param>
/// <param name="section">The Section to use for headerLines</param>
/// <param name="schemaTable">SchemaTable witch contains the Column Informations</param>
public void HeaderColumnsFromTable (BaseSection section,DataTable schemaTable) {
if (section == null) {
throw new ArgumentException("SharpReportManager:CreateColumnHeadersFromTable <section>");
}
using (AutoReport auto = new AutoReport()){
try {
ReportItemCollection headerCol = auto.AutoHeaderFromTable (section,schemaTable,false);
AddItemsToSection (section,headerCol);
} catch (Exception) {
throw;
}
}
}
*/
///<summary>
/// Create ColumHeaders for Reports
/// </summary>
/// <param name="section">A ReportSection whre to build the Hedarlines</param>
///<param name="collection">A <see cref="ReportitemCollection"></see>
/// containing the basic informations</param>
public void HeaderColumnsFromReportItems (BaseSection section,ReportItemCollection collection) {
using (AutoReport auto = new AutoReport()){
try {
ReportItemCollection colDetail = auto.AutoHeaderFromReportItems (collection,section,false);
section.SuspendLayout();
AddItemsToSection (section,colDetail);
section.ResumeLayout();
} catch(Exception) {
throw;
}
}
}
#endregion
#region Create report from Query
/*
/// <summary>
/// Create Columns from SchemaTable
/// </summary>
///<param name="model">a valid reportModel</param>
///<param name="schemaTable">DataTable witch contaisn SchemaDefinitions</param>
///
public void DataColumnsFromTable (ReportModel model,DataTable schemaTable) {
if ((model == null)||(schemaTable.Rows.Count == 0) ) {
throw new ArgumentException ("Invalid Arguments in SharpReportmanager:CreateColumnsFromFile");
}
using (AutoReport auto = new AutoReport()){
try {
ReportItemCollection colDetail = auto.ReportItemsFromTable (model,
schemaTable);
BaseSection section = model.DetailSection;
section.SuspendLayout();
AddItemsToSection (section,colDetail);
section.ResumeLayout();
} catch (Exception) {
throw;
}
}
}
*/
#endregion
#region Create Reports from .Xsd Files
///<summary>
/// Create the DataColumns
/// </summary>
/// <param name="section">A ReportSection where to build the
/// <see cref="ReportDataItem"></see>
/// DataItems</param>
///<param name="collection">A reportItemcollection containing the basic informations</param>
public void DataColumnsFromReportItems (BaseSection section,ReportItemCollection collection) {
using (AutoReport auto = new AutoReport()){
try {
ReportItemCollection colDetail = auto.AutoDataColumns (collection);
section.SuspendLayout();
AddItemsToSection (section,colDetail);
section.ResumeLayout();
}catch (Exception) {
throw;
}
}
private Font CopyFont (Font orgF) {
Font f = new Font(orgF.Name,orgF.Size,orgF.Style,orgF.Unit);
return f;
}
#endregion
#region Preview
public AbstractRenderer GetRendererForStandartReports (ReportModel model) {
if (model == null) {
throw new ArgumentNullException("model");

51
src/AddIns/Misc/SharpReport/SharpReport/Visitors/AbstractVisitor.cs

@ -7,29 +7,38 @@ @@ -7,29 +7,38 @@
// the code is regenerated.
// </autogenerated>
//------------------------------------------------------------------------------
using System;
using System.Xml;
using SharpReport.Designer;
using SharpReportCore;
namespace SharpReport.Visitors
{
using System;
using System.Xml;
using SharpReport.Designer;
/// <summary>
/// Abstracte klasse fr alle Visitor's
/// Abstract Class for Designer Visitor
/// </summary>
/// <remarks>
/// created by - Forstmeier Peter
/// created on - 02.12.2004 16:53:00
/// </remarks>
public class AbstractVisitor : object, SharpReport.Designer.IDesignerVisitor {
private readonly string nodesQuery = "controls/control";
private string fileName;
private XmlFormReader xmlFormReader;
/// <summary>
/// Default constructor - initializes all fields to default values
/// </summary>
public AbstractVisitor() {
}
public AbstractVisitor(string fileName){
this.fileName = fileName;
xmlFormReader = new XmlFormReader() ;
}
/// <summary>
/// All classes how use this baseclass have to override this method
/// </summary>
@ -40,7 +49,29 @@ namespace SharpReport.Visitors @@ -40,7 +49,29 @@ namespace SharpReport.Visitors
public virtual void Visit(SharpReport.Designer.BaseDesignerControl designer) {
}
}
#region Properties
protected string FileName {
get {
return fileName;
}
}
protected XmlFormReader XmlFormReader {
get {
return xmlFormReader;
}
}
protected string NodesQuery {
get {
return nodesQuery;
}
}
#endregion
}
}

120
src/AddIns/Misc/SharpReport/SharpReport/Visitors/LoadReportVisitor.cs

@ -30,14 +30,10 @@ using SharpReport.ReportItems; @@ -30,14 +30,10 @@ using SharpReport.ReportItems;
namespace SharpReport.Visitors {
public class LoadReportVisitor : SharpReport.Visitors.AbstractVisitor {
private string fileName;
SharpReport.Designer.BaseDesignerControl designer;
SharpReportCore.XmlFormReader xmlFormReader;
IDesignableFactory designableFactory = new IDesignableFactory();
IDesignableFactory designableFactory ;
public LoadReportVisitor(string filename) {
this.fileName = filename;
public LoadReportVisitor(string fileName):base(fileName) {
designableFactory = new IDesignableFactory();
}
@ -47,21 +43,20 @@ namespace SharpReport.Visitors { @@ -47,21 +43,20 @@ namespace SharpReport.Visitors {
/// <param name='designer'>SharpReportDesigner</param>
public override void Visit(SharpReport.Designer.BaseDesignerControl designer){
if (designer != null) {
XmlDocument xmlDoc;
try {
xmlDoc = XmlHelper.OpenSharpReport (fileName);
this.designer = designer;
xmlFormReader = new XmlFormReader();
SetDesigner (xmlDoc);
AdjustSectionsWidth();
} catch (Exception ) {
throw ;
}
} else {
System.ArgumentNullException e = new System.ArgumentNullException ("LoadReportVisitor:Visit -> No valid designer");
throw e;
if (designer == null) {
throw new ArgumentNullException("designer");
}
XmlDocument xmlDoc;
try {
xmlDoc = XmlHelper.OpenSharpReport (base.FileName);
this.designer = designer;
SetDesigner (xmlDoc);
AdjustSectionsWidth();
} catch (Exception ) {
throw ;
}
}
private void AdjustSectionsWidth() {
@ -73,11 +68,6 @@ namespace SharpReport.Visitors { @@ -73,11 +68,6 @@ namespace SharpReport.Visitors {
}
}
private XmlDocument LoadFromFile (string fileName) {
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load (fileName);
return xmlDoc;
}
private void SetDesigner (XmlDocument doc){
@ -88,51 +78,75 @@ namespace SharpReport.Visitors { @@ -88,51 +78,75 @@ namespace SharpReport.Visitors {
private void SetSections (XmlDocument doc) {
XmlNodeList sectionNodes = doc.DocumentElement.ChildNodes;
//Start with node(1)
XmlNode node;
BaseSection baseSection = null;
for (int i = 1;i < sectionNodes.Count ; i++ ) {
node = sectionNodes[i];
if (node is XmlElement) {
XmlElement sectionElem = (XmlElement)node;
XmlElement sectionElem = node as XmlElement;
if (sectionElem != null) {
baseSection = (BaseSection)designer.ReportModel.SectionCollection.Find(sectionElem.GetAttribute("name"));
if (baseSection != null) {
baseSection.SuspendLayout();
XmlHelper.SetSectionValues (xmlFormReader,sectionElem,baseSection);
XmlNodeList ctrlList = sectionElem.SelectNodes ("controls/control");
if (ctrlList.Count > 0) {
foreach (XmlNode ctrlNode in ctrlList) {
if (ctrlNode is XmlElement) {
XmlElement ctrlElem = (XmlElement)ctrlNode;
IItemRenderer rpt = null;
try {
rpt = designableFactory.Create(ctrlElem.GetAttribute("type"));
BaseReportItem br = (BaseReportItem)rpt;
br.Parent = baseSection;
baseSection.Items.Add (rpt);
XmlHelper.BuildControl (xmlFormReader,ctrlElem,br);
}
catch (Exception ) {
string s = String.Format ("Unable to create <{0}>",ctrlElem.GetAttribute("type").ToString());
throw new SharpReportException (s);
}
}
}
}
XmlHelper.SetSectionValues (base.XmlFormReader,sectionElem,baseSection);
XmlNodeList ctrlList = sectionElem.SelectNodes (base.NodesQuery);
SetReportItems(baseSection,null,ctrlList);
baseSection.ResumeLayout();
} else {
SharpReportException ex = new SharpReportException ("Wrong Section Name <" + sectionElem.GetAttribute("name") + ">");
throw ex;
throw new MissingSectionException();
}
}else {
throw new System.Xml.XmlException ("Report : SetSection Wrong Node in Report");
} else {
throw new MissingSectionException();
}
baseSection.ResumeLayout();
}
baseSection.ResumeLayout();
}
void SetReportItems(BaseSection baseSection,
IContainerItem parentContainer,XmlNodeList ctrlList) {
BaseReportItem baseReportItem;
//BaseReportItem parentItem;
foreach (XmlNode ctrlNode in ctrlList) {
XmlElement ctrlElem = ctrlNode as XmlElement;
if (ctrlElem != null) {
IItemRenderer itemRenderer = null;
try {
itemRenderer = designableFactory.Create(ctrlElem.GetAttribute("type"));
baseReportItem = (BaseReportItem)itemRenderer;
if (parentContainer == null) {
// System.Console.WriteLine("\tParent of {0} is Section",baseReportItem.Name);
baseReportItem.Parent = baseSection;
baseSection.Items.Add (baseReportItem);
} else {
// System.Console.WriteLine("\tParent of <{0}> is Container",baseReportItem.Name);
baseReportItem.Parent = parentContainer;
parentContainer.Items.Add(baseReportItem);
}
XmlHelper.BuildControl (base.XmlFormReader,ctrlElem,baseReportItem);
IContainerItem iContainer = baseReportItem as IContainerItem;
XmlNodeList newList = ctrlNode.SelectNodes (base.NodesQuery);
if (newList.Count > 0) {
// System.Console.WriteLine("\t recusiv call for <{0}> with {1} childs ",
// baseReportItem,newList.Count);
SetReportItems (baseSection,iContainer,newList);
}
}
catch (Exception ) {
throw new UnkownItemException();
}
}
}
}
}
}

2
src/AddIns/Misc/SharpReport/SharpReport/Visitors/SaveReportVisitor.cs

@ -25,7 +25,7 @@ namespace SharpReport.Visitors{ @@ -25,7 +25,7 @@ namespace SharpReport.Visitors{
private XmlDocument xmlDoc;
public SaveReportVisitor () {
public SaveReportVisitor ():base() {
}

12
src/AddIns/Misc/SharpReport/SharpReportAddin/Commands/ItemContextCommands.cs

@ -44,17 +44,7 @@ namespace SharpReportAddin.Commands { @@ -44,17 +44,7 @@ namespace SharpReportAddin.Commands {
///
public override void Run(){
if (this.IsEnabled){
try {
IItemRenderer iItemRenderer = base.View.DesignerControl.SelectedObject as IItemRenderer;
if (iItemRenderer != null) {
if (base.View.DesignerControl.SelectedSection.Items.Contains(iItemRenderer)) {
base.View.DesignerControl.SelectedSection.Items.Remove (iItemRenderer);
base.View.IsDirty = true;
}
}
} catch (Exception ) {
throw;
}
base.View.DesignerControl.RemoveSelectedItem ();
}
}
}

54
src/AddIns/Misc/SharpReport/SharpReportAddin/FieldsExplorer/FieldsExplorer.cs

@ -49,7 +49,7 @@ namespace SharpReportAddin { @@ -49,7 +49,7 @@ namespace SharpReportAddin {
/// Clear the selected Section
/// </summary>
public void ClearNodeSection () {
System.Console.WriteLine("ClearNodeSection");
// System.Console.WriteLine("ClearNodeSection");
if (this.SelectedNode is SectionTreeNode) {
if (this.SelectedNode.Nodes.Count > 0) {
this.SelectedNode.Nodes.Clear();
@ -221,8 +221,45 @@ namespace SharpReportAddin { @@ -221,8 +221,45 @@ namespace SharpReportAddin {
}
#region PadEvents
private void OnWindowChange (object sender,EventArgs e) {
try {
if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent is SharpReportView) {
if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow == null || WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent == null) {
return;
}
WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent.Saving -= OnViewSaving;
WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent.Saving += OnViewSaving;
PadDescriptor pad = WorkbenchSingleton.Workbench.GetPad(typeof(FieldsExplorer));
SharpReportView v =
WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ActiveViewContent
as SharpReportView;
if (v != null) {
this.reportModel = v.ReportManager.BaseDesignControl.ReportModel;
if (this.reportModel != null) {
this.Fill();
WorkbenchSingleton.Workbench.ShowPad(pad);
}
} else {
WorkbenchSingleton.Workbench.WorkbenchLayout.HidePad(pad);
}
} else {
System.Console.WriteLine(" NO view"); }
} catch (Exception) {
}
}
private void old_OnWindowChange (object sender,EventArgs e) {
// System.Console.WriteLine("FieldsExplorer:OnWindowChange");
// System.Console.WriteLine("active control {0}",WorkbenchSingleton.ActiveControl.ToString());
// ICSharpCode.SharpDevelop.Gui.DefaultWorkbench dw = (ICSharpCode.SharpDevelop.Gui.DefaultWorkbench)sender;
try {
if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow == null || WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent == null) {
return;
@ -235,10 +272,11 @@ namespace SharpReportAddin { @@ -235,10 +272,11 @@ namespace SharpReportAddin {
SharpReportView v =
WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ActiveViewContent
as SharpReportView;
if (v != null) {
this.reportModel = v.ReportManager.BaseDesignControl.ReportModel;
if (this.reportModel != null) {
this.Fill();
WorkbenchSingleton.Workbench.ShowPad(pad);
pad.BringPadToFront();
@ -522,6 +560,10 @@ namespace SharpReportAddin { @@ -522,6 +560,10 @@ namespace SharpReportAddin {
}
}
public void RedrawContent() {
}
public string[] Shortcut {
get {
return null;
@ -537,10 +579,6 @@ namespace SharpReportAddin { @@ -537,10 +579,6 @@ namespace SharpReportAddin {
}
public void RedrawContent() {
this.Invalidate ();
}
// ********* Own events
protected virtual void OnTitleChanged(EventArgs e)
{
@ -565,7 +603,7 @@ namespace SharpReportAddin { @@ -565,7 +603,7 @@ namespace SharpReportAddin {
public FieldsExplorer() {
WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += OnWindowChange;
LabelEdit = true;
AllowDrop = true;
HideSelection = false;

3
src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportDisplayBinding.cs

@ -39,7 +39,8 @@ namespace SharpReportAddin { @@ -39,7 +39,8 @@ namespace SharpReportAddin {
if (view != null) {
try {
ReportGenerator.CreateReport cmd = new ReportGenerator.CreateReport(view.DesignerControl.ReportModel);
cmd.Run();
cmd.Run();
cmd = null;
view.FileName = view.DesignerControl.ReportModel.ReportSettings.FileName;
view.UpdateView(true);
view.Selected();

8
src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportView.cs

@ -55,17 +55,16 @@ namespace SharpReportAddin{ @@ -55,17 +55,16 @@ namespace SharpReportAddin{
panel.AutoScroll = true;
CreateTabControl();
BuildToolBarItems();
if (PropertyPad.Grid != null) {
PropertyPad.Grid.SelectedObject = designerControl.ReportModel.ReportSettings;
PropertyPad.Grid.Refresh();
}
//Activate the FieldsExplorer - Pad
PadDescriptor pad = WorkbenchSingleton.Workbench.GetPad(typeof(FieldsExplorer));
if (pad != null) {
pad.CreatePad();
}
}
} catch (Exception) {
throw;
}
@ -192,6 +191,7 @@ namespace SharpReportAddin{ @@ -192,6 +191,7 @@ namespace SharpReportAddin{
private BaseDesignerControl CreateDesignerControl() {
BaseDesignerControl ctrl = reportManager.BaseDesignControl;
ctrl.ReportControl.Width = ctrl.ReportModel.ReportSettings.PageSettings.Bounds.Width;
ctrl.ReportControl.AutoScroll = true;
ctrl.Dock = DockStyle.Fill;
@ -453,6 +453,7 @@ namespace SharpReportAddin{ @@ -453,6 +453,7 @@ namespace SharpReportAddin{
}
public override void RedrawContent() {
// this.WorkbenchWindow.WindowDeselected += new EventHandler(OnDeselected);
SetHeadLines();
}
@ -490,6 +491,7 @@ namespace SharpReportAddin{ @@ -490,6 +491,7 @@ namespace SharpReportAddin{
public SharpReportView():base() {
if (GlobalValues.IsValidPrinter()) {
InitView();
this.UpdateView(false);
} else {
MessageService.ShowError(ResourceService.GetString("Sharpreport.Error.NoPrinter"));
}

49
src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseDataItem.cs

@ -27,12 +27,11 @@ using SharpReportCore; @@ -27,12 +27,11 @@ using SharpReportCore;
namespace SharpReportCore {
public class BaseDataItem : SharpReportCore.BaseTextItem,IItemRenderer {
private const string unbound = "(unbound)";
private string columnName = String.Empty;
private string baseTableName = String.Empty;
private string dbValue = String.Empty;
private string dataType = String.Empty;
private string columnName;
private string baseTableName;
private string dbValue;
private string dataType;
private string nullValue;
/// <summary>
/// Default constructor - initializes all fields to default values
/// </summary>
@ -42,10 +41,30 @@ namespace SharpReportCore { @@ -42,10 +41,30 @@ namespace SharpReportCore {
public BaseDataItem(string columnName){
this.columnName = columnName;
}
#region privates
//TODO Need a much better handling for 'null' values
private string CheckForNullValue() {
if (String.IsNullOrEmpty(this.dbValue)) {
if (String.IsNullOrEmpty(this.nullValue)) {
return GlobalValues.UnboundName;
} else
return this.nullValue;
}
return this.dbValue;
}
#endregion
public override void Render(SharpReportCore.ReportPageEventArgs rpea) {
// this.DbValue is formatted in the BeforePrintEvent catched in AbstractRenderer
string formattedString = base.FireFormatOutput(this.dbValue,this.FormatString,"");
string toPrint = CheckForNullValue();
string formattedString = base.FireFormatOutput(toPrint,this.FormatString,"");
// System.Console.WriteLine("\t\tBaseDataItem:Render {0} ",formattedString);
RectangleF rect = base.PrepareRectangle (rpea,formattedString);
base.PrintTheStuff (rpea,formattedString,rect);
base.NotiyfyAfterPrint (rpea.LocationAfterDraw);
@ -72,10 +91,14 @@ namespace SharpReportCore { @@ -72,10 +91,14 @@ namespace SharpReportCore {
public virtual string ColumnName {
get {
if (String.IsNullOrEmpty(columnName)) {
this.columnName = GlobalValues.UnboundName;
}
return columnName;
}
set {
columnName = value;
this.Text = this.columnName;
}
}
@ -118,11 +141,15 @@ namespace SharpReportCore { @@ -118,11 +141,15 @@ namespace SharpReportCore {
baseTableName = value;
}
}
[XmlIgnoreAttribute]
[Browsable(false)]
public string UnboundText {
[Browsable(true),
Category("Databinding"),
Description("Display Value for empty Field")]
public string NullValue {
get {
return unbound;
return nullValue;
}
set {
nullValue = value;
}
}
}

51
src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseReportItem.cs

@ -21,16 +21,14 @@ namespace SharpReportCore { @@ -21,16 +21,14 @@ namespace SharpReportCore {
/// </summary>
public class BaseReportItem : SharpReportCore.BaseReportObject,
IItemRenderer,IComponent{
IItemRenderer{
private int offset;
private int margin;
private int xOffset;
private bool drawBorder;
private Color foreColor;
private Font font;
private ISite site;
public event EventHandler <FormatOutputEventArgs> FormatOutput;
public event EventHandler Disposed;
@ -62,10 +60,8 @@ namespace SharpReportCore { @@ -62,10 +60,8 @@ namespace SharpReportCore {
#region virtual method's
protected RectangleF DrawingRectangle (ReportPageEventArgs e,SizeF measureSize) {
PointF upperLeft = new PointF (this.Location.X + this.Margin,
this.Location.Y + this.Offset);
PointF upperLeft = new PointF (this.Location.X ,
this.Location.Y + this.SectionOffset);
SizeF lowerRight = new SizeF(0,0);
if ((this.CanGrow == true )||(this.CanShrink == true)){
@ -83,43 +79,16 @@ namespace SharpReportCore { @@ -83,43 +79,16 @@ namespace SharpReportCore {
#endregion
#region System.ComponentModel.IComponent interface implementation
public System.ComponentModel.ISite Site {
get {
return site;
}
set {
site = value;
}
}
#endregion
#region Properties
[XmlIgnoreAttribute]
public int Margin {
get {
return margin;
}
set {
margin = value;
}
}
[XmlIgnoreAttribute]
public int Offset {
[Browsable(false)]
public int XOffset {
get {
return offset;
return xOffset;
}
set {
offset = value;
xOffset = value;
}
}
@ -142,7 +111,6 @@ namespace SharpReportCore { @@ -142,7 +111,6 @@ namespace SharpReportCore {
}
set {
foreColor = value;
// base.NotifyPropertyChanged ("ForeColor",true);
base.NotifyPropertyChanged ("ForeColor");
}
}
@ -154,7 +122,6 @@ namespace SharpReportCore { @@ -154,7 +122,6 @@ namespace SharpReportCore {
}
set {
this.font = value;
// NotifyPropertyChanged ("Font",true);
NotifyPropertyChanged ("Font");
}
}

85
src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseReportObject.cs

@ -16,8 +16,8 @@ using System.ComponentModel; @@ -16,8 +16,8 @@ using System.ComponentModel;
using System.Drawing;
/// <summary>
/// This is the BaseClass for <see cref="ReportSection"></see>
/// and <see cref="ReportItem"></see>
/// This is the BaseClass for all
/// <see cref="ReportItem"></see>
/// </summary>
/// <remarks>
/// created by - Forstmeier Peter
@ -41,7 +41,6 @@ namespace SharpReportCore { @@ -41,7 +41,6 @@ namespace SharpReportCore {
private Color backColor;
private int sectionOffset;
private int sectionMargin;
public event EventHandler<EventArgs> BeforePrinting;
public event EventHandler<AfterPrintEventArgs> AfterPrinting;
@ -70,12 +69,15 @@ namespace SharpReportCore { @@ -70,12 +69,15 @@ namespace SharpReportCore {
public void ResumeLayout () {
suspend = false;
}
#region properties
public virtual bool Visible {
get {
return visible;
}
set {
visible = value;
NotifyPropertyChanged ("Visible");
}
}
@ -85,6 +87,7 @@ namespace SharpReportCore { @@ -85,6 +87,7 @@ namespace SharpReportCore {
}
set {
canGrow = value;
NotifyPropertyChanged ("CanGrow");
}
}
public virtual bool CanShrink {
@ -93,16 +96,11 @@ namespace SharpReportCore { @@ -93,16 +96,11 @@ namespace SharpReportCore {
}
set {
canShrink = value;
NotifyPropertyChanged ("CanShrink");
}
}
[XmlIgnoreAttribute]
[Browsable(false)]
public bool Suspend {
get {
return suspend;
}
}
public virtual string Name {
get {
@ -110,6 +108,7 @@ namespace SharpReportCore { @@ -110,6 +108,7 @@ namespace SharpReportCore {
}
set {
name = value;
NotifyPropertyChanged ("Name");
}
}
@ -119,79 +118,85 @@ namespace SharpReportCore { @@ -119,79 +118,85 @@ namespace SharpReportCore {
}
set {
pageBreakAfter = value;
NotifyPropertyChanged ("PageBreakAfter");
}
}
public virtual bool PageBreakBefore {
get {
return pageBreakBefore;
}
set {
pageBreakBefore = value;
NotifyPropertyChanged ("PageBreakBefore");
}
}
[Browsable(false)]
[XmlIgnoreAttribute]
public virtual object Parent {
public virtual Size Size {
get {
return parent;
return size;
}
set {
parent = value;
size = value;
NotifyPropertyChanged ("Size");
}
}
[XmlIgnoreAttribute]
[Browsable(false)]
public virtual int SectionMargin {
public virtual Point Location {
get {
return sectionMargin;
return location;
}
set {
sectionMargin = value;
location = value;
NotifyPropertyChanged ("Location");
}
}
[XmlIgnoreAttribute]
[Browsable(false)]
public virtual int SectionOffset {
public virtual Color BackColor {
get {
return sectionOffset;
return backColor;
}
set {
sectionOffset = value;
backColor = value;
NotifyPropertyChanged ("BackColor");
}
}
public virtual Size Size {
[XmlIgnoreAttribute]
[Browsable(false)]
public virtual int SectionOffset {
get {
return size;
return sectionOffset;
}
set {
size = value;
NotifyPropertyChanged ("Size");
sectionOffset = value;
}
}
public virtual Point Location {
[Browsable(false)]
[XmlIgnoreAttribute]
public virtual object Parent {
get {
return location;
return parent;
}
set {
location = value;
NotifyPropertyChanged ("Location");
parent = value;
}
}
public virtual Color BackColor {
[XmlIgnoreAttribute]
[Browsable(false)]
public bool Suspend {
get {
return backColor;
}
set {
backColor = value;
NotifyPropertyChanged ("BackColor");
return suspend;
}
}
#endregion
#region EventHandling
public void NotiyfyAfterPrint (PointF afterPrintLocation) {
if (this.AfterPrinting != null) {
AfterPrintEventArgs rea = new AfterPrintEventArgs (afterPrintLocation);
@ -205,7 +210,7 @@ namespace SharpReportCore { @@ -205,7 +210,7 @@ namespace SharpReportCore {
}
}
#endregion
#region SharpReportCore.IBaseRenderer interface implementation
public virtual void Render(ReportPageEventArgs rpea) {

55
src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseSection.cs

@ -9,16 +9,19 @@ @@ -9,16 +9,19 @@
//------------------------------------------------------------------------------
using System;
using System.ComponentModel;
//using System.Windows.Forms;
using System.Xml.Serialization;
/// <summary>
/// This Class is the BaseClass for all ReportSections
/// This Class is the BaseClass for <see cref="ReportSection"></see>
/// </summary>
/// <remarks>
/// created by - Forstmeier Helmut
/// created on - 01.09.2005 13:12:32
/// </remarks>
namespace SharpReportCore {
public class BaseSection : SharpReportCore.BaseReportObject {
private int sectionMargin;
private ReportItemCollection items;
#region Constructors
@ -28,11 +31,37 @@ namespace SharpReportCore { @@ -28,11 +31,37 @@ namespace SharpReportCore {
public BaseSection (string sectionName) :base(){
this.Name = sectionName;
}
#endregion
#region properties
public int SectionMargin {
get {
return this.sectionMargin;
}
set {
this.sectionMargin = value;
}
}
[Browsable(false)]
public ReportItemCollection Items{
get {
if (this.items == null) {
items = new ReportItemCollection();
}
return items;
}
}
#endregion
#region System.IDisposable interface implementation
public override void Dispose () {
Dispose(true);
@ -57,19 +86,5 @@ namespace SharpReportCore { @@ -57,19 +86,5 @@ namespace SharpReportCore {
}
#endregion
#region properties
[Browsable(false)]
public ReportItemCollection Items{
get {
if (this.items == null) {
items = new ReportItemCollection();
}
return items;
}
}
#endregion
}
}

3
src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseTextItem.cs

@ -27,6 +27,7 @@ namespace SharpReportCore { @@ -27,6 +27,7 @@ namespace SharpReportCore {
private StringAlignment stringAlignment = StringAlignment.Near;
private StringFormat standartStringFormat;
private TextDrawer textDrawer = new TextDrawer();
public BaseTextItem() {
this.standartStringFormat = GlobalValues.StandartStringFormat();
@ -34,7 +35,7 @@ namespace SharpReportCore { @@ -34,7 +35,7 @@ namespace SharpReportCore {
public override void Render(ReportPageEventArgs rpea) {
if (rpea == null) {
throw new ArgumentNullException("rpea","BasetextItem:Render");
throw new ArgumentNullException("rpea");
}
base.Render(rpea);
RectangleF rect = PrepareRectangle (rpea,this.Text);

26
src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/Graphics/BaseRectangleItem.cs

@ -23,7 +23,7 @@ using System.Drawing; @@ -23,7 +23,7 @@ using System.Drawing;
/// created on - 29.09.2005 11:57:30
/// </remarks>
namespace SharpReportCore {
public class BaseRectangleItem : SharpReportCore.BaseGraphicItem,IContainer {
public class BaseRectangleItem : SharpReportCore.BaseGraphicItem {
private ArrayList arrayList;
RectangleShape shape = new RectangleShape();
@ -51,30 +51,6 @@ namespace SharpReportCore { @@ -51,30 +51,6 @@ namespace SharpReportCore {
}
#region System.ComponentModel.IContainer interface implementation
public System.ComponentModel.ComponentCollection Components {
get {
IComponent[] datalist = new BaseReportItem[arrayList.Count];
arrayList.CopyTo(datalist,0);
return new ComponentCollection(datalist);
}
}
public void Remove(System.ComponentModel.IComponent component) {
throw new NotImplementedException();
}
public void Add(System.ComponentModel.IComponent component, string name) {
throw new NotImplementedException();
}
public void Add(System.ComponentModel.IComponent component) {
throw new NotImplementedException();
}
#endregion
#region System.IDisposable interface implementation
// public override void Dispose() {
// base.Dispose();

170
src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/RowItem.cs

@ -0,0 +1,170 @@ @@ -0,0 +1,170 @@
/*
* Created by SharpDevelop.
* User: Forstmeier Peter
* Date: 03.03.2006
* Time: 09:00
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Drawing;
using System.ComponentModel;
using System.Collections.Generic;
using System.Windows.Forms;
namespace SharpReportCore{
/// <summary>
/// Description of BaseRowItem.
/// </summary>
public class RowItem:BaseReportItem,IContainerItem{
private string tableName;
ReportItemCollection items;
Padding padding;
public RowItem():this (String.Empty){
}
public RowItem(string tableName){
this.tableName = tableName;
this.Items.Added += OnAdded;
}
void OnAdded (object sender, CollectionItemEventArgs<IItemRenderer> e){
System.Console.WriteLine("");
System.Console.WriteLine("RowItem:OnAdded");
}
#region overrides
private void Decorate (ReportPageEventArgs rpea,Rectangle border) {
using (SolidBrush brush = new SolidBrush(base.BackColor)) {
rpea.PrintPageEventArgs.Graphics.FillRectangle(brush,border);
}
if (base.DrawBorder == true) {
using (Pen pen = new Pen(Color.Black, 1)) {
rpea.PrintPageEventArgs.Graphics.DrawRectangle (pen,border);
}
}
}
protected RectangleF PrepareRectangle (ReportPageEventArgs e) {
SizeF measureSize = new SizeF ((SizeF)this.Size);
RectangleF rect = base.DrawingRectangle (e,measureSize);
return rect;
}
public override void Render(ReportPageEventArgs rpea){
System.Console.WriteLine("Render RowItem");
if (rpea == null) {
throw new ArgumentNullException("rpea");
}
base.Render(rpea);
RectangleF rect = PrepareRectangle (rpea);
Decorate (rpea,System.Drawing.Rectangle.Ceiling (rect));
foreach (BaseReportItem childItem in this.items) {
Point loc = new Point (childItem.Location.X,childItem.Location.Y);
childItem.Location = new Point(this.Location.X + childItem.Location.X,
this.SectionOffset + this.Location.Y);
childItem.Render (rpea);
childItem.Location = new Point(loc.X,loc.Y);
}
base.NotiyfyAfterPrint (rpea.LocationAfterDraw);
}
public override string ToString(){
return "RowItem";
}
#endregion
#region properties
public string TableName {
get {
return tableName;
}
set {
tableName = value;
}
}
#endregion
#region IContainerControl
public Padding Padding {
get {
return padding;
}
set {
padding = value;
}
}
public bool IsValidChild(BaseReportItem childControl){
// BaseDataItem bdi = childControl as BaseDataItem;
BaseReportItem bdi = childControl as BaseDataItem;
if (bdi != null) {
return true;
} else {
return false;
}
}
public ReportItemCollection Items{
get {
if (this.items == null) {
this.items = new ReportItemCollection();
}
return this.items;
}
}
#endregion
/*
#region IDisposable
public override void Dispose(){
this.Dispose(true);
GC.SuppressFinalize(this);
}
~RowItem()
{
Dispose(false);
}
protected override void Dispose(bool disposing){
try {
if (disposing) {
// Free other state (managed objects).
if (this.baseDataItemCollection != null) {
this.BaseDataItemCollection.Clear();
this.baseDataItemCollection = null;
}
}
} finally {
base.Dispose();
}
}
#endregion
*/
}
}

70
src/AddIns/Misc/SharpReport/SharpReportCore/BaseSettings.cs

@ -19,10 +19,11 @@ @@ -19,10 +19,11 @@
//
// Peter Forstmeier (Peter.Forstmeier@t-online.de)
using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Printing;
using System.IO;
using System.ComponentModel;
using System.Windows.Forms;
using System.Xml.Serialization;
/// <summary>
@ -42,20 +43,21 @@ namespace SharpReportCore { @@ -42,20 +43,21 @@ namespace SharpReportCore {
private PageSettings pageSettings;
private bool useStandartPrinter;
private bool includeSettings;
//if file is read, supress events
private bool initDone;
private GraphicsUnit graphicsUnit;
private Margins defaultMargins = new Margins (50,50,50,50);
private Size gridSize;
private Padding padding;
public event EventHandler PropertyChanged;
public event EventHandler FileNameChanged;
#region Constructor
public BaseSettings():this(new PageSettings(),"","") {
BaseValues();
this.initDone = true;
}
public BaseSettings(PageSettings pageSettings , string reportName,string fileName){
@ -83,8 +85,9 @@ namespace SharpReportCore { @@ -83,8 +85,9 @@ namespace SharpReportCore {
}
void BaseValues() {
this.useStandartPrinter = true;
this.includeSettings = false;
this.graphicsUnit = GraphicsUnit.Millimeter;
this.gridSize = GlobalValues.GridSize;
this.padding = new Padding(5);
}
private static string MakePoperFilename (string file) {
@ -104,10 +107,8 @@ namespace SharpReportCore { @@ -104,10 +107,8 @@ namespace SharpReportCore {
#endregion
protected void NotifyPropertyChanged() {
if (this.initDone) {
if (PropertyChanged != null) {
PropertyChanged (this,new EventArgs());
}
if (PropertyChanged != null) {
PropertyChanged (this,new EventArgs());
}
}
@ -134,23 +135,6 @@ namespace SharpReportCore { @@ -134,23 +135,6 @@ namespace SharpReportCore {
}
}
///<summary>
/// printout ReportSettings at ReportHeaderPage
/// </summary>
[Category("Base Settings")]
[DefaultValueAttribute (false)]
public bool IncludeSettings {
get {
return includeSettings;
}
set {
if (includeSettings != value) {
includeSettings = value;
this.NotifyPropertyChanged();
}
}
}
[Category("Base Settings")]
[DefaultValueAttribute ("")]
public string ReportName {
@ -231,6 +215,10 @@ namespace SharpReportCore { @@ -231,6 +215,10 @@ namespace SharpReportCore {
}
}
#endregion
#region DesignerSettings
[Category("Designer Settings")]
[DefaultValueAttribute (System.Drawing.GraphicsUnit.Millimeter)]
public System.Drawing.GraphicsUnit GraphicsUnit {
@ -244,6 +232,34 @@ namespace SharpReportCore { @@ -244,6 +232,34 @@ namespace SharpReportCore {
}
}
}
[Category("Designer Settings")]
public Size GridSize {
get {
return gridSize;
}
set {
if (this.gridSize != value) {
this.gridSize = value;
this.NotifyPropertyChanged();
}
}
}
[Category("Designer Settings")]
public Padding Padding {
get {
return padding;
}
set {
if (this.padding != value) {
this.padding = value;
this.NotifyPropertyChanged();
}
}
}
#endregion
}
}

50
src/AddIns/Misc/SharpReport/SharpReportCore/Collections/Collections.cs

@ -132,7 +132,49 @@ namespace SharpReportCore{ @@ -132,7 +132,49 @@ namespace SharpReportCore{
}
/// <summary>
/// This class holds all the available Sections of an Report
/// </summary>
public class BaseDataItemCollection: List<BaseDataItem>{
public event EventHandler<CollectionItemEventArgs<BaseDataItem>> Added;
public event EventHandler<CollectionItemEventArgs<BaseDataItem>> Removed;
public BaseDataItem Find (string columnName) {
for (int i = 0;i < this.Count ; i ++) {
BaseDataItem col = this[i];
if (String.Compare(col.Name.ToLower(CultureInfo.CurrentCulture),
columnName.ToLower(CultureInfo.CurrentCulture))== 0){
return col;
}
}
return null;
}
public new void Add(BaseDataItem item){
base.Add(item);
this.OnAdded (item);
}
public new bool Remove(BaseDataItem item)
{
if (base.Remove (item)) {
this.OnRemoved(item);
return true;
}
return false;
}
void OnAdded(BaseDataItem item){
if (Added != null)
Added(this, new CollectionItemEventArgs<BaseDataItem>(item));
}
void OnRemoved( BaseDataItem item){
if (Removed != null)
Removed(this, new CollectionItemEventArgs<BaseDataItem>(item));
}
}
[Serializable()]
public class ColumnCollection: List<AbstractColumn>{
@ -161,12 +203,6 @@ namespace SharpReportCore{ @@ -161,12 +203,6 @@ namespace SharpReportCore{
public CultureInfo Culture
{
get { return culture; }
// set
// {
// if (value == null)
// value = CultureInfo.CurrentCulture;
// culture = value;
// }
}
}

61
src/AddIns/Misc/SharpReport/SharpReportCore/DataManager/DataManager.cs

@ -23,22 +23,9 @@ using System.Globalization; @@ -23,22 +23,9 @@ using System.Globalization;
/// </remarks>
namespace SharpReportCore {
public class DataManager : IDataContainer,IEnumerator,IDisposable {
/*
/// <summary>
/// Operand to use when filtering...
/// </summary>
public enum FilterOperand {
Equals,
NotEquals,
Includes,
NotIncludes,
}
*/
int currentRow = -1;
public class DataManager :IDisposable {
ReportSettings reportSettings;
object dataSource;
string dataMember;
@ -277,6 +264,7 @@ namespace SharpReportCore { @@ -277,6 +264,7 @@ namespace SharpReportCore {
this.ListChanged (this,e);
}
}
private void NotifyGroupChanging () {
if (this.GroupChanging!= null) {
this.GroupChanging (this,EventArgs.Empty);
@ -350,18 +338,19 @@ namespace SharpReportCore { @@ -350,18 +338,19 @@ namespace SharpReportCore {
return true;
}
public void Skip() {
this.dataViewStrategy.CurrentRow ++;
}
// public void Skip() {
// this.dataViewStrategy.CurrentRow ++;
// }
//
/*
public void FetchData(ReportItemCollection collection) {
foreach (IItemRenderer item in collection) {
this.dataViewStrategy.Fill(item);
}
this.NotifyGroupChanged();
}
*/
/*
/// <summary>
/// Indicate's if the current <see cref="GroupSeperator"></see> has ChildRows
/// </summary>
@ -370,6 +359,7 @@ namespace SharpReportCore { @@ -370,6 +359,7 @@ namespace SharpReportCore {
return this.dataViewStrategy.HasChilds;
}
}
*/
/// <summary>
/// Returns a <see cref="SharpArrayList"></see>, be carefull, this list is only a Indexlist
@ -393,8 +383,13 @@ namespace SharpReportCore { @@ -393,8 +383,13 @@ namespace SharpReportCore {
}
}
#endregion
// Nur zum testen
public DataNavigator GetNavigator {
get {
return new DataNavigator(this.dataViewStrategy);
}
}
#region System.Collections.IEnumerator interface implementation
@ -404,21 +399,15 @@ namespace SharpReportCore { @@ -404,21 +399,15 @@ namespace SharpReportCore {
}
}
public void Reset() {
this.dataViewStrategy.Reset();
this.currentRow = -1;
}
// public void Reset() {
// this.dataViewStrategy.Reset();
// }
//
// public bool MoveNext() {
// return this.dataViewStrategy.MoveNext();
// }
public bool MoveNext() {
try {
this.currentRow ++;
this.dataViewStrategy.CurrentRow = this.currentRow;
return true;
} catch (Exception) {
return false;
}
}
#endregion
public bool IsGrouped {

69
src/AddIns/Misc/SharpReport/SharpReportCore/DataManager/DataNavigator.cs

@ -0,0 +1,69 @@ @@ -0,0 +1,69 @@
/*
* Created by SharpDevelop.
* User: Forstmeier Helmut
* Date: 23.03.2006
* Time: 13:18
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.ComponentModel;
namespace SharpReportCore
{
/// <summary>
/// Description of DataNavigator.
/// </summary>
public class DataNavigator{
IDataViewStrategy store;
public event EventHandler <ListChangedEventArgs> ListChanged;
public DataNavigator(IDataViewStrategy store){
this.store = store;
this.store.ListChanged += new EventHandler<ListChangedEventArgs> (OnListChanged);
}
private void OnListChanged (object sender,System.ComponentModel.ListChangedEventArgs e) {
if (this.ListChanged != null) {
this.ListChanged (this,e);
}
}
public void Fill (ReportItemCollection collection) {
foreach (IItemRenderer item in collection) {
this.store.Fill(item);
}
}
/// <summary>
/// Indicate's if the current <see cref="GroupSeperator"></see> has ChildRows
/// </summary>
public bool HasChilds {
get {
return this.store.HasChilds;
}
}
public int CurrentRow {
get {return store.CurrentRow;}
}
public int Count {
get {return store.Count;}
}
public bool MoveNext () {
return this.store.MoveNext();
}
public void Reset() {
store.Reset();
}
public object Current {
get {
return store.Current;
}
}
}
}

31
src/AddIns/Misc/SharpReport/SharpReportCore/DataManager/ListStrategy/BaseListStrategy.cs

@ -13,7 +13,6 @@ using System.Globalization; @@ -13,7 +13,6 @@ using System.Globalization;
using System.ComponentModel;
using System.Collections;
using System.Collections.Generic;
using SharpReportCore;
/// <summary>
/// BaseClass for all Datahandling Strategies
@ -24,7 +23,7 @@ using SharpReportCore; @@ -24,7 +23,7 @@ using SharpReportCore;
/// </remarks>
namespace SharpReportCore {
public abstract class BaseListStrategy :IDataViewStrategy {
public abstract class BaseListStrategy :IDataViewStrategy,IEnumerator {
private bool isSorted;
private bool isFiltered;
private bool isGrouped;
@ -179,6 +178,23 @@ namespace SharpReportCore { @@ -179,6 +178,23 @@ namespace SharpReportCore {
System.Console.WriteLine("-----End of <CheckSortArray>-----------");
}
public virtual void Reset() {
this.indexList.CurrentPosition = -1;
this.NotifyResetList();
}
public virtual object Current {
get {
throw new NotImplementedException();
}
}
public virtual bool MoveNext(){
return(++this.indexList.CurrentPosition<this.indexList.Count);
}
#region SharpReportCore.IDataViewStrategy interface implementation
@ -196,13 +212,12 @@ namespace SharpReportCore { @@ -196,13 +212,12 @@ namespace SharpReportCore {
public virtual int CurrentRow {
get {
return 0;
return this.indexList.CurrentPosition;
}
set {
if (value > this.indexList.Count){
throw new IndexOutOfRangeException ();
if ((value > -1)|| (value > this.indexList.Count)){
this.indexList.CurrentPosition = value;
}
this.indexList.CurrentPosition = value;
}
}
@ -252,9 +267,7 @@ namespace SharpReportCore { @@ -252,9 +267,7 @@ namespace SharpReportCore {
this.indexList.Clear();
}
public virtual void Reset() {
this.NotifyResetList();
}
public virtual void Bind() {

22
src/AddIns/Misc/SharpReport/SharpReportCore/DataManager/ListStrategy/CollectionStrategy.cs

@ -7,20 +7,18 @@ @@ -7,20 +7,18 @@
// the code is regenerated.
// </autogenerated>
//------------------------------------------------------------------------------
using System;
using System.Globalization;
using System.ComponentModel;
using System.Collections;
namespace SharpReportCore {
using System;
using System.Globalization;
using System.ComponentModel;
using System.Collections;
using SharpReportCore;
/// <summary>
/// This Class handles all List's with IList
/// Access to Data is allway#s done by using the 'IndexList'
/// </summary>
/// <summary>
/// This Class handles all List's with IList
/// Access to Data is allway#s done by using the 'IndexList'
/// </summary>
namespace SharpReportCore {
public class CollectionStrategy : BaseListStrategy {
// Holds the plain Data

65
src/AddIns/Misc/SharpReport/SharpReportCore/DataManager/ListStrategy/TableStrategy.cs

@ -13,17 +13,16 @@ using System.Collections; @@ -13,17 +13,16 @@ using System.Collections;
using System.Data;
using System.ComponentModel;
using SharpReportCore;
/// <summary>
/// This class handles DataTables
/// </summary>
/// <remarks>
/// created by - Forstmeier Peter
/// created on - 23.10.2005 15:12:06///
///</remarks>
namespace SharpReportCore {
/// <summary>
/// This class handles DataTables
/// </summary>
/// <remarks>
/// created by - Forstmeier Peter
/// created on - 23.10.2005 15:12:06
/// </remarks>
public class TableStrategy : BaseListStrategy {
DataTable table;
@ -139,6 +138,31 @@ namespace SharpReportCore { @@ -139,6 +138,31 @@ namespace SharpReportCore {
#endregion
#region IEnumerator
public override bool MoveNext(){
return base.MoveNext();
}
public override void Reset() {
base.Reset();
this.view.Sort = "";
this.view.RowFilter = "";
}
public override object Current{
get {
if (base.CurrentRow < 0) {
return null;
} else {
return row = this.view[((BaseComparer)base.IndexList[base.CurrentRow]).ListIndex];
}
}
}
#endregion
#region IDataViewStrategy interface implementation
public override void Bind() {
@ -183,6 +207,9 @@ namespace SharpReportCore { @@ -183,6 +207,9 @@ namespace SharpReportCore {
public override void Fill (IItemRenderer item) {
try {
base.Fill(item);
if (this.Current == null) {
System.Console.WriteLine("ow is null");
}
if (this.row != null) {
BaseDataItem baseDataItem = item as BaseDataItem;
if (baseDataItem != null) {
@ -190,19 +217,12 @@ namespace SharpReportCore { @@ -190,19 +217,12 @@ namespace SharpReportCore {
}
}
} catch (System.NullReferenceException) {
} catch (Exception) {
throw;
}
}
public override void Reset() {
this.CurrentRow = 0;
this.view.Sort = "";
this.view.RowFilter = "";
base.Reset();
}
public override ColumnCollection AvailableFields {
get {
ColumnCollection c = base.AvailableFields;
@ -226,10 +246,11 @@ namespace SharpReportCore { @@ -226,10 +246,11 @@ namespace SharpReportCore {
get{
return base.IndexList.CurrentPosition;
}
/*
set {
base.CurrentRow = value;
if (base.IndexList.Count > 0) {
if ((value > -1) && (value < base.IndexList.Count)){
BaseComparer bc = (BaseComparer)base.IndexList[value];
GroupSeperator sep = bc as GroupSeperator;
@ -239,9 +260,11 @@ namespace SharpReportCore { @@ -239,9 +260,11 @@ namespace SharpReportCore {
row = this.view[((BaseComparer)base.IndexList[value]).ListIndex];
}
}
*/
}
#endregion
#region IDisposable
public override void Dispose(){

38
src/AddIns/Misc/SharpReport/SharpReportCore/Exceptions/MissingSectionException.cs

@ -0,0 +1,38 @@ @@ -0,0 +1,38 @@
/*
* Created by SharpDevelop.
* User: Forstmeier Helmut
* Date: 12.03.2006
* Time: 22:46
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Runtime.Serialization;
/// <summary>
/// Description of MissingSectionException.
/// </summary>
namespace SharpReportCore{
[Serializable()]
public class MissingSectionException: System.Exception
{
public MissingSectionException():base(){
}
public MissingSectionException(string errorMessage) :base (errorMessage){
}
public MissingSectionException(string errorMessage,
Exception exception):base (errorMessage,exception){
}
protected MissingSectionException(SerializationInfo info,
StreamingContext context) : base(info, context){
// Implement type-specific serialization constructor logic.
}
}
}

2
src/AddIns/Misc/SharpReport/SharpReportCore/Exceptions/SharpReportWrongItemException.cs

@ -11,7 +11,7 @@ using System; @@ -11,7 +11,7 @@ using System;
using System.Runtime.Serialization;
/// <summary>
/// This Exception is throwen
/// This Exception is throw if an unknown Items should be created
/// </summary>
/// <remarks>
/// created by - Forstmeier Peter

10
src/AddIns/Misc/SharpReport/SharpReportCore/Globals/GlobalEnums.cs

@ -42,6 +42,7 @@ namespace SharpReportCore { @@ -42,6 +42,7 @@ namespace SharpReportCore {
public enum ReportItemType {
ReportTextItem,
ReportDataItem,
ReportRowItem,
ReportRectangleItem,
ReportImageItem,
ReportLineItem,
@ -98,10 +99,11 @@ namespace SharpReportCore { @@ -98,10 +99,11 @@ namespace SharpReportCore {
/// type to its internal representation.
public static object StringToEnum( Type type, string value ) {
foreach ( FieldInfo fi in type.GetFields() )
if ( fi.Name == value )
return fi.GetValue( null ); // We use null because
foreach ( FieldInfo fi in type.GetFields() ){
if ( fi.Name == value ){
return fi.GetValue( null );
}
}
throw new Exception( string.Format(CultureInfo.CurrentCulture,
"Can't convert {0} to {1}",
value,

13
src/AddIns/Misc/SharpReport/SharpReportCore/Globals/GlobalValues.cs

@ -32,6 +32,7 @@ namespace SharpReportCore { @@ -32,6 +32,7 @@ namespace SharpReportCore {
private static string sharpReportExtension = ".srd";
private static string xsdExtension = "xsd";
private static string sharpReportStandartFileName = "SharpReport1";
private const string unbound = "unbound";
private const int enlargeControl = 5;
#region some usefull functions and methodes
@ -120,6 +121,12 @@ namespace SharpReportCore { @@ -120,6 +121,12 @@ namespace SharpReportCore {
}
}
public static Size PreferedSize {
get {
return new Size(100,20);
}
}
/// <summary>
/// Size of Grids in Sections, used by the Designer
@ -134,7 +141,7 @@ namespace SharpReportCore { @@ -134,7 +141,7 @@ namespace SharpReportCore {
}
#endregion
#region propertys
#region String Constant's
public static string SharpReportString {
get {
return sharpReportString;
@ -158,6 +165,10 @@ namespace SharpReportCore { @@ -158,6 +165,10 @@ namespace SharpReportCore {
return sharpReportStandartFileName + sharpReportExtension;
}
}
public static string UnboundName {
get {return unbound;}
}
#endregion
#region Message's

28
src/AddIns/Misc/SharpReport/SharpReportCore/Interfaces/IContainerItem.cs

@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
/*
* Created by SharpDevelop.
* User: Forstmeier Helmut
* Date: 06.03.2006
* Time: 09:45
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Windows.Forms;
using System.Collections.ObjectModel;
namespace SharpReportCore
{
/// <summary>
/// Description of IContainerControl.
/// </summary>
public interface IContainerItem{
bool IsValidChild (BaseReportItem childControl);
Padding Padding
{get;set;}
ReportItemCollection Items
{get;}
}
}

19
src/AddIns/Misc/SharpReport/SharpReportCore/Interfaces/IDataContainer.cs

@ -13,19 +13,20 @@ namespace SharpReportCore { @@ -13,19 +13,20 @@ namespace SharpReportCore {
/// Setup the Databinding, return true if databinding was ok
/// </summary>
bool DataBind();
/// <summary>
/// Move to next row
/// </summary>
/// <returns></returns>
void Skip();
// /// <summary>
// /// Move to next row
// /// </summary>
// /// <returns></returns>
// void Skip();
/// <summary>
/// reste Datasource,move to position 0
/// </summary>
void Reset ();
/// <summary>
/// Reads one row of data and fill the
/// <see cref="ReportItemCollection"></see>
void FetchData (ReportItemCollection collection);
// /// <summary>
// /// Reads one row of data and fill the
// /// <see cref="ReportItemCollection"></see>
// void FetchData (ReportItemCollection collection);
int Count {
get;

13
src/AddIns/Misc/SharpReport/SharpReportCore/Interfaces/IDataViewStrategy.cs

@ -5,20 +5,17 @@ using System.Collections; @@ -5,20 +5,17 @@ using System.Collections;
using System.ComponentModel;
namespace SharpReportCore{
public interface IDataViewStrategy:IDisposable{
public interface IDataViewStrategy:IEnumerator,IDisposable{
/// <summary>
/// Sort the DataSource
/// </summary>
void Sort ();
/// <summary>
/// Reset Datasource to first position
/// </summary>
void Reset();
/// <summary>
/// Establish Databinding
/// Allway'S call this method before any other operations
/// </summary>
// /// Establish Databinding
// /// Allway's call this method before any other operations
// /// </summary>
void Bind();
/// <summary>
/// Fill's a <see cref="IItemRenderer"></see> with Data from the CurrentRow

121
src/AddIns/Misc/SharpReport/SharpReportCore/Printing/AbstractDataRenderer.cs

@ -0,0 +1,121 @@ @@ -0,0 +1,121 @@
/*
* Created by SharpDevelop.
* User: Forstmeier Peter
* Date: 23.03.2006
* Time: 11:18
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Drawing;
namespace SharpReportCore{
/// <summary>
/// Description of AbstractDataRenderer.
/// </summary>
public class AbstractDataRenderer : AbstractRenderer{
DataManager dataManager;
DataNavigator navigator;
public AbstractDataRenderer(ReportModel model,DataManager dataManager):base(model){
if (dataManager == null) {
throw new ArgumentNullException("dataManager");
}
this.dataManager = dataManager;
}
protected override void ReportBegin(object sender, ReportPageEventArgs e)
{
base.ReportBegin(sender, e);
}
protected override void BeginPrintPage(object sender, ReportPageEventArgs e)
{
base.BeginPrintPage(sender, e);
}
protected override int RenderSection(BaseSection section, ReportPageEventArgs rpea){
bool hasContainer = false;
IContainerItem container = null;
foreach (BaseReportItem item in section.Items) {
container = item as IContainerItem;
if (container != null) {
hasContainer = true;
break;
}
}
if (hasContainer) {
return DoContainerControl(section,container,rpea);
} else {
return base.RenderSection(section, rpea);
}
}
private int DoContainerControl (BaseSection section,
IContainerItem container,
ReportPageEventArgs rpea) {
if (container == null) {
return section.Size.Height;
}
this.DataNavigator.Fill(container.Items);
Point drawPoint = new Point(0,0);
if (section.Visible){
section.Render (rpea);
foreach (BaseReportItem item in section.Items) {
if (item.Parent == null) {
item.Parent = section;
}
item.SectionOffset = section.SectionOffset;
base.DrawSingleItem (rpea,item);
drawPoint.Y = section.SectionOffset + section.Size.Height;
rpea.LocationAfterDraw = new PointF (rpea.LocationAfterDraw.X,section.SectionOffset + section.Size.Height);
}
if ((section.CanGrow == false)&& (section.CanShrink == false)) {
return section.Size.Height;
}
return drawPoint.Y;
}
return drawPoint.Y;
}
#region Properties
protected DataManager DataManager {
get {
return dataManager;
}
}
protected DataNavigator DataNavigator{
get {return this.navigator;}
set {this.navigator = value;}
}
#endregion
#region IDisposable
public override void Dispose()
{
if (this.dataManager != null) {
this.dataManager.Dispose();
this.dataManager = null;
}
if (this.navigator != null) {
this.navigator= null;
}
base.Dispose();
}
#endregion
}
}

65
src/AddIns/Misc/SharpReport/SharpReportCore/Printing/AbstractRenderer.cs

@ -109,13 +109,13 @@ namespace SharpReportCore { @@ -109,13 +109,13 @@ namespace SharpReportCore {
/// </summary>
protected void DebugRectangle (ReportPageEventArgs rpea,Rectangle rectangle) {
// if (rpea == null) {
// throw new ArgumentNullException("rpea");
// }
// if (rectangle == null) {
// throw new ArgumentNullException("rectangle");
// }
// e.PrintPageEventArgs.Graphics.DrawRectangle (Pens.Black,rect);
if (rpea == null) {
throw new ArgumentNullException("rpea");
}
System.Console.WriteLine("Debug Rectangle {0}",rectangle);
rpea.PrintPageEventArgs.Graphics.DrawRectangle (Pens.Black,rectangle);
}
/// <summary>
@ -159,7 +159,7 @@ namespace SharpReportCore { @@ -159,7 +159,7 @@ namespace SharpReportCore {
///</summary>
/// <param name="startAt">Section start at this PointF</param>
/// <param name="e">ReportPageEventArgs</param>
protected PointF DrawPageheader (PointF startat,ReportPageEventArgs e) {
protected PointF DrawPageHeader (PointF startat,ReportPageEventArgs e) {
float offset = 0F;
BaseSection section = null;
sectionInUse = Convert.ToInt16(GlobalEnums.enmSection.ReportPageHeader,CultureInfo.InvariantCulture);
@ -177,52 +177,53 @@ namespace SharpReportCore { @@ -177,52 +177,53 @@ namespace SharpReportCore {
}
protected int RenderSection (BaseSection section,ReportPageEventArgs rpea) {
protected virtual int RenderSection (BaseSection section,ReportPageEventArgs rpea) {
Point drawPoint = new Point(0,0);
if (section.Visible){
section.Render (rpea);
foreach (BaseReportItem rItem in section.Items) {
rItem.SuspendLayout();
rItem.Parent = section;
if (section.SectionMargin == 0) {
rItem.Margin = reportSettings.DefaultMargins.Left;
foreach (BaseReportItem item in section.Items) {
if (item.Parent == null) {
item.Parent = section;
}
else {
rItem.Margin = section.SectionMargin;
}
rItem.Offset = section.SectionOffset;
rItem.FormatOutput -= new EventHandler<FormatOutputEventArgs> (FormatBaseReportItem);
rItem.FormatOutput += new EventHandler<FormatOutputEventArgs> (FormatBaseReportItem);
item.SectionOffset = section.SectionOffset;
this.DrawSingleItem (rpea,item);
rItem.Render(rpea);
drawPoint.Y = section.SectionOffset + section.Size.Height;
rpea.LocationAfterDraw = new PointF (rpea.LocationAfterDraw.X,section.SectionOffset + section.Size.Height);
rItem.ResumeLayout();
}
if ((section.CanGrow == false)&& (section.CanShrink == false)) {
return section.Size.Height;
}
return drawPoint.Y;
}
return drawPoint.Y;
}
protected void DrawSingleItem (ReportPageEventArgs rpea,BaseReportItem item){
item.SuspendLayout();
item.FormatOutput -= new EventHandler<FormatOutputEventArgs> (FormatBaseReportItem);
item.FormatOutput += new EventHandler<FormatOutputEventArgs> (FormatBaseReportItem);
item.Render(rpea);
item.ResumeLayout();
}
// Called by FormatOutPutEvent of the BaseReportItem
void FormatBaseReportItem (object sender, FormatOutputEventArgs rpea) {
System.Console.WriteLine("FormatBaseReportItem");
BaseDataItem baseDataItem = sender as BaseDataItem;
if (baseDataItem != null) {
rpea.FormatedValue = defaultFormatter.FormatItem (baseDataItem);
if (!String.IsNullOrEmpty(baseDataItem.FormatString)) {
rpea.FormatedValue = defaultFormatter.FormatItem (baseDataItem);
System.Console.WriteLine("\tFormated Value = {0}",rpea.FormatedValue);
}
}
// if (sender is BaseDataItem) {
// BaseDataItem i = (BaseDataItem)sender;
// e.FormatedValue = defaultFormatter.FormatItem (i);
// }
}
@ -416,7 +417,7 @@ namespace SharpReportCore { @@ -416,7 +417,7 @@ namespace SharpReportCore {
#endregion
#region IDispoable
public void Dispose(){
public virtual void Dispose(){
if (this.reportDocument != null) {
this.reportDocument.Dispose();
}

1
src/AddIns/Misc/SharpReport/SharpReportCore/Printing/Formatter/DefaultFormatter.cs

@ -43,6 +43,7 @@ namespace SharpReportCore{ @@ -43,6 +43,7 @@ namespace SharpReportCore{
///<param name="item">A ReportDataItem</param>
///
public string FormatItem (BaseDataItem item) {
System.Console.WriteLine("FormatItem {0} / {1}",item.DataType,item.FormatString);
if (item == null) {
throw new ArgumentNullException("item");
}

105
src/AddIns/Misc/SharpReport/SharpReportCore/Printing/RenderDataReport.cs

@ -21,9 +21,11 @@ @@ -21,9 +21,11 @@
// Peter Forstmeier (Peter.Forstmeier@t-online.de)
using System;
using System.Globalization;
using System.Data;
using System.Drawing;
using System.ComponentModel;
using System.Globalization;
using System.Drawing.Printing;
using SharpReportCore;
@ -38,20 +40,15 @@ using SharpReportCore; @@ -38,20 +40,15 @@ using SharpReportCore;
///
namespace SharpReportCore {
public class RenderDataReport : SharpReportCore.AbstractRenderer {
private DataManager dataManager;
// public class RenderDataReport : AbstractRenderer {
public class RenderDataReport : AbstractDataRenderer {
private PointF currentPoint;
public RenderDataReport(ReportModel model):base (model){
}
private DataNavigator dataNavigator;
public RenderDataReport(ReportModel model,DataManager dataManager):base (model){
this.dataManager = dataManager;
System.Console.WriteLine("ReenderDataReport");
System.Console.WriteLine("connect to groupingevents");
this.dataManager.GroupChanged += new EventHandler<GroupChangedEventArgs>(OnGroupChanged);
this.dataManager.GroupChanging += new EventHandler <EventArgs> (OnGroupChanging);
public RenderDataReport(ReportModel model,DataManager dataManager):base (model,dataManager){
base.DataManager.GroupChanged += new EventHandler<GroupChangedEventArgs>(OnGroupChanged);
base.DataManager.GroupChanging += new EventHandler <EventArgs> (OnGroupChanging);
}
@ -64,6 +61,13 @@ namespace SharpReportCore { @@ -64,6 +61,13 @@ namespace SharpReportCore {
System.Console.WriteLine("OnGroupChanging");
}
private void OnListChanged (object sender,System.ComponentModel.ListChangedEventArgs e) {
System.Console.WriteLine("List Changed sender <{0}> reason <{1}>",
sender.ToString(),
e.ListChangedType);
}
#region overrides
@ -73,13 +77,16 @@ namespace SharpReportCore { @@ -73,13 +77,16 @@ namespace SharpReportCore {
protected override void ReportBegin(object sender, ReportPageEventArgs e) {
base.ReportBegin (sender,e);
//allways reset the dataManager before printing
if (this.dataManager != null) {
this.dataManager.Reset();
}
base.DataManager.ListChanged += new EventHandler<ListChangedEventArgs> (OnListChanged);
dataNavigator = base.DataManager.GetNavigator;
dataNavigator.ListChanged += new EventHandler<ListChangedEventArgs> (OnListChanged);
dataNavigator.Reset();
base.DataNavigator = dataNavigator;
}
protected override void BeginPrintPage(object sender, ReportPageEventArgs rpea) {
if (rpea == null) {
throw new ArgumentNullException("rpea");
}
@ -93,7 +100,7 @@ namespace SharpReportCore { @@ -93,7 +100,7 @@ namespace SharpReportCore {
}
//Draw Pageheader
currentPoint = base.DrawPageheader (currentPoint,rpea);
currentPoint = base.DrawPageHeader (currentPoint,rpea);
base.DetailStart = new Point ((int)currentPoint.X,(int)currentPoint.Y);
}
@ -115,57 +122,36 @@ namespace SharpReportCore { @@ -115,57 +122,36 @@ namespace SharpReportCore {
section.SectionOffset,
e.PrintPageEventArgs.MarginBounds.Width,
section.Size.Height);
DebugRectangle (e,detailRect);
// DebugRectangle (e,detailRect);
// no loop if there is no data
if (! dataManager.HasMoreData ) {
if (! base.DataManager.HasMoreData ) {
e.PrintPageEventArgs.HasMorePages = false;
return;
}
// here starts the page
bool goon = true;
do {
try {
if (dataManager.HasMoreData) {
dataManager.FetchData (base.CurrentSection.Items);
// offset = base.RenderSection (section,e);
base.RenderSection (section,e);
section.SectionOffset = section.SectionOffset + section.Size.Height + 2 * base.Gap;
base.FitSectionToItems (base.CurrentSection,e);
sectionRect = new Rectangle (e.PrintPageEventArgs.MarginBounds.Left,
section.SectionOffset,
e.PrintPageEventArgs.MarginBounds.Width,
section.Size.Height);
dataManager.Skip();
} else {
e.PrintPageEventArgs.HasMorePages = false;
goon = false;
}
} catch (Exception) {
e.PrintPageEventArgs.HasMorePages = false;
goon = false;
}
while (dataNavigator.MoveNext()) {
dataNavigator.Fill (base.CurrentSection.Items);
base.RenderSection (section,e);
section.SectionOffset = section.SectionOffset + section.Size.Height + 2 * base.Gap;
base.FitSectionToItems (base.CurrentSection,e);
sectionRect = new Rectangle (e.PrintPageEventArgs.MarginBounds.Left,
section.SectionOffset,
e.PrintPageEventArgs.MarginBounds.Width,
section.Size.Height);
if (!detailRect.Contains(sectionRect)) {
base.PageBreak(e,section);
return;
}
}
while (detailRect.Contains(sectionRect)&& goon);
// is there is anymore data
e.PrintPageEventArgs.HasMorePages = false;
if (dataManager.HasMoreData ) {
base.PageBreak(e,section);
return;
} else {
e.PrintPageEventArgs.HasMorePages = false;
}
//Did we have a pagebreak
if (base.CurrentSection.PageBreakAfter) {
base.PageBreak(e,section);
@ -175,7 +161,6 @@ namespace SharpReportCore { @@ -175,7 +161,6 @@ namespace SharpReportCore {
}
protected override void PrintBodyEnd(object sender, ReportPageEventArgs e) {
base.PrintBodyEnd (sender,e);
}

8
src/AddIns/Misc/SharpReport/SharpReportCore/Printing/RenderFormSheetReport.cs

@ -75,7 +75,7 @@ namespace SharpReportCore { @@ -75,7 +75,7 @@ namespace SharpReportCore {
}
//Draw Pageheader
currentPoint = base.DrawPageheader (currentPoint,e);
currentPoint = base.DrawPageHeader (currentPoint,e);
base.DetailStart = new Point ((int)currentPoint.X,(int)currentPoint.Y);
}
@ -96,7 +96,7 @@ namespace SharpReportCore { @@ -96,7 +96,7 @@ namespace SharpReportCore {
Rectangle detailRect = base.DetailRectangle (e);
FitSectionToItems (section,e);
base.RenderSection (section,e);
DebugRectangle (e,detailRect);
// DebugRectangle (e,detailRect);
}
@ -122,7 +122,7 @@ namespace SharpReportCore { @@ -122,7 +122,7 @@ namespace SharpReportCore {
base.CurrentSection.SectionOffset ,
e.PrintPageEventArgs.MarginBounds.Width,
base.CurrentSection.Size.Height);
DebugRectangle (e,r);
// DebugRectangle (e,r);
int off = base.CurrentSection.SectionOffset + base.CurrentSection.Size.Height + base.Gap;
//ReportFooter
@ -138,7 +138,7 @@ namespace SharpReportCore { @@ -138,7 +138,7 @@ namespace SharpReportCore {
base.CurrentSection.Size.Height);
base.RenderSection (section,e);
DebugRectangle (e,rr);
// DebugRectangle (e,rr);
}
#endregion

2
src/AddIns/Misc/SharpReport/SharpReportCore/Printing/ReportDocument.cs

@ -73,14 +73,12 @@ namespace SharpReportCore { @@ -73,14 +73,12 @@ namespace SharpReportCore {
}
public void ReportDocumentQueryPage (object sender, QueryPageSettingsEventArgs e) {
// System.Console.WriteLine("\tReportDocument QueryPage");
if (QueryPage != null) {
QueryPage (this,e);
}
}
public void ReportDocumentPrintPage (object sender, PrintPageEventArgs e) {
System.Console.WriteLine("\tReportDocument PrintPage");
pageNr ++;
ReportPageEventArgs pea = new ReportPageEventArgs (e,pageNr,false,new PointF (0,0));

1
src/AddIns/Misc/SharpReport/SharpReportCore/ReportModel.cs

@ -46,6 +46,7 @@ namespace SharpReportCore { @@ -46,6 +46,7 @@ namespace SharpReportCore {
foreach (GlobalEnums.enmSection sec in Enum.GetValues(typeof(GlobalEnums.enmSection))) {
sectionCollection.Add (sectionFactory.Create(sec.ToString()));
}
}
public ReportModel(GraphicsUnit graphicsUnit):this() {

5
src/AddIns/Misc/SharpReport/SharpReportCore/SharpReportCore.csproj

@ -126,6 +126,11 @@ @@ -126,6 +126,11 @@
<Compile Include="DataManager\SqlQueryChecker.cs" />
<Compile Include="Exceptions\MissingModelException.cs" />
<Compile Include="Interfaces\IHierarchyInterfaces.cs" />
<Compile Include="BaseItems\RowItem.cs" />
<Compile Include="Interfaces\IContainerItem.cs" />
<Compile Include="Exceptions\MissingSectionException.cs" />
<Compile Include="Printing\AbstractDataRenderer.cs" />
<Compile Include="DataManager\DataNavigator.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="BaseItems" />

3
src/AddIns/Misc/SharpReport/SharpReportCore/Visitors/IVisitor.cs

@ -8,8 +8,7 @@ @@ -8,8 +8,7 @@
*/
using System;
//using SharpReport.Designer;
//using SharpReportCore;
namespace SharpReportCore{

3
src/AddIns/Misc/SharpReport/SharpReportCore/Visitors/LoadModelVisitor.cs

@ -97,8 +97,7 @@ namespace SharpReportCore { @@ -97,8 +97,7 @@ namespace SharpReportCore {
}
}
}else {
SharpReportException ex = new SharpReportException ("Wrong Section Name <" + sectionElem.GetAttribute("name") + ">");
throw ex;
throw new MissingSectionException();
}
}else {
throw new System.Xml.XmlException ("Report : SetSection Wrong Node in Report");

21
src/AddIns/Misc/SharpReport/SharpReportCore/Xml/XmlHelper.cs

@ -43,11 +43,7 @@ namespace SharpReportCore { @@ -43,11 +43,7 @@ namespace SharpReportCore {
/// <returns>"Report is SharpReport or not</returns>/returns>
///
public static bool IsSharpReport (XmlElement elem) {
bool isOk = false;
if (elem.Name.Equals (SharpReportCore.GlobalValues.SharpReportString)) {
isOk = true;
}
return isOk;
return (elem.Name.Equals (SharpReportCore.GlobalValues.SharpReportString));
}
/// <summary>
@ -128,18 +124,17 @@ namespace SharpReportCore { @@ -128,18 +124,17 @@ namespace SharpReportCore {
try {
XmlNodeList nodeList = ctrlElem.ChildNodes;
foreach (XmlNode node in nodeList) {
if (node is XmlElement) {
XmlElement elem = (XmlElement)node;
if (elem.HasAttribute("value")) {
if (elem.Name == "Font") {
XmlElement elem = node as XmlElement;
if (elem != null) {
if (elem.HasAttribute("value")) {
if (elem.Name == "Font") {
item.Font = XmlFormReader.MakeFont (elem.GetAttribute("value"));
}
// MessageBox.Show ("FOnt " + elem.GetAttribute("value").ToString(),"BuildCOntrol");
item.Font = XmlFormReader.MakeFont (elem.GetAttribute("value"));
reader.SetValue (item,elem.Name,elem.GetAttribute("value"));
}
reader.SetValue (item,elem.Name,elem.GetAttribute("value"));
}
}
}
} catch (Exception) {
throw;
}

2
src/AddIns/Misc/SharpReport/SharpReportWizard/GeneratorCommands.cs

@ -68,10 +68,12 @@ namespace ReportGenerator{ @@ -68,10 +68,12 @@ namespace ReportGenerator{
dataModel = model.DataModel;
switch (dataModel) {
case GlobalEnums.enmPushPullModel.PullData:
customizer.Set("DataRow",GlobalEnums.ReportItemType.ReportRowItem);
GeneratePullDataReport generatePullDataReport = new GeneratePullDataReport(customizer,model);
generatePullDataReport.GenerateReport();
break;
case GlobalEnums.enmPushPullModel.PushData:
customizer.Set("DataRow",GlobalEnums.ReportItemType.ReportRowItem);
GeneratePushDataReport generatePushDataReport = new GeneratePushDataReport(customizer,model);
generatePushDataReport.GenerateReport();
break;

145
src/AddIns/Misc/SharpReport/SharpReportWizard/Generators/AbstractReportGenerator.cs

@ -36,10 +36,12 @@ namespace ReportGenerator { @@ -36,10 +36,12 @@ namespace ReportGenerator {
private ReportGenerator reportGenerator;
private Properties customizer;
private SharpReportManager manager;
private BaseReportItem parentItem;
private NameService nameService ;
private AutoReport autoReport;
private ReportItemCollection collection;
public AbstractReportGenerator() {
}
public AbstractReportGenerator(Properties customizer,ReportModel reportModel){
if (reportModel == null) {
throw new ArgumentNullException("reportModel");
@ -49,9 +51,20 @@ namespace ReportGenerator { @@ -49,9 +51,20 @@ namespace ReportGenerator {
}
this.customizer = customizer;
this.reportModel = reportModel;
this.nameService = new NameService();
this.autoReport = new AutoReport();
reportGenerator = (ReportGenerator)customizer.Get("Generator");
manager = new SharpReportManager();
if (this.customizer.Get("DataRow") != null) {
SharpReport.Designer.IDesignableFactory bf = new SharpReport.Designer.IDesignableFactory();
this.parentItem = bf.Create (this.customizer.Get("DataRow").ToString());
IContainerItem con = this.parentItem as IContainerItem;
if (con != null) {
con.Padding = reportModel.ReportSettings.Padding;
}
}
}
#region ReportGenerator.IReportGenerator interface implementation
@ -59,11 +72,13 @@ namespace ReportGenerator { @@ -59,11 +72,13 @@ namespace ReportGenerator {
if (this.reportModel == null) {
throw new MissingModelException();
}
BuildStandartSections();
manager.CreatePageHeader (this.reportModel);
manager.CreatePageNumber(this.reportModel);
}
#endregion
@ -74,16 +89,100 @@ namespace ReportGenerator { @@ -74,16 +89,100 @@ namespace ReportGenerator {
}
}
protected void AdjustAll () {
AdjustNames(reportModel);
protected void BuildDataSection (BaseSection section) {
if (section == null) {
throw new ArgumentException("section");
}
if (this.parentItem == null) {
DataColumnsFromReportItems (section);
} else {
section.Items.Add (this.parentItem);
IContainerItem containerItem = this.parentItem as IContainerItem;
this.parentItem.Parent = section;
if ( containerItem != null) {
this.AddItemsToParent (containerItem,this.ReportItemCollection);
}
}
}
private void DataColumnsFromReportItems (BaseSection section) {
try {
ReportItemCollection colDetail = autoReport.AutoDataColumns (this.ReportItemCollection);
section.SuspendLayout();
AddItemsToSection (section,colDetail);
section.ResumeLayout();
}catch (Exception) {
throw;
}
}
protected void HeaderColumnsFromReportItems (BaseSection section) {
try {
ReportItemCollection colDetail = autoReport.HeaderColumnsFromReportItems (this.ReportItemCollection,section,false);
section.SuspendLayout();
AddItemsToSection (section,colDetail);
section.ResumeLayout();
} catch(Exception) {
throw;
}
}
private void AddItemsToParent (IContainerItem container,ReportItemCollection collection) {
for (int i = 0;i < collection.Count ;i ++ ) {
BaseReportItem r = (BaseReportItem)collection[i];
r.Location = new Point (r.Location.X,container.Padding.Top);
r.Parent = container;
container.Items.Add (r);
}
}
private void AddItemsToSection (BaseSection section,ReportItemCollection collection) {
if (section == null ) {
throw new ArgumentNullException ("section");
}
if (collection == null) {
throw new ArgumentNullException("collection");
}
// if there are already items in the section,
// then we have to append the Items, means whe have to enlarge the section
if (section.Items.Count > 0) {
section.Size = new Size (section.Size.Width,
section.Size.Height + GlobalValues.DefaultSectionHeight);
}
for (int i = 0;i < collection.Count ;i ++ ) {
BaseReportItem r = (BaseReportItem)collection[i];
r.Parent = section;
r.Location = new Point (r.Location.X,GlobalValues.DefaultSectionHeight);
section.Items.Add (r);
}
}
protected void AdjustAllNames () {
foreach (BaseSection sec in this.reportModel.SectionCollection) {
AdjustNames(sec.Items);
}
}
private static void AdjustNames (ReportModel model) {
NameService nameService = new NameService();
foreach (BaseSection section in model.SectionCollection) {
foreach (IItemRenderer item in section.Items) {
item.Name = nameService.CreateName(section.Items,item.Name);
private void AdjustNames (ReportItemCollection items) {
foreach (IItemRenderer item in items) {
IContainerItem it = item as IContainerItem;
if (it != null) {
AdjustNames (it.Items);
}
item.Name = nameService.CreateName(items,item.Name);
}
}
@ -94,22 +193,30 @@ namespace ReportGenerator { @@ -94,22 +193,30 @@ namespace ReportGenerator {
return customizer;
}
}
public ReportGenerator ReportGenerator {
get {
return reportGenerator;
}
}
public ReportModel ReportModel {
get {
return reportModel;
}
}
public SharpReportManager Manager {
public ReportItemCollection ReportItemCollection {
get {
return manager;
if (collection == null) {
this.collection = new ReportItemCollection();
}
return collection;
}
}
#endregion
public void Dispose(){
@ -123,12 +230,16 @@ namespace ReportGenerator { @@ -123,12 +230,16 @@ namespace ReportGenerator {
protected void Dispose(bool disposing){
if (disposing) {
// Free other state (managed objects).
if (this.manager != null) {
this.manager.Dispose();
}
}
if (this.manager != null) {
this.manager.Dispose();
this.manager = null;
}
if (this.autoReport != null) {
this.autoReport.Dispose();
this.autoReport = null;
}
// Release unmanaged resources.
// Set large fields to null.
// Call Dispose on your base class.

11
src/AddIns/Misc/SharpReport/SharpReportWizard/Generators/GenerateFormSheetReport.cs

@ -15,23 +15,30 @@ using SharpReportCore; @@ -15,23 +15,30 @@ using SharpReportCore;
namespace ReportGenerator
{
/// <summary>
/// Description of GenerateFormSheetReport.
/// This class generates a plain Formsheet
/// </summary>
public class GenerateFormSheetReport:AbstractReportGenerator
{
public GenerateFormSheetReport(Properties customizer,
ReportModel reportModel):base(customizer,reportModel){
if (customizer == null) {
throw new ArgumentException("customizer");
}
if (reportModel == null) {
throw new ArgumentException("reportModel");
}
if (base.ReportModel.ReportSettings.DataModel != GlobalEnums.enmPushPullModel.FormSheet) {
throw new ArgumentException ("Wrong DataModel in GeneratePullDataReport");
}
base.ReportItemCollection.Clear();
}
public override void GenerateReport() {
base.ReportModel.ReportSettings.ReportType = GlobalEnums.enmReportType.FormSheet;
base.ReportModel.ReportSettings.DataModel = GlobalEnums.enmPushPullModel.FormSheet;
base.GenerateReport();
base.AdjustAll();
base.AdjustAllNames();
}
}
}

23
src/AddIns/Misc/SharpReport/SharpReportWizard/Generators/GeneratePullDataReport.cs

@ -25,12 +25,22 @@ using System.Windows.Forms; @@ -25,12 +25,22 @@ using System.Windows.Forms;
namespace ReportGenerator {
public class GeneratePullDataReport : AbstractReportGenerator {
public GeneratePullDataReport(Properties customizer,
ReportModel reportModel):base(customizer,reportModel){
if (customizer == null) {
throw new ArgumentException("customizer");
}
if (reportModel == null) {
throw new ArgumentException("reportModel");
}
if (base.ReportModel.ReportSettings.DataModel != GlobalEnums.enmPushPullModel.PullData) {
throw new ArgumentException ("Wrong DataModel in GeneratePullDataReport");
}
base.ReportItemCollection.Clear();
base.ReportItemCollection.AddRange((ReportItemCollection)base.Customizer.Get ("ReportItemCollection"));
}
#region ReportGenerator.IReportGenerator interface implementation
@ -39,25 +49,26 @@ namespace ReportGenerator { @@ -39,25 +49,26 @@ namespace ReportGenerator {
base.ReportModel.ReportSettings.ReportType = GlobalEnums.enmReportType.DataReport;
base.ReportModel.ReportSettings.DataModel = GlobalEnums.enmPushPullModel.PullData;
ReportItemCollection col = (ReportItemCollection)base.Customizer.Get ("ReportItemCollection");
ColumnCollection columnCollection = (ColumnCollection)base.Customizer.Get ("ColumnCollection");
this.ReportModel.ReportSettings.AvailableFieldsCollection = columnCollection;
this.ReportModel.ReportSettings.AvailableFieldsCollection =
(ColumnCollection)base.Customizer.Get ("ColumnCollection");;
base.GenerateReport();
base.Manager.HeaderColumnsFromReportItems (base.ReportModel.PageHeader,col);
base.Manager.DataColumnsFromReportItems (base.ReportModel.DetailSection,col);
base.HeaderColumnsFromReportItems (base.ReportModel.PageHeader);
base.BuildDataSection (base.ReportModel.DetailSection);
using (TableLayout layout = new TableLayout(base.ReportModel)){
layout.BuildLayout();
}
base.AdjustAll();
base.AdjustAllNames();
} catch (Exception) {
throw;
}
}
#endregion
}
}

17
src/AddIns/Misc/SharpReport/SharpReportWizard/Generators/GeneratePushDataReport.cs

@ -32,9 +32,18 @@ namespace ReportGenerator { @@ -32,9 +32,18 @@ namespace ReportGenerator {
public GeneratePushDataReport(Properties customizer,
ReportModel reportModel):base(customizer,reportModel){
if (customizer == null) {
throw new ArgumentException("customizer");
}
if (reportModel == null) {
throw new ArgumentException("reportModel");
}
if (base.ReportModel.ReportSettings.DataModel != GlobalEnums.enmPushPullModel.PushData) {
throw new ArgumentException ("Wrong DataModel in GeneratePushReport");
}
//we can't use the customizer here
base.ReportItemCollection.Clear();
base.ReportItemCollection.AddRange(base.ReportGenerator.ReportItemCollection);
}
public override void GenerateReport() {
@ -42,17 +51,15 @@ namespace ReportGenerator { @@ -42,17 +51,15 @@ namespace ReportGenerator {
base.ReportModel.ReportSettings.ReportType = GlobalEnums.enmReportType.DataReport;
base.ReportModel.ReportSettings.DataModel = GlobalEnums.enmPushPullModel.PushData;
//we can't use the customizer here
ReportItemCollection col = base.ReportGenerator.ReportItemCollection;
base.ReportModel.ReportSettings.AvailableFieldsCollection = base.ReportGenerator.ColumnCollection;
base.GenerateReport();
base.Manager.HeaderColumnsFromReportItems (base.ReportModel.PageHeader,col);
base.Manager.DataColumnsFromReportItems (base.ReportModel.DetailSection,col);
base.HeaderColumnsFromReportItems (base.ReportModel.PageHeader);
base.BuildDataSection (base.ReportModel.DetailSection);
using (TableLayout layout = new TableLayout(base.ReportModel)){
layout.BuildLayout();
}
base.AdjustAll();
base.AdjustAllNames();
}
}

37
src/AddIns/Misc/SharpReport/SharpReportWizard/ReportGenerator.cs

@ -9,8 +9,10 @@ @@ -9,8 +9,10 @@
//------------------------------------------------------------------------------
using System;
using System.Globalization;
using System.Drawing;
using System.ComponentModel;
using System.Globalization;
using System.Data;
using System.Data.OleDb;
@ -32,7 +34,7 @@ using SharpQuery.SchemaClass; @@ -32,7 +34,7 @@ using SharpQuery.SchemaClass;
using System.Windows.Forms;
namespace ReportGenerator {
public class ReportGenerator : object {
public class ReportGenerator : object,IDisposable {
//BaseSettingsPanel
@ -246,5 +248,36 @@ namespace ReportGenerator { @@ -246,5 +248,36 @@ namespace ReportGenerator {
#endregion
#region IDisposable
public void Dispose(){
this.Dispose(true);
GC.SuppressFinalize(this);
}
~ReportGenerator(){
Dispose(false);
}
protected void Dispose(bool disposing){
if (disposing) {
if (this.reportItemCollection != null) {
this.reportItemCollection.Clear();
this.reportItemCollection = null;
}
if (this.columnCollection == null) {
this.columnCollection.Clear();
this.columnCollection = null;
}
if (this.sharpQueryProcedure != null) {
this.sharpQueryProcedure = null;
}
}
// Release unmanaged resources.
// Set large fields to null.
// Call Dispose on your base class.
}
#endregion
}
}

28
src/AddIns/Misc/SharpReport/SharpReportWizard/ReportLayouts/AbstractLayout.cs

@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
//------------------------------------------------------------------------------
using System;
using System.Drawing;
using System.Drawing.Printing;
using System.ComponentModel;
using SharpReportCore;
@ -16,10 +17,7 @@ using SharpReportCore; @@ -16,10 +17,7 @@ using SharpReportCore;
/// <summary>
/// This class is the BaseClass for all Layout's
/// </summary>
/// <remarks>
/// created by - Susanne Jooss
/// created on - 10.09.2005 19:07:17
/// </remarks>
namespace ReportGenerator {
public class AbstractLayout : IReportLayout,IDisposable {
ReportModel reportModel;
@ -53,12 +51,34 @@ namespace ReportGenerator { @@ -53,12 +51,34 @@ namespace ReportGenerator {
throw new NotImplementedException("AbstractLayout:BuildLayout must be overriden");
}
#endregion
#region Properties
public ReportModel ReportModel {
get {
return reportModel;
}
}
public ReportSettings ReportSettings {
get {
return reportModel.ReportSettings;
}
}
public PageSettings PageSettings {
get {
return reportModel.ReportSettings.PageSettings;
}
}
public int UseablePageWidth {
get {
return this.PageSettings.Bounds.Width - this.ReportSettings.DefaultMargins.Left - this.ReportSettings.DefaultMargins.Right;
}
}
#endregion
#region System.IDisposable interface implementation
public void Dispose() {

69
src/AddIns/Misc/SharpReport/SharpReportWizard/ReportLayouts/TableLayout.cs

@ -11,7 +11,8 @@ using System; @@ -11,7 +11,8 @@ using System;
using System.Drawing;
using System.Drawing.Printing;
using System.ComponentModel;
using System.Windows.Forms;
using SharpReportCore;
/// <summary>
/// This class build a TableLayout
@ -29,22 +30,25 @@ namespace ReportGenerator { @@ -29,22 +30,25 @@ namespace ReportGenerator {
#region ReportGenerator.IReportLayout interface implementation
public override void BuildLayout() {
ReportSettings settings = base.ReportModel.ReportSettings;
PageSettings page = base.ReportModel.ReportSettings.PageSettings;
defaultFont = base.ReportModel.ReportSettings.DefaultFont;
int gesWidth = page.Bounds.Width - settings.DefaultMargins.Left - settings.DefaultMargins.Right;
// first we build the DetailSection
BaseSection sec = base.ReportModel.DetailSection;
this.colWidth = gesWidth / sec.Items.Count;
IContainerItem container = (IContainerItem)sec.Items[0];
Padding gap;
if (container != null) {
gap = container.Padding;
} else {
gap = base.ReportModel.ReportSettings.Padding;
}
this.colWidth = (Convert.ToInt32(base.UseablePageWidth / sec.Items.Count)) - gap.Left;
// we use GlobalValues.GridSize.Width as Gap
//between to controls
FormatSection (base.ReportModel.DetailSection,this.colWidth,
0,GlobalValues.GridSize.Width);
0,gap);
//ReportHeader
sec = base.ReportModel.ReportHeader;
@ -56,17 +60,17 @@ namespace ReportGenerator { @@ -56,17 +60,17 @@ namespace ReportGenerator {
// here we build the PageHeader, we use the columnsWidth from Details
// but we start at position 1 in ItemsCollection
sec = base.ReportModel.PageHeader;
this.colWidth = gesWidth / (sec.Items.Count - 1);
this.colWidth = base.UseablePageWidth / (sec.Items.Count - 1);
FormatSection (sec,this.colWidth,
1,GlobalValues.GridSize.Width);
1,base.ReportModel.ReportSettings.Padding);
base.FormatSingleEntry(sec.Items[0],
this.colWidth,new Point(settings.DefaultMargins.Left,0),defaultFont);
this.colWidth,new Point(base.ReportSettings.DefaultMargins.Left,0),defaultFont);
//PageFooter
sec = base.ReportModel.PageFooter;
base.FormatSingleEntry(sec.Items[0],
this.colWidth,new Point(settings.DefaultMargins.Left,0),defaultFont);
this.colWidth,new Point(base.ReportSettings.DefaultMargins.Left,0),defaultFont);
//ReportFooter
sec = base.ReportModel.ReportFooter;
@ -76,23 +80,40 @@ namespace ReportGenerator { @@ -76,23 +80,40 @@ namespace ReportGenerator {
}
#endregion
private void FormatSection (BaseSection section,
int itemWidth,int startAt,
int gap){
private void FormatItems (ReportItemCollection collection, int leftMargin,
int itemWidth,int startAt,Padding gap) {
IItemRenderer rItem;
ReportItemCollection collection = section.Items;
int leftMargin = base.ReportModel.ReportSettings.DefaultMargins.Left;
int pos = 0;
BaseReportItem item;
for (int i = startAt;i < collection.Count ;i++ ) {
rItem = collection[i];
rItem.Location = new Point (leftMargin + (pos * itemWidth),rItem.Location.Y);
rItem.Size = new Size (itemWidth - gap,rItem.Size.Height + GlobalValues.EnlargeControl);
rItem.Font = defaultFont;
item = (BaseReportItem)collection[i];
item.SuspendLayout();
item.Location = new Point (leftMargin + gap.Left + (pos * itemWidth),item.Location.Y);
item.Size = new Size (itemWidth - gap.Left,item.Size.Height + GlobalValues.EnlargeControl);
item.Font = defaultFont;
IContainerItem con = item as IContainerItem;
if (con != null) {
item.Size = new Size (base.UseablePageWidth,item.Size.Height);
int colWidth = item.Size.Width / (con.Items.Count);
FormatItems (con.Items,0,colWidth,0,gap);
}
pos ++;
item.ResumeLayout();
}
}
private void FormatSection (BaseSection section,
int itemWidth,int startAt,
Padding gap){
int leftMargin = section.SectionMargin;
FormatItems (section.Items,leftMargin,itemWidth,startAt,gap);
}
}
}

13
src/AddIns/Misc/SharpReport/SharpReportWizard/WizardPanels/PushModelPanel.cs

@ -80,11 +80,11 @@ namespace ReportGenerator @@ -80,11 +80,11 @@ namespace ReportGenerator
using (AutoReport auto = new AutoReport()){
ReportModel model = generator.FillReportModel (new ReportModel());
columnCollection = auto.AbstractColumnsFromDataSet (ds);
reportItems = auto.ReportItemsFromSchema(model,ds);
reportItems = auto.DataItemsFromSchema(model,ds);
if (reportItems != null) {
foreach (ReportDataItem item in reportItems) {
this.checkedListBox.Items.Add (item.MappingName,CheckState.Checked);
this.checkedListBox.Items.Add (item.MappingName,CheckState.Unchecked);
}
}
}
@ -108,12 +108,9 @@ namespace ReportGenerator @@ -108,12 +108,9 @@ namespace ReportGenerator
}
public override bool ReceiveDialogMessage(DialogMessage message){
// base.EnableNext = true;
// base.EnableFinish = true;
if (message == DialogMessage.Activated) {
// base.EnableNext = true;
// base.EnableFinish = true;
// base.IsLastPanel = true;
}
else if (message == DialogMessage.Finish) {
@ -128,7 +125,7 @@ namespace ReportGenerator @@ -128,7 +125,7 @@ namespace ReportGenerator
base.EnableFinish = true;
base.IsLastPanel = true;
//We can't use the customizer here, because Resultpanel is called later on
// and null's the proerties
// and null's the properties
generator.ReportItemCollection = itemCollection;
generator.ColumnCollection = columnCollection;
}

2
src/AddIns/Misc/SharpReport/SharpReportWizard/WizardPanels/ResultPanel.cs

@ -143,7 +143,7 @@ namespace ReportGenerator{ @@ -143,7 +143,7 @@ namespace ReportGenerator{
private void CreateCollections (DataSet dataSet) {
using (AutoReport auto = new AutoReport()){
abstractColumns = auto.AbstractColumnsFromDataSet (dataSet);
colDetail = auto.ReportItemsFromSchema(this.model,dataSet);
colDetail = auto.DataItemsFromSchema(this.model,dataSet);
}
}

BIN
src/Main/StartUp/Project/Resources/BitmapResources.resources

Binary file not shown.
Loading…
Cancel
Save