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

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

@ -9,13 +9,14 @@ @@ -9,13 +9,14 @@
using System;
using System.ComponentModel;
using System.Drawing;
using ICSharpCode.Reporting.Addin.TypeProvider;
namespace ICSharpCode.Reporting.Addin.DesignableItems
{
/// <summary>
/// Description of BaseSection.
/// </summary>
// [TypeDescriptionProvider(typeof(SectionItemTypeProvider))]
[TypeDescriptionProvider(typeof(SectionItemTypeProvider))]
[Designer(typeof(ICSharpCode.Reporting.Addin.Designer.SectionDesigner))]
public class BaseSection:AbstractItem
{
@ -23,7 +24,7 @@ namespace ICSharpCode.Reporting.Addin.DesignableItems @@ -23,7 +24,7 @@ namespace ICSharpCode.Reporting.Addin.DesignableItems
public BaseSection():base()
{
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; @@ -28,6 +28,8 @@ using System.Windows.Forms;
using System.Windows.Forms.Design;
using ICSharpCode.Core;
using ICSharpCode.Reporting.Addin.DesignableItems;
using ICSharpCode.Reporting.Addin.Globals;
using ICSharpCode.Reporting.Addin.TypeProvider;
namespace ICSharpCode.Reporting.Addin.Designer
{
@ -49,13 +51,14 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -49,13 +51,14 @@ namespace ICSharpCode.Reporting.Addin.Designer
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));
if (uiService != null) {
uiService.ShowError(e);
@ -79,15 +82,15 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -79,15 +82,15 @@ namespace ICSharpCode.Reporting.Addin.Designer
{
rootReportModel = host.Container.Components[0] as RootReportModel;
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.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);
}
@ -143,7 +146,7 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -143,7 +146,7 @@ namespace ICSharpCode.Reporting.Addin.Designer
// strange (the property grid is empty).
//
this.selectionService = (ISelectionService)GetService(typeof(ISelectionService));
selectionService = (ISelectionService)GetService(typeof(ISelectionService));
if (this.selectionService != null)
{
this.selectionService.SetSelectedComponents(new object[] {component}, SelectionTypes.Replace);
@ -171,13 +174,14 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -171,13 +174,14 @@ namespace ICSharpCode.Reporting.Addin.Designer
protected override void PostFilterProperties(IDictionary properties)
{
/*
DesignerHelper.RemoveProperties(properties);
string [] s = new string[]{"Visible","BackColor","Text","MaximumSize","MinimumSize","Size",
"AutoScaleDimensions","DataBindings"};
DesignerHelper.Remove(properties,s);
TypeProviderHelper.RemoveProperties(properties);
var s = new string[]{"Visible","BackColor",
"Text","MaximumSize","MinimumSize",
"Size","AutoScaleDimensions",
"DataBindings"};
TypeProviderHelper.Remove(properties,s);
base.PostFilterProperties(properties);
*/
}
#endregion
@ -195,16 +199,17 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -195,16 +199,17 @@ namespace ICSharpCode.Reporting.Addin.Designer
void RecalculateSections()
{
int locY = 50;
if (this.reportSettings == null) {
if (reportSettings == null) {
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);
// locY = locY + s.Size.Height + GlobalsDesigner.GabBetweenSection;
section.Location = new Point(reportSettings.LeftMargin,locY);
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 @@ -21,7 +21,7 @@ namespace ICSharpCode.Reporting.Addin.DesignerBinding
/// <summary>
/// Description of DesignerGenerator.
/// </summary>
public class DesignerGenerator:IDesignerGenerator
class DesignerGenerator:IDesignerGenerator
{
DesignerView viewContent;

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

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

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

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

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

@ -0,0 +1,79 @@ @@ -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