diff --git a/src/AddIns/Misc/SharpReport/SharpReport/Designer/Factories.cs b/src/AddIns/Misc/SharpReport/SharpReport/Designer/Factories.cs index 9d20983f95..2ed99ddeaa 100644 --- a/src/AddIns/Misc/SharpReport/SharpReport/Designer/Factories.cs +++ b/src/AddIns/Misc/SharpReport/SharpReport/Designer/Factories.cs @@ -36,19 +36,21 @@ namespace SharpReport.Designer { } } - public class IDesignableFactory : SharpReportCore.GenericFactory { + public class IDesignableFactory : SharpReportCore.GenericFactory { - public IDesignableFactory() :base(Assembly.GetExecutingAssembly(),typeof(IDesignable)){ - } + public IDesignableFactory() :base(Assembly.GetExecutingAssembly(),typeof(IDesignable)){ + } - public new BaseReportItem Create(string name) { - if (name.LastIndexOf('.') > 0) { + public new BaseReportItem Create(string name) { + if (String.IsNullOrEmpty(name)) { + throw new ArgumentNullException("name"); + } + if (name.LastIndexOf('.') > 0) { StringBuilder b = new StringBuilder (name); b.Remove (0,name.LastIndexOf('.') +1); name = b.ToString(); } return (BaseReportItem) base.Create (name); - } - } + } } diff --git a/src/AddIns/Misc/SharpReport/SharpReport/Designer/Report.cs b/src/AddIns/Misc/SharpReport/SharpReport/Designer/Report.cs index ef682aa3bf..8f8835d2d6 100644 --- a/src/AddIns/Misc/SharpReport/SharpReport/Designer/Report.cs +++ b/src/AddIns/Misc/SharpReport/SharpReport/Designer/Report.cs @@ -195,6 +195,7 @@ namespace SharpReport.Designer{ BaseReportItem br = (BaseReportItem)this.FindParent(iddea); baseReportItem.Location = new Point(iddea.ItemAtPoint.X - br.Location.X,10); } + baseReportItem.ResumeLayout(); } diff --git a/src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/BaseDesignerControl.cs b/src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/BaseDesignerControl.cs index 04d6fd7586..7b3dae87a8 100644 --- a/src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/BaseDesignerControl.cs +++ b/src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/BaseDesignerControl.cs @@ -51,12 +51,17 @@ namespace SharpReport.Designer 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 RegisterEvents () { + this.reportControl.SectionChanged += new EventHandler (this.ReportControlSectionChanged); + this.reportControl.SizeChanged += new System.EventHandler(this.ReportControlSizeChanged); + this.reportControl.DesignViewChanged += new SharpReport.Designer.ItemDragDropEventHandler(this.ReportControlDesignViewChanged); + } + public void RemoveSelectedItem () { if (this.SelectedObject == null) { return; @@ -96,23 +101,23 @@ namespace SharpReport.Designer void ReportControlSizeChanged(object sender, System.EventArgs e){ this.ctrlRuler1.Width = reportControl.Width; this.ctrlRuler1.Invalidate(); - FireSaveNeeded(); + NotifyPropertyChanged(this.Name + "ReportControlSizeChanged"); } void ReportControlSectionChanged (object sender,SectionChangedEventArgs e) { - FireSaveNeeded(); + NotifyPropertyChanged(this.Name + "ReportControlSectionChanged"); } void ReportControlDesignViewChanged(object sender, SharpReport.Designer.ItemDragDropEventArgs e){ - FireSaveNeeded(); + NotifyPropertyChanged(this.Name + "ReportControlDesignViewChanged"); } #endregion #region privates - void FireSaveNeeded() { + void NotifyPropertyChanged(string info) { if (DesignerDirty != null) { - DesignerDirty (this,new PropertyChangedEventArgs("Designer")); + DesignerDirty (this,new PropertyChangedEventArgs(info)); } } #endregion @@ -216,9 +221,9 @@ namespace SharpReport.Designer this.reportControl.Name = "reportControl"; this.reportControl.Size = new System.Drawing.Size(592, 400); this.reportControl.TabIndex = 1; - this.reportControl.SectionChanged += new EventHandler (this.ReportControlSectionChanged); - this.reportControl.SizeChanged += new System.EventHandler(this.ReportControlSizeChanged); - this.reportControl.DesignViewChanged += new SharpReport.Designer.ItemDragDropEventHandler(this.ReportControlDesignViewChanged); +// this.reportControl.SectionChanged += new EventHandler (this.ReportControlSectionChanged); +// this.reportControl.SizeChanged += new System.EventHandler(this.ReportControlSizeChanged); +// this.reportControl.DesignViewChanged += new SharpReport.Designer.ItemDragDropEventHandler(this.ReportControlDesignViewChanged); // // BaseDesignerControl // diff --git a/src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/ReportSection.cs b/src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/ReportSection.cs index ecb949513e..99f5276eaf 100644 --- a/src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/ReportSection.cs +++ b/src/AddIns/Misc/SharpReport/SharpReport/Designer/SectionControls/ReportSection.cs @@ -211,24 +211,24 @@ namespace SharpReport{ public void OnItemSelect(object sender, EventArgs e){ - if (!base.Suspend) { +// if (!base.Suspend) { if (ItemSelected != null) ItemSelected(sender, e); - } +// } } public void VisualControlClick(object sender, EventArgs e){ - if (!base.Suspend) { +// if (!base.Suspend) { this.OnSelect(); - } +// } } public void ReportItemSelected(object sender, EventArgs e){ - if (!base.Suspend) { +// if (!base.Suspend) { this.OnSelect (); this.OnItemSelect(sender, e); - } +// } } diff --git a/src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/AbstractGraphicControl.cs b/src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/AbstractGraphicControl.cs index 3d7ac13bea..8fc2e07bd8 100644 --- a/src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/AbstractGraphicControl.cs +++ b/src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/AbstractGraphicControl.cs @@ -22,16 +22,12 @@ namespace SharpReport.Designer int thickness = 1; DashStyle dashStyle = DashStyle.Solid; - public AbstractGraphicControl() - { - + public AbstractGraphicControl(){ InitializeComponent(); - base.DragEnter += new DragEventHandler (OnOver); } - void OnOver (object sender, DragEventArgs e) { - System.Console.WriteLine("AbstractGraphicControl:On Over"); - } + + #region property's /// diff --git a/src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportObjectControlBase.cs b/src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportObjectControlBase.cs index c82cc072b5..1b42023078 100644 --- a/src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportObjectControlBase.cs +++ b/src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportObjectControlBase.cs @@ -21,7 +21,7 @@ namespace SharpReport.Designer /// and can have some common members managed easier. /// - public abstract class ReportObjectControlBase : System.Windows.Forms.UserControl + public abstract class ReportObjectControlBase : UserControl { private StringAlignment stringAlignment = StringAlignment.Near; private StringFormat stringFormat; diff --git a/src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportRectangleControl.cs b/src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportRectangleControl.cs index c40752d967..83d423ec5a 100644 --- a/src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportRectangleControl.cs +++ b/src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportRectangleControl.cs @@ -37,7 +37,6 @@ namespace SharpReport.Designer { true); this.UpdateStyles(); } - #region overrides protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) { diff --git a/src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportTextControl.cs b/src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportTextControl.cs index 3ef7f7761f..7e34c3640d 100644 --- a/src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportTextControl.cs +++ b/src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportTextControl.cs @@ -21,7 +21,7 @@ namespace SharpReport.Designer{ private TextDrawer textDrawer = new TextDrawer(); - public ReportTextControl(){ + public ReportTextControl():base(){ InitializeComponent(); this.SetStyle(ControlStyles.DoubleBuffer | @@ -79,7 +79,7 @@ namespace SharpReport.Designer{ // this.BackColor = System.Drawing.Color.White; this.Name = "ReportTextItem"; - this.Size = new System.Drawing.Size(120, 60); + this.Size = new System.Drawing.Size(120, 20); } #endregion diff --git a/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportCircleItem.cs b/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportCircleItem.cs index 5c54a81962..214dcc0945 100644 --- a/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportCircleItem.cs +++ b/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportCircleItem.cs @@ -8,8 +8,8 @@ */ using System; -using System.ComponentModel; using System.Drawing; +using System.ComponentModel; using SharpReportCore; using SharpReport.Designer; @@ -30,11 +30,12 @@ namespace SharpReport.ReportItems{ private ReportCircleControl visualControl; - private bool initDone; - - - public ReportCircleItem() : base(){ + + public ReportCircleItem() : base(){ visualControl = new ReportCircleControl(); + + ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this); + this.visualControl.Click += new EventHandler(OnControlSelect); this.visualControl.VisualControlChanged += new EventHandler (OnControlChanged); this.visualControl.BackColorChanged += new EventHandler (OnControlChanged); @@ -42,20 +43,20 @@ namespace SharpReport.ReportItems{ this.visualControl.ForeColorChanged += new EventHandler (OnControlChanged); base.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler (BasePropertyChange); - ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this); - this.initDone = true; - } + } #region EventHandling private void BasePropertyChange (object sender, PropertyChangedEventArgs e){ - if (initDone == true) { - ItemsHelper.UpdateControlFromGraphicBase (this.visualControl,this); - } + ItemsHelper.UpdateControlFromGraphicBase (this.visualControl,this); + this.HandlePropertyChanged(e.PropertyName); + } private void OnControlChanged (object sender, EventArgs e) { + base.SuspendLayout(); ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this); + base.ResumeLayout(); this.HandlePropertyChanged("OnControlChanged"); } @@ -75,8 +76,8 @@ namespace SharpReport.ReportItems{ PropertyChanged (this,new PropertyChangedEventArgs(info)); } } - } + #endregion #region overrides @@ -120,7 +121,20 @@ namespace SharpReport.ReportItems{ this.HandlePropertyChanged("Location"); } } - + + public override Color BackColor { + get { + return base.BackColor; + } + set { + base.BackColor = value; + if (this.visualControl != null) { + this.visualControl.BackColor = value; + } + this.HandlePropertyChanged("Backcolor"); + } + } + #endregion #region SharpReport.Designer.IDesignable interface implementation diff --git a/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportImageItem.cs b/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportImageItem.cs index 6e45fcc239..44245af75c 100644 --- a/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportImageItem.cs +++ b/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportImageItem.cs @@ -26,52 +26,46 @@ namespace SharpReport.ReportItems { public class ReportImageItem : BaseImageItem,SharpReport.Designer.IDesignable { private ReportImageControl visualControl; - private bool initDone; - + public ReportImageItem() :base(){ + visualControl = new ReportImageControl(); + ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this); + + Setup(); + this.visualControl.Click += new EventHandler(OnControlSelect); this.visualControl.VisualControlChanged += new EventHandler (OnControlChanged); this.visualControl.BackColorChanged += new EventHandler (OnControlChanged); this.visualControl.FontChanged += new EventHandler (OnControlChanged); this.visualControl.ForeColorChanged += new EventHandler (OnControlChanged); base.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler (BasePropertyChange); - - ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this); - - this.initDone = true; - } - - #region overrides - public override void Dispose() { - base.Dispose(); - this.visualControl.Dispose(); } - public override string ToString(){ - return this.Name; + private void Setup() { + this.visualControl.Location = base.Location; + this.visualControl.Size = base.Size; + + if (base.Image != null) { + this.visualControl.Image = base.Image; + this.visualControl.ScaleImageToSize = base.ScaleImageToSize; + this.visualControl.Invalidate(); + } } - #endregion - #region EventHandling private void BasePropertyChange (object sender, PropertyChangedEventArgs e){ - if (initDone == true) { - - this.visualControl.Location = base.Location; - this.visualControl.Size = base.Size; - - if (base.Image != null) { - this.visualControl.Image = base.Image; - this.visualControl.ScaleImageToSize = base.ScaleImageToSize; - this.visualControl.Invalidate(); - } - } + Setup(); + ItemsHelper.UpdateControlFromGraphicBase(this.visualControl,this); + this.HandlePropertyChanged(e.PropertyName); } private void OnControlChanged (object sender, EventArgs e) { + Setup(); + base.SuspendLayout(); ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this); + base.ResumeLayout(); this.HandlePropertyChanged("OnControlChanged"); } @@ -110,5 +104,50 @@ namespace SharpReport.ReportItems { #endregion + #region overrides + + public override Size Size { + get { + return base.Size; + } + set { + base.Size = value; + if (this.visualControl != null) { + this.visualControl.Size = value; + } + this.HandlePropertyChanged("Size"); + } + } + + public override Point Location { + get { + return base.Location; + } + set { + base.Location = value; + if (this.visualControl != null) { + this.visualControl.Location = value; + } + this.HandlePropertyChanged("Location"); + } + } + +// public override Image Image { +// get { +// return base.Image; +// } +// } +// + + public override void Dispose() { + base.Dispose(); + this.visualControl.Dispose(); + } + + public override string ToString(){ + return this.Name; + } + + #endregion } } diff --git a/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportLineItem.cs b/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportLineItem.cs index 623562b019..303df960fe 100644 --- a/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportLineItem.cs +++ b/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportLineItem.cs @@ -8,8 +8,8 @@ // //------------------------------------------------------------------------------ using System; -using System.ComponentModel; using System.Drawing; +using System.ComponentModel; using SharpReportCore; using SharpReport.Designer; @@ -26,14 +26,15 @@ namespace SharpReport.ReportItems{ public class ReportLineItem : BaseLineItem,SharpReport.Designer.IDesignable { private ReportLineControl visualControl; - private bool initDone; - + /// /// Default constructor - initializes all fields to default values /// public ReportLineItem():base() { visualControl = new ReportLineControl(); + ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this); + this.visualControl.Click += new EventHandler(OnControlSelect); this.visualControl.VisualControlChanged += new EventHandler (OnControlChanged); this.visualControl.BackColorChanged += new EventHandler (OnControlChanged); @@ -41,20 +42,19 @@ namespace SharpReport.ReportItems{ this.visualControl.ForeColorChanged += new EventHandler (OnControlChanged); base.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler (BasePropertyChange); - ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this); - this.initDone = true; } #region EventHandling private void BasePropertyChange (object sender, PropertyChangedEventArgs e){ - if (initDone == true) { ItemsHelper.UpdateControlFromGraphicBase (this.visualControl,this); - } + this.HandlePropertyChanged(e.PropertyName); } private void OnControlChanged (object sender, EventArgs e) { + base.SuspendLayout(); ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this); + base.ResumeLayout(); this.HandlePropertyChanged("OnControlChanged"); } diff --git a/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportRectangleItem.cs b/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportRectangleItem.cs index d767b66d28..e312716dff 100644 --- a/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportRectangleItem.cs +++ b/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/GraphicBased/ReportRectangleItem.cs @@ -10,9 +10,8 @@ using System; -using System.ComponentModel; using System.Drawing; -using System.Windows.Forms; +using System.ComponentModel; using SharpReportCore; using SharpReport.Designer; @@ -32,41 +31,33 @@ namespace SharpReport.ReportItems{ public class ReportRectangleItem : BaseRectangleItem,SharpReport.Designer.IDesignable { private ReportRectangleControl visualControl; - private bool initDone; - - - + public ReportRectangleItem():base() { visualControl = new ReportRectangleControl(); + + ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this); + this.visualControl.Click += new EventHandler(OnControlSelect); this.visualControl.VisualControlChanged += new EventHandler (OnControlChanged); this.visualControl.BackColorChanged += new EventHandler (OnControlChanged); this.visualControl.FontChanged += new EventHandler (OnControlChanged); this.visualControl.ForeColorChanged += new EventHandler (OnControlChanged); - this.visualControl.DragOver += new DragEventHandler (OnDragOver); - this.VisualControl.DragEnter += new DragEventHandler (OnDragEnter); - + base.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler (BasePropertyChange); - ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this); - this.initDone = true; } - void OnDragEnter(object sender,DragEventArgs e) { -// System.Console.WriteLine("DragEnter"); - } - void OnDragOver(object sender,DragEventArgs e) { -// System.Console.WriteLine("DragOver"); - } #region EventHandling private void BasePropertyChange (object sender, PropertyChangedEventArgs e){ - if (initDone == true) { - ItemsHelper.UpdateControlFromGraphicBase (this.visualControl,this); - } + ItemsHelper.UpdateControlFromGraphicBase (this.visualControl,this); + this.HandlePropertyChanged(e.PropertyName); + } private void OnControlChanged (object sender, EventArgs e) { + base.SuspendLayout(); ItemsHelper.UpdateBaseFromGraphicControl (this.visualControl,this); + base.ResumeLayout(); this.HandlePropertyChanged("OnControlChanged"); } @@ -86,7 +77,6 @@ namespace SharpReport.ReportItems{ PropertyChanged (this,new PropertyChangedEventArgs(info)); } } - } #endregion @@ -133,6 +123,18 @@ namespace SharpReport.ReportItems{ } } + public override Color BackColor { + get { + return base.BackColor; + } + set { + base.BackColor = value; + if (this.visualControl != null) { + this.visualControl.BackColor = value; + } + this.HandlePropertyChanged("Backcolor"); + } + } #endregion diff --git a/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ItemsHelper.cs b/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ItemsHelper.cs index 2d4f3934c0..dd027b861c 100644 --- a/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ItemsHelper.cs +++ b/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ItemsHelper.cs @@ -24,52 +24,43 @@ namespace SharpReport { public static void UpdateBaseFromTextControl (ReportObjectControlBase control, - BaseReportItem item) { + BaseReportItem item) { - item.SuspendLayout(); item.Size = control.Size; item.Location = control.Location; item.Name = control.Name; item.BackColor = control.BackColor; item.ForeColor = control.ForeColor; item.Font = control.Font; - item.ResumeLayout(); } public static void UpdateBaseFromGraphicControl (AbstractGraphicControl control, - BaseGraphicItem item) { + BaseGraphicItem item) { ItemsHelper.UpdateBaseFromTextControl (control,item); - item.SuspendLayout(); item.Thickness = control.Thickness; item.DashStyle = control.DashStyle; - item.ResumeLayout(); } public static void UpdateControlFromTextBase (ReportObjectControlBase control, - BaseReportItem item) { + BaseReportItem item) { - 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.Font = item.Font; control.Name = item.Name; BaseTextItem b = item as BaseTextItem; if (b != null) { control.StringAlignment = b.StringAlignment; } - - item.ResumeLayout(); - control.ResumeLayout(); } public static void UpdateControlFromGraphicBase (AbstractGraphicControl control, - BaseGraphicItem item) { + BaseGraphicItem item) { ItemsHelper.UpdateControlFromTextBase(control,item); control.Location = item.Location; control.DashStyle = item.DashStyle; diff --git a/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportDataItem.cs b/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportDataItem.cs index bb0d3adc23..67493f1f99 100644 --- a/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportDataItem.cs +++ b/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportDataItem.cs @@ -23,7 +23,7 @@ namespace SharpReport.ReportItems{ private ReportDbTextControl visualControl; - bool initDone; +// bool initDone; #region Constructors @@ -40,6 +40,10 @@ namespace SharpReport.ReportItems{ visualControl = new ReportDbTextControl(); this.visualControl.Text = base.ColumnName; + visualControl.StringFormat = base.StandartStringFormat; + this.Text = base.ColumnName; + + ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this); this.visualControl.Click += new EventHandler(OnControlSelect); this.visualControl.VisualControlChanged += new EventHandler (OnControlChanged); @@ -48,16 +52,6 @@ namespace SharpReport.ReportItems{ this.visualControl.ForeColorChanged += new EventHandler (OnControlChanged); base.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler (BasePropertyChange); - ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this); - this.Text = base.ColumnName; - GrapFromBase(); - this.initDone = true; - } - - private void GrapFromBase() { - this.visualControl.SuspendLayout(); - visualControl.StringFormat = base.StandartStringFormat; - this.visualControl.ResumeLayout(); } #endregion @@ -71,14 +65,15 @@ namespace SharpReport.ReportItems{ #region events's private void BasePropertyChange (object sender, PropertyChangedEventArgs e){ - if (initDone == true) { - ItemsHelper.UpdateControlFromTextBase(this.visualControl,this); - } + ItemsHelper.UpdateControlFromTextBase(this.visualControl,this); + this.HandlePropertyChanged(e.PropertyName); } private void OnControlChanged (object sender, EventArgs e) { + base.SuspendLayout(); ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this); + base.ResumeLayout(); this.HandlePropertyChanged("OnControlChanged"); } diff --git a/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportRowItem.cs b/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportRowItem.cs index b33e2a3005..45ff2ff93e 100644 --- a/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportRowItem.cs +++ b/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportRowItem.cs @@ -1,6 +1,6 @@ /* * Created by SharpDevelop. - * User: Forstmeier Helmut + * User: Forstmeier Peter * Date: 01.03.2006 * Time: 14:35 * @@ -8,6 +8,7 @@ */ using System; +using System.Drawing; using System.ComponentModel; using SharpReport.Designer; @@ -21,7 +22,7 @@ namespace SharpReport.ReportItems /// public class ReportRowItem : RowItem ,IDesignable{ private ReportRowControl visualControl; - private bool initDone; + #region Constructor public ReportRowItem():this (GlobalValues.UnboundName){ @@ -37,21 +38,19 @@ namespace SharpReport.ReportItems private void Setup(){ visualControl = new ReportRowControl(); - + ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this); + 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 @@ -67,8 +66,9 @@ namespace SharpReport.ReportItems } private void ChildPropertyChange (object sender, PropertyChangedEventArgs e){ - if (initDone == true) { + if (! base.Suspend) { ItemsHelper.UpdateControlFromTextBase (this.visualControl,this); + this.HandlePropertyChanged(e.PropertyName); } } @@ -77,6 +77,10 @@ namespace SharpReport.ReportItems private void UpdateChilds () { foreach (BaseReportItem br in this.Items) { br.BackColor = this.BackColor; + IDesignable des = br as IDesignable; + if (des != null) { + des.VisualControl.BackColor = this.BackColor; + } } } @@ -103,22 +107,28 @@ namespace SharpReport.ReportItems private void BasePropertyChange (object sender, PropertyChangedEventArgs e){ - if (initDone == true) { - ItemsHelper.UpdateControlFromTextBase (this.visualControl,this); - } + ItemsHelper.UpdateControlFromTextBase (this.visualControl,this); + this.HandlePropertyChanged(e.PropertyName); } private void OnControlChanged (object sender, EventArgs e) { + this.SuspendLayout(); ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this); + this.ResumeLayout(); this.HandlePropertyChanged("OnControlChanged"); + } private void OnAppereanceChanged (object sender, EventArgs e) { + this.SuspendLayout(); ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this); + this.ResumeLayout(); UpdateChilds(); + this.HandlePropertyChanged("OnControlChanged"); } + private void OnControlSelect(object sender, EventArgs e){ if (Selected != null) Selected(this,e); @@ -153,7 +163,47 @@ namespace SharpReport.ReportItems public event EventHandler Selected; #endregion + + #region overrides + public override Size Size { + get { + return base.Size; + } + set { + base.Size = value; + if (this.visualControl != null) { + this.visualControl.Size = value; + } + this.HandlePropertyChanged("Size"); + } + } + + public override Point Location { + get { + return base.Location; + } + set { + base.Location = value; + if (this.visualControl != null) { + this.visualControl.Location = value; + } + this.HandlePropertyChanged("Location"); + } + } + + public override Font Font { + get { + return base.Font; + } + set { + base.Font = value; + if (this.visualControl != null) { + this.visualControl.Font = value; + } + this.HandlePropertyChanged("Font"); + } + } public override string ToString(){ return this.Name; diff --git a/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportTextItem.cs b/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportTextItem.cs index d8c6777819..13219d73ec 100644 --- a/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportTextItem.cs +++ b/src/AddIns/Misc/SharpReport/SharpReport/ReportItems/TextBased/ReportTextItem.cs @@ -8,9 +8,8 @@ */ using System; -using System.ComponentModel; using System.Drawing; -using System.Drawing.Printing; +using System.ComponentModel; using SharpReportCore; using SharpReport.Designer; @@ -26,14 +25,17 @@ namespace SharpReport.ReportItems { public class ReportTextItem : BaseTextItem,IDesignable { - private ReportTextControl visualControl; - bool initDone; #region Constructor public ReportTextItem() : base(){ visualControl = new ReportTextControl(); + this.Text = visualControl.Name; + visualControl.StringFormat = base.StandartStringFormat; + + ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this); + this.visualControl.Click += new EventHandler(OnControlSelect); this.visualControl.VisualControlChanged += new EventHandler (OnControlChanged); this.visualControl.BackColorChanged += new EventHandler (OnControlChanged); @@ -41,45 +43,32 @@ namespace SharpReport.ReportItems { this.visualControl.ForeColorChanged += new EventHandler (OnControlChanged); base.PropertyChanged += new PropertyChangedEventHandler (BasePropertyChange); -// ItemsHelper.UpdateTextControl (this.visualControl,this); - - this.Text = visualControl.Name; - visualControl.StringFormat = base.StandartStringFormat; - - ItemsHelper.UpdateControlFromTextBase (this.visualControl,this); - this.initDone = true; } #endregion - #region overrides - public override string ToString(){ - return this.Name; - } - - #endregion #region events private void BasePropertyChange (object sender, PropertyChangedEventArgs e){ - System.Console.WriteLine("Text:BasePropertyChanged"); - if (initDone == true) { - ItemsHelper.UpdateControlFromTextBase(this.visualControl,this); - } + ItemsHelper.UpdateControlFromTextBase(this.visualControl,this); + this.HandlePropertyChanged(e.PropertyName); } private void OnControlChanged (object sender, EventArgs e) { - System.Console.WriteLine("Text:OnControlChanged"); + base.SuspendLayout(); ItemsHelper.UpdateBaseFromTextControl (this.visualControl,this); + base.ResumeLayout(); this.HandlePropertyChanged("OnControlSelected"); } + private void OnControlSelect(object sender, EventArgs e){ - System.Console.WriteLine("Text:OnControlSelect"); - if (Selected != null) + if (Selected != null){ Selected(this,e); + } } /// @@ -88,15 +77,15 @@ namespace SharpReport.ReportItems { /// protected void HandlePropertyChanged(string info) { - System.Console.WriteLine("Text:HandlePropertyChanged"); if ( !base.Suspend) { if (PropertyChanged != null) { PropertyChanged (this,new PropertyChangedEventArgs(info)); } } } + #endregion - + public override Size Size { get { return base.Size; @@ -168,6 +157,13 @@ namespace SharpReport.ReportItems { #endregion + #region overrides + + public override string ToString(){ + return this.Name; + } + + #endregion /* #region IDisposable public override void Dispose(){ diff --git a/src/AddIns/Misc/SharpReport/SharpReport/Visitors/LoadReportVisitor.cs b/src/AddIns/Misc/SharpReport/SharpReport/Visitors/LoadReportVisitor.cs index d43c4500fc..a78dba8a06 100644 --- a/src/AddIns/Misc/SharpReport/SharpReport/Visitors/LoadReportVisitor.cs +++ b/src/AddIns/Misc/SharpReport/SharpReport/Visitors/LoadReportVisitor.cs @@ -89,21 +89,16 @@ namespace SharpReport.Visitors { if (sectionElem != null) { baseSection = (BaseSection)designer.ReportModel.SectionCollection.Find(sectionElem.GetAttribute("name")); if (baseSection != null) { - baseSection.SuspendLayout(); - XmlHelper.SetSectionValues (base.XmlFormReader,sectionElem,baseSection); XmlNodeList ctrlList = sectionElem.SelectNodes (base.NodesQuery); SetReportItems(baseSection,null,ctrlList); - baseSection.ResumeLayout(); } else { throw new MissingSectionException(); } } else { throw new MissingSectionException(); } - baseSection.ResumeLayout(); } - baseSection.ResumeLayout(); } @@ -120,26 +115,28 @@ namespace SharpReport.Visitors { 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; + XmlHelper.SetReportItemValues (base.XmlFormReader,ctrlElem,baseReportItem); - 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); + IContainerItem iContainer = baseReportItem as IContainerItem; + + if (iContainer != null) { + XmlNodeList newList = ctrlNode.SelectNodes (base.NodesQuery); + if (newList.Count > 0) { + System.Console.WriteLine("\tLoadReportVisitor recursive call for <{0}> with {1} elements", + baseReportItem.Name, + newList.Count); + SetReportItems (baseSection,iContainer,newList); + } } } catch (Exception ) { diff --git a/src/AddIns/Misc/SharpReport/SharpReportAddin/FieldsExplorer/FieldsExplorer.cs b/src/AddIns/Misc/SharpReport/SharpReportAddin/FieldsExplorer/FieldsExplorer.cs index 673138d4ac..f3cbe22978 100644 --- a/src/AddIns/Misc/SharpReport/SharpReportAddin/FieldsExplorer/FieldsExplorer.cs +++ b/src/AddIns/Misc/SharpReport/SharpReportAddin/FieldsExplorer/FieldsExplorer.cs @@ -221,7 +221,7 @@ namespace SharpReportAddin { } #region PadEvents - private void OnWindowChange (object sender,EventArgs e) { + private void old_OnWindowChange (object sender,EventArgs e) { try { if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent is SharpReportView) { if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow == null || WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent == null) { @@ -248,13 +248,13 @@ namespace SharpReportAddin { } } else { - System.Console.WriteLine(" NO view"); } + System.Console.WriteLine("FieldsExplorer: NO view"); } } catch (Exception) { } } - private void old_OnWindowChange (object sender,EventArgs e) { + private void 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; diff --git a/src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportDisplayBinding.cs b/src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportDisplayBinding.cs index 1246977a35..562457fcb8 100644 --- a/src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportDisplayBinding.cs +++ b/src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportDisplayBinding.cs @@ -44,7 +44,7 @@ namespace SharpReportAddin { view.FileName = view.DesignerControl.ReportModel.ReportSettings.FileName; view.UpdateView(true); view.Selected(); - view.ShowReportSettings(); + view.ShowReportSettings(); return view; } catch (SharpReportException) { if (view != null) { @@ -79,6 +79,7 @@ namespace SharpReportAddin { view.Load (fileName); view.UpdateView (false); view.Selected(); + view.DesignerControl.ReportModel.ReportSettings.InitDone = true; return view; } catch (Exception) { return new SharpReportView(); diff --git a/src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportView.cs b/src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportView.cs index 16f82dffc2..95fce93a09 100644 --- a/src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportView.cs +++ b/src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportView.cs @@ -35,7 +35,7 @@ namespace SharpReportAddin{ public class SharpReportView : AbstractViewContent,IPrintable,IDisposable { - private SharpReportManager reportManager = null; + private SharpReportManager reportManager; private BaseDesignerControl designerControl; private TabControl tabControl; @@ -45,13 +45,15 @@ namespace SharpReportAddin{ // SideBar private AxSideTab sideTabItem = null; private AxSideTab sideTabFunctions = null; - private Panel panel = new Panel(); + private Panel panel; + private bool designerInitialised; #region privates void InitView() { try { reportManager = new SharpReportManager(); + panel = new Panel(); panel.AutoScroll = true; CreateTabControl(); BuildToolBarItems(); @@ -77,7 +79,8 @@ namespace SharpReportAddin{ private void SetOnPropertyChangedEvents () { try { ReportModel model = designerControl.ReportModel; - model.ReportSettings.PropertyChanged += new EventHandler (OnSettingsChanged); + + model.ReportSettings.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler (OnPropertyChanged); model.ReportHeader.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler (OnPropertyChanged); model.PageHeader.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler (OnPropertyChanged); model.DetailSection.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler (OnPropertyChanged); @@ -134,6 +137,7 @@ namespace SharpReportAddin{ SharpDevelopSideBar sideBar = GetSideBar(); sideBar.Tabs.Remove (sideTabItem); } + if (this.sideTabFunctions != null) { SharpDevelopSideBar sideBar = GetSideBar(); sideBar.Tabs.Remove(this.sideTabFunctions); @@ -187,14 +191,16 @@ namespace SharpReportAddin{ previewPage.Text = ResourceService.GetString("SharpReport.Preview"); this.OnTabPageChanged (this,EventArgs.Empty); this.designerControl.Localise(); + } private BaseDesignerControl CreateDesignerControl() { BaseDesignerControl ctrl = reportManager.BaseDesignControl; - + ctrl.SuspendLayout(); ctrl.ReportControl.Width = ctrl.ReportModel.ReportSettings.PageSettings.Bounds.Width; ctrl.ReportControl.AutoScroll = true; ctrl.Dock = DockStyle.Fill; + ctrl.ResumeLayout(); ctrl.ReportControl.ObjectSelected +=new EventHandler (OnObjectSelected); @@ -309,6 +315,9 @@ namespace SharpReportAddin{ } } + void SetTabTitel (string name) { + base.TitleName = String.Format("{0} [{1}]",name,this.tabControl.SelectedTab.Text); + } private void OnTabPageChanged (object sender, EventArgs e) { @@ -321,7 +330,7 @@ namespace SharpReportAddin{ } else { name = Path.GetFileName (base.FileName); } - base.TitleName = String.Format("{0} [{1}]",name,this.tabControl.SelectedTab.Text); + SetTabTitel (name); switch (tabControl.SelectedIndex) { case 0 : break; @@ -344,23 +353,39 @@ namespace SharpReportAddin{ base.IsDirty = true; } - public void OnPropertyChanged (object sender, - System.ComponentModel.PropertyChangedEventArgs e) { - base.IsDirty = true; - } - - private void OnSettingsChanged (object sender,EventArgs e) { - base.IsDirty = true; + private void OnPropertyChanged (object sender, + System.ComponentModel.PropertyChangedEventArgs e) { + if (this.designerInitialised) { + base.IsDirty = true; + OnObjectSelected (this,EventArgs.Empty); + } + this.designerInitialised = true; } + private void OnModelFileNameChanged (object sender,EventArgs e) { base.FileName = designerControl.ReportModel.ReportSettings.FileName; - base.IsDirty = true; - this.OnFileNameChanged(e); + if (designerControl.ReportModel.ReportSettings.InitDone) { + base.IsDirty = true; + this.OnFileNameChanged(e); + this.SetTabTitel(Path.GetFileName (base.FileName)); + } } private void OnObjectSelected (object sender,EventArgs e) { + if (designerControl.ReportControl.SelectedObject != null) { + BaseReportObject oldobj = PropertyPad.Grid.SelectedObject as BaseReportObject; + +// if (oldobj != null) { +// System.Console.WriteLine(""); +// System.Console.WriteLine("leaving {0} <{1}> ",oldobj.Name,oldobj.Suspend); +// } + + BaseReportObject newobj = designerControl.ReportControl.SelectedObject; + newobj.ResumeLayout(); +// System.Console.WriteLine("View:OnObjectSelected {0} <{1}>",newobj.Name,newobj.Suspend); + if (PropertyPad.Grid != null) { PropertyPad.Grid.SelectedObject = designerControl.ReportControl.SelectedObject; } @@ -368,10 +393,16 @@ namespace SharpReportAddin{ } } - protected override void OnFileNameChanged(System.EventArgs e) { - base.OnFileNameChanged(e); + private void old_OnObjectSelected (object sender,EventArgs e) { + + if (designerControl.ReportControl.SelectedObject != null) { + if (PropertyPad.Grid != null) { + PropertyPad.Grid.SelectedObject = designerControl.ReportControl.SelectedObject; + } + + } } - + #endregion #region Calls from outside commands @@ -406,6 +437,7 @@ namespace SharpReportAddin{ /// Change Sorting or Grouping etc. to update the View and set the DirtyFlag /// /// If true, set the DirtyFlag and Fire the PropertyChanged Event + public void UpdateView(bool setViewDirty) { this.tabControl.SelectedIndex = 0; this.OnTabPageChanged(this,EventArgs.Empty); @@ -513,6 +545,8 @@ namespace SharpReportAddin{ PropertyPad.Grid.Refresh(); } this.designerControl.ReportModel.ReportSettings.AvailableFieldsCollection = reportManager.AvailableFieldsCollection; + this.designerControl.RegisterEvents(); + } catch (Exception e) { MessageService.ShowError(e,"SharpReportView:Load"); throw ; @@ -522,9 +556,8 @@ namespace SharpReportAddin{ #endregion - - #region ICSharpCode.SharpDevelop.Gui.IPrintable interface implementation + public System.Drawing.Printing.PrintDocument PrintDocument { get { AbstractRenderer renderer; @@ -541,8 +574,8 @@ namespace SharpReportAddin{ #endregion - #region IDisposable + #region IDisposable public override void Dispose(){ if (PropertyPad.Grid != null) { @@ -575,6 +608,7 @@ namespace SharpReportAddin{ // Call Dispose on your base class. base.Dispose(); } + #endregion } diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseDataItem.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseDataItem.cs index 24edc7a166..75f44f3372 100644 --- a/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseDataItem.cs +++ b/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseDataItem.cs @@ -32,15 +32,18 @@ namespace SharpReportCore { private string dbValue; private string dataType; private string nullValue; - /// - /// Default constructor - initializes all fields to default values - /// - public BaseDataItem() { + + #region Constructor + + public BaseDataItem():base() { } - public BaseDataItem(string columnName){ + public BaseDataItem(string columnName):base(){ this.columnName = columnName; } + + #endregion + #region privates //TODO Need a much better handling for 'null' values @@ -74,6 +77,8 @@ namespace SharpReportCore { return "BaseDataItem"; } + #region Properies + [XmlIgnoreAttribute] [Browsable(false)] public virtual string DbValue { @@ -152,5 +157,8 @@ namespace SharpReportCore { nullValue = value; } } + + #endregion + } } diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseReportItem.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseReportItem.cs index 0a99de8063..a7ab8cbeba 100644 --- a/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseReportItem.cs +++ b/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseReportItem.cs @@ -29,8 +29,8 @@ namespace SharpReportCore { private Font font; - public event EventHandler BeforePrinting; - public event EventHandler AfterPrinting; + public event EventHandler ItemPrinting; + public event EventHandler ItemPrinted; public event EventHandler FormatOutput; public event EventHandler Disposed; @@ -61,17 +61,17 @@ namespace SharpReportCore { #endregion #region EventHandling - public void NotiyfyAfterPrint (PointF afterPrintLocation) { - if (this.AfterPrinting != null) { + protected void NotiyfyAfterPrint (PointF afterPrintLocation) { + if (this.ItemPrinted != null) { AfterPrintEventArgs rea = new AfterPrintEventArgs (afterPrintLocation); - AfterPrinting(this, rea); + ItemPrinted(this, rea); } } - public void NotifyBeforePrint () { - if (this.BeforePrinting != null) { + protected void NotifyBeforePrint () { + if (this.ItemPrinting != null) { BeforePrintEventArgs ea = new BeforePrintEventArgs (); - BeforePrinting (this,ea); + ItemPrinting (this,ea); } } @@ -121,6 +121,7 @@ namespace SharpReportCore { } set { drawBorder = value; + base.NotifyPropertyChanged ("DrawBorder"); } } diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseReportObject.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseReportObject.cs index 856b902d80..48bafe1962 100644 --- a/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseReportObject.cs +++ b/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseReportObject.cs @@ -48,7 +48,7 @@ namespace SharpReportCore { #endregion public BaseReportObject() { - + this.suspend = true; } diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseTextItem.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseTextItem.cs index a00e0d6b93..14b8fa68f8 100644 --- a/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseTextItem.cs +++ b/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/BaseTextItem.cs @@ -20,6 +20,7 @@ using SharpReportCore; namespace SharpReportCore { + public class BaseTextItem : SharpReportCore.BaseReportItem,IItemRenderer { private string text; @@ -28,11 +29,14 @@ namespace SharpReportCore { private StringFormat standartStringFormat; private TextDrawer textDrawer = new TextDrawer(); - - public BaseTextItem() { + #region Constructor + + public BaseTextItem():base() { this.standartStringFormat = GlobalValues.StandartStringFormat(); } + #endregion + public override void Render(ReportPageEventArgs rpea) { if (rpea == null) { throw new ArgumentNullException("rpea"); diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/Graphics/BaseImageItem.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/Graphics/BaseImageItem.cs index 7f9e11bba4..c26753c0ca 100644 --- a/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/Graphics/BaseImageItem.cs +++ b/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/Graphics/BaseImageItem.cs @@ -88,9 +88,7 @@ namespace SharpReportCore { #region properties - -// [EditorAttribute(typeof(System.Windows.Forms.Design.f.Design.FileNameEditor), typeof(System.Drawing.Design.UITypeEditor))] - + public virtual string FileName { get { return fileName; @@ -106,7 +104,7 @@ namespace SharpReportCore { /// /// The Image loaded from a File /// - public Image Image { + public virtual Image Image { get { return image; } diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/RowItem.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/RowItem.cs index 3db9f50d33..1ab7034164 100644 --- a/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/RowItem.cs +++ b/src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/RowItem.cs @@ -59,7 +59,7 @@ namespace SharpReportCore{ public override void Render(ReportPageEventArgs rpea){ -// System.Console.WriteLine("Render RowItem"); + if (rpea == null) { throw new ArgumentNullException("rpea"); } @@ -71,11 +71,9 @@ namespace SharpReportCore{ 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.Location = new Point(this.Location.X + childItem.Location.X, + this.SectionOffset + childItem.Location.Y); childItem.Render (rpea); childItem.Location = new Point(loc.X,loc.Y); diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/BaseSettings.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/BaseSettings.cs index 9c2dfe7fb2..8aeb98dc2e 100644 --- a/src/AddIns/Misc/SharpReport/SharpReportCore/BaseSettings.cs +++ b/src/AddIns/Misc/SharpReport/SharpReportCore/BaseSettings.cs @@ -34,7 +34,7 @@ using System.Xml.Serialization; /// created on - 07.10.2005 22:50:43 /// namespace SharpReportCore { - public class BaseSettings : object { + public class BaseSettings : INotifyPropertyChanged{ private const string defaultReportName = "SharpReport1"; @@ -51,13 +51,16 @@ namespace SharpReportCore { private Margins defaultMargins = new Margins (50,50,50,50); private Size gridSize; private Padding padding; - public event EventHandler PropertyChanged; + public event EventHandler FileNameChanged; + #region SharpReportCore.IPropertyChange interface implementation + public event PropertyChangedEventHandler PropertyChanged; + #endregion + #region Constructor public BaseSettings():this(new PageSettings(),"","") { BaseValues(); - this.initDone = true; } public BaseSettings(PageSettings pageSettings , string reportName,string fileName){ @@ -77,12 +80,10 @@ namespace SharpReportCore { this.fileName = MakePoperFilename(fileName); } - this.pageSettings = pageSettings; - - BaseValues(); } + void BaseValues() { this.useStandartPrinter = true; this.graphicsUnit = GraphicsUnit.Millimeter; @@ -106,9 +107,12 @@ namespace SharpReportCore { } #endregion - protected void NotifyPropertyChanged() { - if (PropertyChanged != null) { - PropertyChanged (this,new EventArgs()); + protected void NotifyPropertyChanged(string info) { + if (this.initDone) { + if (PropertyChanged != null) { + System.Console.WriteLine("BaseSettings : PropertyChanged {0}",info); + PropertyChanged (this,new PropertyChangedEventArgs (info)); + } } } @@ -125,8 +129,9 @@ namespace SharpReportCore { } } - - protected bool InitDone { + [Browsable(false)] + [XmlIgnoreAttribute] + public bool InitDone { get { return initDone; } @@ -147,7 +152,7 @@ namespace SharpReportCore { set { if (reportName != value) { reportName = value; - this.NotifyPropertyChanged(); + this.NotifyPropertyChanged("ReportName"); } } } @@ -165,7 +170,7 @@ namespace SharpReportCore { set { if (fileName != value) { fileName = value; - this.NotifyPropertyChanged(); + this.NotifyPropertyChanged("FileName"); if (FileNameChanged != null ){ FileNameChanged (this,EventArgs.Empty); } @@ -182,7 +187,7 @@ namespace SharpReportCore { set { if (useStandartPrinter != value) { useStandartPrinter = value; - this.NotifyPropertyChanged(); + this.NotifyPropertyChanged("UseStandrtPrinter"); } } } @@ -196,7 +201,7 @@ namespace SharpReportCore { } set { this.pageSettings = value; - this.NotifyPropertyChanged(); + this.NotifyPropertyChanged("PageSettings"); } } @@ -210,7 +215,7 @@ namespace SharpReportCore { if (defaultMargins != value) { defaultMargins = value; PageSettings.Margins = defaultMargins; - this.NotifyPropertyChanged(); + this.NotifyPropertyChanged("DefaultMargins"); } } @@ -228,7 +233,7 @@ namespace SharpReportCore { set { if (graphicsUnit != value) { graphicsUnit = value; - this.NotifyPropertyChanged(); + this.NotifyPropertyChanged("GraphicsUnit"); } } } @@ -240,7 +245,7 @@ namespace SharpReportCore { set { if (this.gridSize != value) { this.gridSize = value; - this.NotifyPropertyChanged(); + this.NotifyPropertyChanged("GridSize"); } } } @@ -253,7 +258,7 @@ namespace SharpReportCore { set { if (this.padding != value) { this.padding = value; - this.NotifyPropertyChanged(); + this.NotifyPropertyChanged("Padding"); } } diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/Factories/BaseItemFactory.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/Factories/BaseItemFactory.cs index e8bb207d06..0dfe4661e5 100644 --- a/src/AddIns/Misc/SharpReport/SharpReportCore/Factories/BaseItemFactory.cs +++ b/src/AddIns/Misc/SharpReport/SharpReportCore/Factories/BaseItemFactory.cs @@ -33,8 +33,7 @@ namespace SharpReportCore { } public new BaseReportItem Create (string name){ if (String.IsNullOrEmpty(name)) { - String str = String.Format("<{0}>",name); - throw new UnkownItemException(str); + throw new ArgumentNullException("name"); } if (name.LastIndexOf('.') > 0) { StringBuilder b = new StringBuilder (name); diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/Printing/RenderDataReport.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/Printing/RenderDataReport.cs index 93a535080f..25f5a11d93 100644 --- a/src/AddIns/Misc/SharpReport/SharpReportCore/Printing/RenderDataReport.cs +++ b/src/AddIns/Misc/SharpReport/SharpReportCore/Printing/RenderDataReport.cs @@ -40,12 +40,12 @@ using SharpReportCore; /// namespace SharpReportCore { -// public class RenderDataReport : AbstractRenderer { - public class RenderDataReport : AbstractDataRenderer { + public class RenderDataReport : AbstractDataRenderer { private PointF currentPoint; private DataNavigator dataNavigator; + public RenderDataReport(ReportModel model,DataManager dataManager):base (model,dataManager){ base.DataManager.GroupChanged += new EventHandler(OnGroupChanged); base.DataManager.GroupChanging += new EventHandler (OnGroupChanging); @@ -63,9 +63,9 @@ namespace SharpReportCore { } private void OnListChanged (object sender,System.ComponentModel.ListChangedEventArgs e) { - System.Console.WriteLine("List Changed sender <{0}> reason <{1}>", - sender.ToString(), - e.ListChangedType); +// System.Console.WriteLine("List Changed sender <{0}> reason <{1}>", +// sender.ToString(), +// e.ListChangedType); } @@ -121,6 +121,7 @@ namespace SharpReportCore { private void DoPageEnd (ReportPageEventArgs rpea){ + System.Console.WriteLine("\tDoPageEnd"); base.PrintPageEnd(this,rpea); base.MeasurePageEnd (rpea); @@ -139,12 +140,12 @@ namespace SharpReportCore { } #endregion - protected override void ReportQueryPage(object sender, QueryPageSettingsEventArgs e) { - base.ReportQueryPage (sender,e); + protected override void ReportQueryPage(object sender, QueryPageSettingsEventArgs qpea) { + base.ReportQueryPage (sender,qpea); } - protected override void ReportBegin(object sender, ReportPageEventArgs e) { - base.ReportBegin (sender,e); + protected override void ReportBegin(object sender, ReportPageEventArgs rpea) { + base.ReportBegin (sender,rpea); base.DataManager.ListChanged += new EventHandler (OnListChanged); dataNavigator = base.DataManager.GetNavigator; @@ -175,70 +176,69 @@ namespace SharpReportCore { - protected override void PrintBodyStart(object sender, ReportPageEventArgs e) { + protected override void PrintBodyStart(object sender, ReportPageEventArgs rpea) { Rectangle sectionRect; Rectangle detailRect; -// System.Console.WriteLine("PrintBodyStart"); - base.PrintBodyStart (sender,e); + + base.PrintBodyStart (sender,rpea); BaseSection section = base.CurrentSection; section.SectionOffset = (int)this.currentPoint.Y + base.Gap; - detailRect = base.DetailRectangle (e); + detailRect = base.DetailRectangle (rpea); //this is only for the first record, zhe other details will be calculated - sectionRect = new Rectangle (e.PrintPageEventArgs.MarginBounds.Left, + sectionRect = new Rectangle (rpea.PrintPageEventArgs.MarginBounds.Left, section.SectionOffset, - e.PrintPageEventArgs.MarginBounds.Width, + rpea.PrintPageEventArgs.MarginBounds.Width, section.Size.Height); // DebugRectangle (e,detailRect); // no loop if there is no data if (! this.dataNavigator.HasMoreData ) { - e.PrintPageEventArgs.HasMorePages = false; + rpea.PrintPageEventArgs.HasMorePages = false; return; } while (this.dataNavigator.MoveNext()) { this.dataNavigator.Fill (base.CurrentSection.Items); - base.RenderSection (section,e); + base.RenderSection (section,rpea); section.SectionOffset = section.SectionOffset + section.Size.Height + 2 * base.Gap; - base.FitSectionToItems (base.CurrentSection,e); + base.FitSectionToItems (base.CurrentSection,rpea); - sectionRect = new Rectangle (e.PrintPageEventArgs.MarginBounds.Left, + sectionRect = new Rectangle (rpea.PrintPageEventArgs.MarginBounds.Left, section.SectionOffset, - e.PrintPageEventArgs.MarginBounds.Width, + rpea.PrintPageEventArgs.MarginBounds.Width, section.Size.Height); if (!detailRect.Contains(sectionRect)) { -// System.Console.WriteLine("--------- Page Break ----------"); - base.PageBreak(e,section); + base.PageBreak(rpea,section); return; } } DoReportFooter (new PointF(0,section.SectionOffset + section.Size.Height), - e); + rpea); - e.PrintPageEventArgs.HasMorePages = false; + rpea.PrintPageEventArgs.HasMorePages = false; //Did we have a pagebreak if (base.CurrentSection.PageBreakAfter) { - base.PageBreak(e,section); + base.PageBreak(rpea,section); base.CurrentSection.PageBreakAfter = false; return; } } - protected override void PrintBodyEnd(object sender, ReportPageEventArgs e) { + protected override void PrintBodyEnd(object sender, ReportPageEventArgs rpea) { // System.Console.WriteLine("PrintBodyEnd"); - base.PrintBodyEnd (sender,e); + base.PrintBodyEnd (sender,rpea); } diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/Printing/RenderFormSheetReport.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/Printing/RenderFormSheetReport.cs index d8c3fb7fdd..fc017fa790 100644 --- a/src/AddIns/Misc/SharpReport/SharpReportCore/Printing/RenderFormSheetReport.cs +++ b/src/AddIns/Misc/SharpReport/SharpReportCore/Printing/RenderFormSheetReport.cs @@ -57,14 +57,73 @@ namespace SharpReportCore { } + private void AddSectionEvents () { + base.CurrentSection.SectionPrinting += new EventHandler(OnSectionPrinting); + base.CurrentSection.SectionPrinted += new EventHandler(OnSectionPrinted); + } + + private void RemoveSectionEvents () { + base.CurrentSection.SectionPrinting -= new EventHandler(OnSectionPrinting); + base.CurrentSection.SectionPrinted -= new EventHandler(OnSectionPrinted); + } + + + + #region Draw the different report Sections + private PointF DoReportHeader (ReportPageEventArgs rpea){ + PointF endAt = base.MeasureReportHeader (rpea); + + this.AddSectionEvents(); + base.RenderSection (base.CurrentSection,rpea); + this.RemoveSectionEvents(); + + if (base.CurrentSection.PageBreakAfter) { + base.PageBreak(rpea,base.CurrentSection); + base.CurrentSection.PageBreakAfter = false; + return new PointF(); + } + return endAt; + } + + private PointF DoPageHeader (PointF startAt,ReportPageEventArgs rpea){ + + PointF endAt = base.MeasurePageHeader (startAt,rpea); + + this.AddSectionEvents(); + base.RenderSection (base.CurrentSection,rpea); + this.RemoveSectionEvents(); + return endAt; + } + + private void DoPageEnd (ReportPageEventArgs rpea){ + base.PrintPageEnd(this,rpea); + base.MeasurePageEnd (rpea); + + this.AddSectionEvents(); + base.RenderSection (base.CurrentSection,rpea); + this.RemoveSectionEvents(); + + } + + //TODO how should we handle ReportFooter, print it on an seperate page ???? + private void DoReportFooter (PointF startAt,ReportPageEventArgs rpea){ + base.MeasureReportFooter(rpea); + + this.AddSectionEvents(); + base.RenderSection (base.CurrentSection,rpea); + this.RemoveSectionEvents(); + } + + #endregion + #region event's - protected override void ReportQueryPage (object sender,QueryPageSettingsEventArgs e) { - base.ReportQueryPage (sender,e); + protected override void ReportQueryPage (object sender,QueryPageSettingsEventArgs qpea) { + base.ReportQueryPage (sender,qpea); } - protected override void ReportBegin (object sender,ReportPageEventArgs e) { - base.ReportBegin (sender,e); + protected override void ReportBegin (object sender,ReportPageEventArgs rpea) { + base.ReportBegin (sender,rpea); } /// @@ -74,11 +133,20 @@ namespace SharpReportCore { /// /// protected override void BeginPrintPage (object sender,ReportPageEventArgs rpea) { + + if (rpea == null) { + throw new ArgumentNullException("rpea"); + } + base.BeginPrintPage (sender,rpea); + //Draw ReportHeader + if (rpea.PageNumber == 1) { + //Draw ReportHeader + this.currentPoint = DoReportHeader (rpea); + } + - currentPoint = base.MeasureReportHeader(rpea); - base.RenderSection (base.CurrentSection,rpea); if (base.CurrentSection.PageBreakAfter) { base.PageBreak(rpea,base.CurrentSection); base.CurrentSection.PageBreakAfter = false; @@ -86,8 +154,9 @@ namespace SharpReportCore { } //Draw Pageheader - currentPoint = base.MeasurePageHeader(currentPoint,rpea); - base.RenderSection (base.CurrentSection,rpea); + + this.currentPoint = DoPageHeader (this.currentPoint,rpea); + base.DetailStart = new Point ((int)currentPoint.X,(int)currentPoint.Y); } @@ -97,59 +166,38 @@ namespace SharpReportCore { /// /// /// - protected override void PrintBodyStart (object sender,ReportPageEventArgs e) { - base.PrintBodyStart (sender,e); + protected override void PrintBodyStart (object sender,ReportPageEventArgs rpea) { + base.PrintBodyStart (sender,rpea); BaseSection section = base.CurrentSection; section.SectionOffset = (int)this.currentPoint.Y + base.Gap; - Rectangle detailRect = base.DetailRectangle (e); - FitSectionToItems (section,e); - base.RenderSection (section,e); -// DebugRectangle (e,detailRect); - } - - - protected override void PrintBodyEnd (object sender,ReportPageEventArgs e) { - base.PrintBodyEnd (sender,e); + Rectangle detailRect = base.DetailRectangle (rpea); + FitSectionToItems (section,rpea); + + this.AddSectionEvents(); + base.RenderSection (section,rpea); + this.RemoveSectionEvents(); } - - /// - /// PageFooter and, if LastPage ReportFooter + /// Print the PageFooter /// /// /// - protected override void PrintPageEnd (object sender,ReportPageEventArgs e) { + protected override void PrintPageEnd(object sender, ReportPageEventArgs rpea) { + this.DoPageEnd (rpea); + } - //PageFooter - base.SectionInUse = Convert.ToInt16(GlobalEnums.enmSection.ReportPageFooter, - CultureInfo.InvariantCulture); - base.PrintPageEnd (sender,e); - - - Rectangle r = new Rectangle (e.PrintPageEventArgs.MarginBounds.Left, - base.CurrentSection.SectionOffset , - e.PrintPageEventArgs.MarginBounds.Width, - base.CurrentSection.Size.Height); -// DebugRectangle (e,r); - - int off = base.CurrentSection.SectionOffset + base.CurrentSection.Size.Height + base.Gap; - //ReportFooter - base.SectionInUse = Convert.ToInt16(GlobalEnums.enmSection.ReportFooter, - CultureInfo.InvariantCulture); - BaseSection section = base.CurrentSection; - - section.SectionOffset = off; - FitSectionToItems (section,e); - Rectangle rr = new Rectangle (e.PrintPageEventArgs.MarginBounds.Left, - base.CurrentSection.SectionOffset , - e.PrintPageEventArgs.MarginBounds.Width, - base.CurrentSection.Size.Height); - - base.RenderSection (section,e); -// DebugRectangle (e,rr); + + + protected override void PrintBodyEnd (object sender,ReportPageEventArgs rpea) { + base.PrintBodyEnd (sender,rpea); + this.DoReportFooter (new PointF(0,base.CurrentSection.SectionOffset + base.CurrentSection.Size.Height), + rpea); } + + + #endregion } diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/ReportSettings.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/ReportSettings.cs index 2f41b59916..676762d638 100644 --- a/src/AddIns/Misc/SharpReport/SharpReportCore/ReportSettings.cs +++ b/src/AddIns/Misc/SharpReport/SharpReportCore/ReportSettings.cs @@ -40,7 +40,8 @@ namespace SharpReportCore{ /// public class ReportSettings : BaseSettings,SharpReportCore.IStoreable, - IBaseRenderer,IDisposable{ + IBaseRenderer,IDisposable{ + private string connectionString; private string commandText; @@ -60,7 +61,8 @@ namespace SharpReportCore{ private ColumnCollection groupingsCollection; private ColumnCollection sortingCollection; - + + #region Constructor's public ReportSettings(System.Drawing.Printing.PageSettings defaultPageSettings) @@ -228,7 +230,7 @@ namespace SharpReportCore{ } } } - base.InitDone = true; +// base.InitDone = true; } #endregion @@ -492,7 +494,7 @@ namespace SharpReportCore{ set { if (reportType != value) { reportType = value; - this.NotifyPropertyChanged(); + this.NotifyPropertyChanged("ReportType"); } } } @@ -560,7 +562,7 @@ namespace SharpReportCore{ } if (reportParametersCollection != value) { reportParametersCollection = value; - this.NotifyPropertyChanged(); + this.NotifyPropertyChanged("SqlParametersCollection"); } } } @@ -577,7 +579,7 @@ namespace SharpReportCore{ set { if (connectionString != value) { connectionString = value; - this.NotifyPropertyChanged(); + this.NotifyPropertyChanged("ConnectionString"); } } } @@ -592,7 +594,7 @@ namespace SharpReportCore{ set { if (commandText != value) { commandText = value; - this.NotifyPropertyChanged(); + this.NotifyPropertyChanged("CommandText"); } } } @@ -606,7 +608,7 @@ namespace SharpReportCore{ set { if (commandType != value) { commandType = value; - this.NotifyPropertyChanged(); + this.NotifyPropertyChanged("CommandType"); } } } @@ -620,7 +622,7 @@ namespace SharpReportCore{ set { if (dataModel != value) { dataModel = value; - this.NotifyPropertyChanged(); + this.NotifyPropertyChanged("DataModel"); } } } @@ -640,7 +642,7 @@ namespace SharpReportCore{ set { if (defaultFont != value) { defaultFont = value; - this.NotifyPropertyChanged(); + this.NotifyPropertyChanged("DefaultFont"); } } } diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/Visitors/LoadModelVisitor.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/Visitors/LoadModelVisitor.cs index 88cf916c78..7aea187159 100644 --- a/src/AddIns/Misc/SharpReport/SharpReportCore/Visitors/LoadModelVisitor.cs +++ b/src/AddIns/Misc/SharpReport/SharpReportCore/Visitors/LoadModelVisitor.cs @@ -81,12 +81,12 @@ namespace SharpReportCore { //Read the Element rpt = (BaseReportItem)baseItemFactory.Create(ctrlElem.GetAttribute("basetype")); if (rpt != null) { - rpt.SuspendLayout(); +// rpt.SuspendLayout(); rpt.Parent = baseSection; baseSection.Items.Add (rpt); - XmlHelper.BuildControl (xmlFormReader,ctrlElem,rpt); + XmlHelper.SetReportItemValues (xmlFormReader,ctrlElem,rpt); rpt.Visible = true; -// rpt.ResumeLayout(); + rpt.ResumeLayout(); } else { String str = String.Format("< {0}>",ctrlElem.GetAttribute("basetype")); throw new UnkownItemException(str); diff --git a/src/AddIns/Misc/SharpReport/SharpReportCore/Xml/XmlHelper.cs b/src/AddIns/Misc/SharpReport/SharpReportCore/Xml/XmlHelper.cs index bd882edb09..751fbfa4e0 100644 --- a/src/AddIns/Misc/SharpReport/SharpReportCore/Xml/XmlHelper.cs +++ b/src/AddIns/Misc/SharpReport/SharpReportCore/Xml/XmlHelper.cs @@ -117,7 +117,7 @@ namespace SharpReportCore { /// See XMLFormReader /// The Control for wich the values are /// Element witch contains the values - public static void BuildControl (XmlFormReader reader, + public static void SetReportItemValues (XmlFormReader reader, XmlElement ctrlElem, BaseReportItem item) { @@ -131,7 +131,8 @@ namespace SharpReportCore { item.Font = XmlFormReader.MakeFont (elem.GetAttribute("value")); } - reader.SetValue (item,elem.Name,elem.GetAttribute("value")); + reader.SetValue (item, + elem.Name,elem.GetAttribute("value")); } } }