Browse Source

Display DesignSurface

reports
Peter Forstmeier 11 years ago
parent
commit
476030722b
  1. 4
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/ICSharpCode.Reporting.Addin.csproj
  2. 5
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/BaseSection.cs
  3. 41
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Designer/ReportRootDesigner.cs
  4. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignerBinding/DesignerGenerator.cs
  5. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignerBinding/InternalReportLoader.cs
  6. 78
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/TypeProvider/SectionItemTypeProvider.cs
  7. 132
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/TypeProvider/TypeProviderHelper.cs
  8. 17
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Views/DesignerView.cs
  9. 79
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Views/XmlView.cs

4
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/ICSharpCode.Reporting.Addin.csproj

@ -70,6 +70,7 @@
<Folder Include="src\Designer" /> <Folder Include="src\Designer" />
<Folder Include="src\Globals" /> <Folder Include="src\Globals" />
<Folder Include="src\DesignableItems" /> <Folder Include="src\DesignableItems" />
<Folder Include="src\TypeProvider" />
<Folder Include="src\XML" /> <Folder Include="src\XML" />
<Folder Include="src\Services" /> <Folder Include="src\Services" />
<Folder Include="src\Views" /> <Folder Include="src\Views" />
@ -102,7 +103,10 @@
<Compile Include="src\Services\HelpService.cs" /> <Compile Include="src\Services\HelpService.cs" />
<Compile Include="src\Services\ToolboxService.cs" /> <Compile Include="src\Services\ToolboxService.cs" />
<Compile Include="src\Services\UIService.cs" /> <Compile Include="src\Services\UIService.cs" />
<Compile Include="src\TypeProvider\SectionItemTypeProvider.cs" />
<Compile Include="src\TypeProvider\TypeProviderHelper.cs" />
<Compile Include="src\Views\DesignerView.cs" /> <Compile Include="src\Views\DesignerView.cs" />
<Compile Include="src\Views\XmlView.cs" />
<Compile Include="src\XML\MycroWriter.cs" /> <Compile Include="src\XML\MycroWriter.cs" />
<Compile Include="src\XML\ReportDefinitionParser.cs" /> <Compile Include="src\XML\ReportDefinitionParser.cs" />
<Compile Include="src\XML\ReportDesignerWriter.cs" /> <Compile Include="src\XML\ReportDesignerWriter.cs" />

5
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/BaseSection.cs

@ -9,13 +9,14 @@
using System; using System;
using System.ComponentModel; using System.ComponentModel;
using System.Drawing; using System.Drawing;
using ICSharpCode.Reporting.Addin.TypeProvider;
namespace ICSharpCode.Reporting.Addin.DesignableItems namespace ICSharpCode.Reporting.Addin.DesignableItems
{ {
/// <summary> /// <summary>
/// Description of BaseSection. /// Description of BaseSection.
/// </summary> /// </summary>
// [TypeDescriptionProvider(typeof(SectionItemTypeProvider))] [TypeDescriptionProvider(typeof(SectionItemTypeProvider))]
[Designer(typeof(ICSharpCode.Reporting.Addin.Designer.SectionDesigner))] [Designer(typeof(ICSharpCode.Reporting.Addin.Designer.SectionDesigner))]
public class BaseSection:AbstractItem public class BaseSection:AbstractItem
{ {
@ -23,7 +24,7 @@ namespace ICSharpCode.Reporting.Addin.DesignableItems
public BaseSection():base() public BaseSection():base()
{ {
base.FrameColor = Color.Black; base.FrameColor = Color.Black;
// TypeDescriptor.AddProvider(new SectionItemTypeProvider(), typeof(BaseSection)); TypeDescriptor.AddProvider(new SectionItemTypeProvider(), typeof(BaseSection));
} }

41
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Designer/ReportRootDesigner.cs

@ -28,6 +28,8 @@ using System.Windows.Forms;
using System.Windows.Forms.Design; using System.Windows.Forms.Design;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.Reporting.Addin.DesignableItems; using ICSharpCode.Reporting.Addin.DesignableItems;
using ICSharpCode.Reporting.Addin.Globals;
using ICSharpCode.Reporting.Addin.TypeProvider;
namespace ICSharpCode.Reporting.Addin.Designer namespace ICSharpCode.Reporting.Addin.Designer
{ {
@ -49,13 +51,14 @@ namespace ICSharpCode.Reporting.Addin.Designer
public ReportRootDesigner() public ReportRootDesigner()
{ {
System.Console.WriteLine("Create RootDesigner"); Console.WriteLine("Create RootDesigner");
// Control.BackColor = Color.Chocolate;
} }
private void ShowMessage(Exception e) void ShowMessage(Exception e)
{ {
base.DisplayError(e); DisplayError(e);
var uiService = (IUIService)host.GetService(typeof(IUIService)); var uiService = (IUIService)host.GetService(typeof(IUIService));
if (uiService != null) { if (uiService != null) {
uiService.ShowError(e); uiService.ShowError(e);
@ -79,15 +82,15 @@ namespace ICSharpCode.Reporting.Addin.Designer
{ {
rootReportModel = host.Container.Components[0] as RootReportModel; rootReportModel = host.Container.Components[0] as RootReportModel;
rootReportModel.PageMargin = CalculateMargins(); rootReportModel.PageMargin = CalculateMargins();
rootReportModel.Page = new Rectangle(new Point(0,0),this.reportSettings.PageSize); rootReportModel.Page = new Rectangle(new Point(0,0), reportSettings.PageSize);
rootReportModel.Landscape = this.reportSettings.Landscape; rootReportModel.Landscape = this.reportSettings.Landscape;
rootReportModel.Invalidate(); rootReportModel.Invalidate();
} }
private Margins CalculateMargins () Margins CalculateMargins ()
{ {
return new Margins(this.reportSettings.LeftMargin,reportSettings.RightMargin, return new Margins(reportSettings.LeftMargin,reportSettings.RightMargin,
reportSettings.TopMargin,reportSettings.BottomMargin); reportSettings.TopMargin,reportSettings.BottomMargin);
} }
@ -143,7 +146,7 @@ namespace ICSharpCode.Reporting.Addin.Designer
// strange (the property grid is empty). // strange (the property grid is empty).
// //
this.selectionService = (ISelectionService)GetService(typeof(ISelectionService)); selectionService = (ISelectionService)GetService(typeof(ISelectionService));
if (this.selectionService != null) if (this.selectionService != null)
{ {
this.selectionService.SetSelectedComponents(new object[] {component}, SelectionTypes.Replace); this.selectionService.SetSelectedComponents(new object[] {component}, SelectionTypes.Replace);
@ -171,13 +174,14 @@ namespace ICSharpCode.Reporting.Addin.Designer
protected override void PostFilterProperties(IDictionary properties) protected override void PostFilterProperties(IDictionary properties)
{ {
/*
DesignerHelper.RemoveProperties(properties); TypeProviderHelper.RemoveProperties(properties);
string [] s = new string[]{"Visible","BackColor","Text","MaximumSize","MinimumSize","Size", var s = new string[]{"Visible","BackColor",
"AutoScaleDimensions","DataBindings"}; "Text","MaximumSize","MinimumSize",
DesignerHelper.Remove(properties,s); "Size","AutoScaleDimensions",
"DataBindings"};
TypeProviderHelper.Remove(properties,s);
base.PostFilterProperties(properties); base.PostFilterProperties(properties);
*/
} }
#endregion #endregion
@ -195,16 +199,17 @@ namespace ICSharpCode.Reporting.Addin.Designer
void RecalculateSections() void RecalculateSections()
{ {
int locY = 50; int locY = 50;
if (this.reportSettings == null) { if (reportSettings == null) {
reportSettings = host.Container.Components[1] as ICSharpCode.Reporting.Items.ReportSettings; reportSettings = host.Container.Components[1] as ICSharpCode.Reporting.Items.ReportSettings;
} }
foreach (BaseSection s in sections) foreach (BaseSection section in sections)
{ {
// s.Location = new Point(this.reportSettings.LeftMargin,locY); section.Location = new Point(reportSettings.LeftMargin,locY);
// locY = locY + s.Size.Height + GlobalsDesigner.GabBetweenSection; locY = locY + section.Size.Height + DesignerGlobals.GabBetweenSection;
section.Invalidate();
} }
this.Control.Invalidate(); Control.Invalidate();
} }

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignerBinding/DesignerGenerator.cs

@ -21,7 +21,7 @@ namespace ICSharpCode.Reporting.Addin.DesignerBinding
/// <summary> /// <summary>
/// Description of DesignerGenerator. /// Description of DesignerGenerator.
/// </summary> /// </summary>
public class DesignerGenerator:IDesignerGenerator class DesignerGenerator:IDesignerGenerator
{ {
DesignerView viewContent; DesignerView viewContent;

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignerBinding/InternalReportLoader.cs

@ -72,7 +72,7 @@ namespace ICSharpCode.Reporting.Addin.DesignerBinding
} }
private void UpdateStatusbar () void UpdateStatusbar ()
{ {
string message; string message;
if (this.generator.ViewContent.PrimaryFile.IsDirty) { if (this.generator.ViewContent.PrimaryFile.IsDirty) {

78
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/TypeProvider/SectionItemTypeProvider.cs

@ -0,0 +1,78 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 17.03.2014
* Time: 20:18
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using ICSharpCode.Reporting.Addin.DesignableItems;
namespace ICSharpCode.Reporting.Addin.TypeProvider
{
/// <summary>
/// Description of SectionItemTypeProvider.
/// </summary>
internal class SectionItemTypeProvider : TypeDescriptionProvider
{
public SectionItemTypeProvider() : base(TypeDescriptor.GetProvider(typeof(AbstractItem)))
{
}
public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance)
{
ICustomTypeDescriptor td = base.GetTypeDescriptor(objectType,instance);
return new SectionItemDescriptor(td, instance);
}
}
internal class SectionItemDescriptor : CustomTypeDescriptor
{
public SectionItemDescriptor(ICustomTypeDescriptor parent, object instance)
: base(parent)
{
}
public override PropertyDescriptorCollection GetProperties()
{
return GetProperties(null);
}
public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
{
PropertyDescriptorCollection props = base.GetProperties(attributes);
List<PropertyDescriptor> allProperties = new List<PropertyDescriptor>();
TypeProviderHelper.AddDefaultProperties(allProperties,props);
PropertyDescriptor prop = null;
prop = props.Find("SectionOffset",true);
allProperties.Add(prop);
prop = props.Find("SectionMargin",true);
allProperties.Add(prop);
prop = props.Find("DrawBorder",true);
allProperties.Add(prop);
prop = props.Find("PageBreakAfter",true);
allProperties.Add(prop);
prop = props.Find("Controls",true);
allProperties.Add(prop);
prop = props.Find("FrameColor",true);
allProperties.Add(prop);
return new PropertyDescriptorCollection(allProperties.ToArray());
}
}
}

132
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/TypeProvider/TypeProviderHelper.cs

@ -0,0 +1,132 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 17.03.2014
* Time: 20:20
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
namespace ICSharpCode.Reporting.Addin.TypeProvider
{
/// <summary>
/// Description of TypeProviderHelper.
/// </summary>
static class TypeProviderHelper
{
public static void RemoveProperties (IDictionary properties)
{
if (properties == null){
throw new ArgumentNullException("properties");
}
properties.Remove("AccessibleDescription");
properties.Remove("AccessibleName");
properties.Remove("AccessibleRole");
properties.Remove("AllowDrop");
properties.Remove("Anchor");
properties.Remove("AutoScroll");
properties.Remove("AutoSize");
properties.Remove("BackgroundImage");
properties.Remove("BackgroundImageLayout");
properties.Remove("Cursor");
properties.Remove("CausesValidation");
properties.Remove("ContextMenuStrip");
properties.Remove("DataBindings");
properties.Remove("Dock");
properties.Remove("Enabled");
properties.Remove("ImeMode");
properties.Remove("Locked");
properties.Remove("Padding");
properties.Remove("RightToLeft");
properties.Remove("TabIndex");
properties.Remove("TabStop");
properties.Remove("Tag");
properties.Remove("UseWaitCursor");
properties.Remove("Visible");
}
public static void Remove (IDictionary properties,string[] toRemove)
{
if (properties == null){
throw new ArgumentNullException("properties");
}
if (toRemove == null) {
throw new ArgumentNullException("toRemove");
}
foreach (String str in toRemove)
{
properties.Remove(str);
}
}
public static void AddDefaultProperties (List<PropertyDescriptor> allProperties,
PropertyDescriptorCollection props )
{
PropertyDescriptor prop = props.Find("Location",true);
allProperties.Add(prop);
prop = props.Find("Size",true);
allProperties.Add(prop);
prop = props.Find("BackColor",true);
allProperties.Add(prop);
// prop = props.Find ("VisibleInReport",true);
// allProperties.Add(prop);
// need this for Contextmenu's
prop = props.Find("ContextMenu",true);
allProperties.Add(prop);
}
public static void AddTextBasedProperties (List<PropertyDescriptor> allProperties,
PropertyDescriptorCollection props)
{
PropertyDescriptor prop = props.Find("Font",true);
allProperties.Add(prop);
prop = props.Find("FormatString",true);
allProperties.Add(prop);
prop = props.Find("StringTrimming",true);
allProperties.Add(prop);
prop = props.Find("ContentAlignment",true);
allProperties.Add(prop);
prop = props.Find("CanGrow",true);
allProperties.Add(prop);
prop = props.Find("CanShrink",true);
allProperties.Add(prop);
prop = props.Find("DataType",true);
allProperties.Add(prop);
prop = props.Find("RTL",true);
allProperties.Add(prop);
}
public static void AddGraphicProperties (List<PropertyDescriptor> allProperties,
PropertyDescriptorCollection props)
{
PropertyDescriptor prop = null;
prop = props.Find("ForeColor",true);
allProperties.Add(prop);
prop = props.Find("DashStyle",true);
allProperties.Add(prop);
prop = props.Find("Thickness",true);
allProperties.Add(prop);
}
}
}

17
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Views/DesignerView.cs

@ -17,11 +17,11 @@ using System.IO;
using System.Windows.Forms; using System.Windows.Forms;
using System.Windows.Forms.Design; using System.Windows.Forms.Design;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Workbench; using ICSharpCode.SharpDevelop.Workbench;
using ICSharpCode.Reporting.Addin.DesignableItems; using ICSharpCode.Reporting.Addin.DesignableItems;
using ICSharpCode.Reporting.Addin.DesignerBinding; using ICSharpCode.Reporting.Addin.DesignerBinding;
using ICSharpCode.Reporting.Addin.Services; using ICSharpCode.Reporting.Addin.Services;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.Reporting.Addin.Views namespace ICSharpCode.Reporting.Addin.Views
{ {
@ -75,8 +75,8 @@ namespace ICSharpCode.Reporting.Addin.Views
defaultServiceContainer.AddService(typeof(ITypeResolutionService), new TypeResolutionService()); defaultServiceContainer.AddService(typeof(ITypeResolutionService), new TypeResolutionService());
defaultServiceContainer.AddService(typeof(ITypeDiscoveryService),new TypeDiscoveryService()); defaultServiceContainer.AddService(typeof(ITypeDiscoveryService),new TypeDiscoveryService());
defaultServiceContainer.AddService(typeof(System.ComponentModel.Design.IMenuCommandService), defaultServiceContainer.AddService(typeof(IMenuCommandService),
new ICSharpCode.Reporting.Addin.Services.MenuCommandService(panel,this.designSurface )); new ICSharpCode.Reporting.Addin.Services.MenuCommandService(panel, designSurface));
defaultServiceContainer.AddService(typeof(MemberRelationshipService),new DefaultMemberRelationshipService()); defaultServiceContainer.AddService(typeof(MemberRelationshipService),new DefaultMemberRelationshipService());
defaultServiceContainer.AddService(typeof(OpenedFile),base.PrimaryFile); defaultServiceContainer.AddService(typeof(OpenedFile),base.PrimaryFile);
@ -333,8 +333,9 @@ namespace ICSharpCode.Reporting.Addin.Views
void SetupDesignSurface() void SetupDesignSurface()
{ {
Control c = null; // Control c = null;
c = designSurface.View as Control; var c = designSurface.View as Control;
c.BackColor = System.Drawing.Color.Green;
c.Parent = panel; c.Parent = panel;
c.Dock = DockStyle.Fill; c.Dock = DockStyle.Fill;
} }
@ -349,6 +350,11 @@ namespace ICSharpCode.Reporting.Addin.Views
hasUnmergedChanges = false; hasUnmergedChanges = false;
} }
void SetupSecondaryView()
{
var xmlView = new XmlView(generator,this);
SecondaryViewContents.Add(xmlView);
}
public string ReportFileContent { public string ReportFileContent {
get { get {
@ -385,6 +391,7 @@ namespace ICSharpCode.Reporting.Addin.Views
LoggingService.Debug("ReportDesigner: Load from: " + file.FileName); LoggingService.Debug("ReportDesigner: Load from: " + file.FileName);
base.Load(file, stream); base.Load(file, stream);
LoadDesigner(stream); LoadDesigner(stream);
SetupSecondaryView();
} }
#endregion #endregion
} }

79
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Views/XmlView.cs

@ -0,0 +1,79 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 17.03.2014
* Time: 20:08
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Windows.Forms;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Workbench;
using ICSharpCode.Reporting.Addin.DesignerBinding;
namespace ICSharpCode.Reporting.Addin.Views
{
/// <summary>
/// Description of XmlView.
/// </summary>
class XmlView : AbstractSecondaryViewContent
{
/// <summary>
/// The <see cref="System.Windows.Forms.Control"/> representing the view
/// </summary>
RichTextBox richTextBox = new RichTextBox();
IDesignerGenerator generator;
public XmlView(IDesignerGenerator generator,IViewContent content):base(content){
if (generator == null) {
throw new ArgumentNullException("generator");
}
if (content == null) {
throw new ArgumentNullException("content");
}
this.generator = generator;
this.TabPageText = "XmlView";
richTextBox.Dock = DockStyle.Fill;
richTextBox.BackColor = System.Drawing.SystemColors.Desktop;
richTextBox.ForeColor = System.Drawing.Color.White;
}
#region overrides
protected override void LoadFromPrimary()
{
richTextBox.Text = generator.ViewContent.ReportFileContent;
}
protected override void SaveToPrimary()
{
// throw new NotImplementedException();
}
public override object Control {
get {
return richTextBox;
}
}
/// <summary>
/// Cleans up all used resources
/// </summary>
public sealed override void Dispose()
{
try {
if (this.richTextBox != null) {
this.richTextBox.Dispose();
}
} finally {
base.Dispose();
}
}
#endregion
}
}
Loading…
Cancel
Save