Browse Source

Image run in Designer

pull/637/merge
Peter Forstmeier 10 years ago
parent
commit
b8ed1af02f
  1. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/ICSharpCode.Reporting.Addin.csproj
  2. 229
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/BaseImageItem.cs
  3. 99
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Designer/ImageDesigner.cs
  4. 33
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Designer/LineDesigner.cs
  5. 41
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Toolbox/ToolboxProvider.cs
  6. 84
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/TypeProvider/ImageItemTypeProvider.cs

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

@ -109,6 +109,7 @@ @@ -109,6 +109,7 @@
<Compile Include="src\DesignableItems\AbstractItem.cs" />
<Compile Include="src\DesignableItems\BaseCircleItem.cs" />
<Compile Include="src\DesignableItems\BaseGroupHeader.cs" />
<Compile Include="src\DesignableItems\BaseImageItem.cs" />
<Compile Include="src\DesignableItems\BaseLineItem.cs" />
<Compile Include="src\DesignableItems\BaseRectangleItem.cs" />
<Compile Include="src\DesignableItems\BaseRowItem.cs" />
@ -126,6 +127,7 @@ @@ -126,6 +127,7 @@
<Compile Include="src\Designer\AbstractDesigner.cs" />
<Compile Include="src\Designer\DataItemDesigner.cs" />
<Compile Include="src\Designer\GroupedRowDesigner.cs" />
<Compile Include="src\Designer\ImageDesigner.cs" />
<Compile Include="src\Designer\LineDesigner.cs" />
<Compile Include="src\Designer\ContainerDesigner.cs" />
<Compile Include="src\Designer\ReportRootDesigner.cs" />
@ -192,6 +194,7 @@ @@ -192,6 +194,7 @@
<Compile Include="src\TypeProvider\CircleItemTypeProvider.cs" />
<Compile Include="src\TypeProvider\DataItemTypeProvider.cs" />
<Compile Include="src\TypeProvider\GroupedRowTypeProvider.cs" />
<Compile Include="src\TypeProvider\ImageItemTypeProvider.cs" />
<Compile Include="src\TypeProvider\LineItemTypeProvider.cs" />
<Compile Include="src\TypeProvider\RectangleItemTypeProvider.cs" />
<Compile Include="src\TypeProvider\RowItemTypeProvider.cs" />

229
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/BaseImageItem.cs

@ -0,0 +1,229 @@ @@ -0,0 +1,229 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 21.06.2015
* Time: 10:35
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.ComponentModel;
using System.Drawing;
using System.Xml.Serialization;
using ICSharpCode.Reporting.Addin.Globals;
using ICSharpCode.Reports.Addin.TypeProviders;
namespace ICSharpCode.Reporting.Addin.DesignableItems
{
[Designer(typeof(ICSharpCode.Reporting.Addin.Designer.ImageDesigner))]
public class BaseImageItem:AbstractItem
{
// string imageFileName;
Image image;
// GlobalEnums.ImageSource imageSource;
// string reportFileName;
public BaseImageItem(){
TypeDescriptor.AddProvider(new ImageItemTypeProvider(), typeof(BaseImageItem));
Size = new Size(300,40);
BackColor = Color.LightGray;
}
[EditorBrowsableAttribute()]
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e){
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
base.OnPaint(e);
Draw(e.Graphics);
}
public override void Draw(Graphics graphics){
if (graphics == null) {
throw new ArgumentNullException("graphics");
}
var rect = new Rectangle(ClientRectangle.Left,ClientRectangle.Top,
ClientRectangle.Right -1,
ClientRectangle.Bottom -1);
DrawControl(graphics,rect);
if (ScaleImageToSize) {
graphics.DrawImageUnscaled(Image, Location.X, Location.Y);
} else {
graphics.DrawImage(Image, ClientRectangle);
}
}
#region Property's
// [Category("Image")]
// [EditorAttribute ( typeof(FileNameEditor), typeof(UITypeEditor) ) ]
// public string ImageFileName {
// get { return imageFileName; }
// set { imageFileName = value;
// if (!String.IsNullOrEmpty(reportFileName)) {
//// this.RelativeFileName = FileUtility.GetRelativePath(Path.GetFullPath(this.reportFileName),Path.GetFullPath(this.ImageFileName));
// }
// }
// }
static Bitmap ErrorBitmap(Size size){
var b = new Bitmap (size.Width,size.Height);
using (Graphics g = Graphics.FromImage (b)){
g.DrawRectangle (new Pen(Color.Black, 1),
1,1,size.Width -2,size.Height -2);
g.DrawString("Image",new Font("Microsoft Sans Serif", 8),
new SolidBrush(Color.Gray),
new RectangleF(1,1,size.Width,size.Height) );
}
return b;
}
static Bitmap FakeImage(Size size, string text){
var b = new Bitmap (size.Width,size.Height);
using (Graphics g = Graphics.FromImage (b)){
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
g.DrawRectangle (new Pen(Color.Black, 1),
1,1,size.Width -2,size.Height -2);
g.DrawString(text,new Font("Microsoft Sans Serif",
16,
FontStyle.Regular,
GraphicsUnit.Point),
new SolidBrush(Color.Gray),
new RectangleF(2,2,size.Width,size.Height) );
}
return b;
}
/*
Image LoadImage (){
try {
// Image im = null;
// var im = FakeImage(new Size(200,20),"DummyDesignImage");
// string absFileName = this.AbsoluteFileName;
// if (!String.IsNullOrEmpty(absFileName) && File.Exists(absFileName)){
// im = Image.FromFile (absFileName);
// } else {
// im = BaseImageItem.ErrorBitmap(base.Size);
// }
return (Image)im;
} catch (System.OutOfMemoryException) {
throw;
} catch (System.IO.FileNotFoundException) {
throw;
}
}
*/
[XmlIgnoreAttribute]
public Image Image {
get {
string text = "<Dummy Design Image>";
// if (this.imageSource == GlobalEnums.ImageSource.Database ) {
// text = "<Database>";
// }
// if (!String.IsNullOrEmpty(imageFileName)) {
// this.image = this.LoadImage();
// return this.image;
// } else
// {
// this.image = FakeImage(base.Size,text);
// }
this.image = FakeImage(Size, text);
return this.image;
}
set {
this.image = value;
// this.imageSource = GlobalEnums.ImageSource.External;
}
}
[Category("Layout")]
public bool ScaleImageToSize {get;set;}
// [Category("Image")]
// public GlobalEnums.ImageSource ImageSource {
// get { return imageSource; }
// set { imageSource = value; }
// }
// [Category("DataBinding")]
// public string ColumnName {get;set;}
//
//
// [Category("DataBinding")]
// public string BaseTableName {get;set;}
//
//
// [Category("DataBinding")]
// public string DataType {get;set;}
/*
[XmlIgnoreAttribute]
[Category("Image")]
public string ReportFileName {
get { return Path.GetFullPath(reportFileName); }
set { reportFileName = value;}
}
[Category("Image")]
[Browsable(false)]
public string RelativeFileName {get;set;}
[XmlIgnoreAttribute]
[Category("Image")]
[Browsable(false)]
public string AbsoluteFileName
{
get {
if (!string.IsNullOrEmpty(RelativeFileName)) {
Console.WriteLine("");
string testFileName = String.Empty;
if (! String.IsNullOrEmpty(reportFileName)) {
// testFileName = FileUtility.NormalizePath(Path.Combine(Path.GetDirectoryName(this.reportFileName),this.RelativeFileName));
}
if (File.Exists(testFileName)){
Console.WriteLine("Image found with Relative Filename");
return testFileName;
} else {
Console.WriteLine("AbsoluteFileName can't load image");
Console.WriteLine("Report Filename {0}",this.reportFileName);
Console.WriteLine("Relative Filename {0}",this.RelativeFileName);
Console.WriteLine("Image Filename {0}",this.ImageFileName);
}
}
return this.ImageFileName;
}
}
*/
// public new string Name {get;set;}
#endregion
}
}

99
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Designer/ImageDesigner.cs

@ -0,0 +1,99 @@ @@ -0,0 +1,99 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 21.06.2015
* Time: 10:37
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Windows.Forms.Design;
using ICSharpCode.Reporting.Addin.Globals;
using ICSharpCode.Reporting.Addin.TypeProvider;
namespace ICSharpCode.Reporting.Addin.Designer
{
/// <summary>
/// Description of ShapeDesigner.
/// </summary>
public class ImageDesigner:ControlDesigner
{
ISelectionService selectionService;
IComponentChangeService componentChangeService;
public ImageDesigner()
{
}
public override void Initialize(IComponent component){
if (component == null) {
throw new ArgumentNullException("component");
}
base.Initialize(component);
this.componentChangeService = (IComponentChangeService)component.Site.GetService(typeof(IComponentChangeService));
if (componentChangeService != null) {
componentChangeService.ComponentChanging += OnComponentChanging;
componentChangeService.ComponentChanged += OnComponentChanged;
componentChangeService.ComponentRename += new ComponentRenameEventHandler(OnComponentRename);
}
selectionService = GetService(typeof(ISelectionService)) as ISelectionService;
if (selectionService != null)
{
selectionService.SelectionChanged += OnSelectionChanged;
}
}
protected override void PostFilterProperties(System.Collections.IDictionary properties){
TypeProviderHelper.RemoveProperties(properties);
base.PostFilterProperties(properties);
}
void OnComponentChanging (object sender,ComponentChangingEventArgs e){
// System.Console.WriteLine("changing");
// System.Console.WriteLine("{0}",this.baseLine.ClientRectangle);
}
void OnComponentChanged(object sender,ComponentChangedEventArgs e){
// System.Console.WriteLine("changed");
// System.Console.WriteLine("{0}",this.baseLine.ClientRectangle);
}
void OnComponentRename(object sender,ComponentRenameEventArgs e) {
if (e.Component == Component) {
Control.Name = e.NewName;
Control.Invalidate();
}
}
void OnSelectionChanged(object sender, EventArgs e){
Control.Invalidate( );
}
protected override void Dispose(bool disposing){
if (this.componentChangeService != null) {
componentChangeService.ComponentChanging -= OnComponentChanging;
componentChangeService.ComponentChanged -= OnComponentChanged;
componentChangeService.ComponentRename -= OnComponentRename;
}
if (selectionService != null) {
selectionService.SelectionChanged -= OnSelectionChanged;
}
base.Dispose(disposing);
}
}
}

33
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Designer/LineDesigner.cs

@ -26,8 +26,7 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -26,8 +26,7 @@ namespace ICSharpCode.Reporting.Addin.Designer
bool overFromPoint;
public override void Initialize(IComponent component)
{
public override void Initialize(IComponent component){
if (component == null) {
throw new ArgumentNullException("component");
}
@ -36,15 +35,13 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -36,15 +35,13 @@ namespace ICSharpCode.Reporting.Addin.Designer
}
protected override void PostFilterProperties(System.Collections.IDictionary properties)
{
protected override void PostFilterProperties(System.Collections.IDictionary properties){
TypeProviderHelper.RemoveProperties(properties);
base.PostFilterProperties(properties);
}
protected override void OnPaintAdornments(PaintEventArgs pe)
{
protected override void OnPaintAdornments(PaintEventArgs pe){
var label = Control as BaseLineItem;
if (SelectionService != null)
@ -62,16 +59,14 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -62,16 +59,14 @@ namespace ICSharpCode.Reporting.Addin.Designer
}
static Rectangle GetHandle(Point pt)
{
static Rectangle GetHandle(Point pt){
var handle = new Rectangle(pt, new Size(7, 7));
handle.Offset(-3, -3);
return handle;
}
protected override void OnSetCursor( )
{
protected override void OnSetCursor(){
// Get mouse cursor position relative to
// the control's coordinate space.
@ -95,11 +90,10 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -95,11 +90,10 @@ namespace ICSharpCode.Reporting.Addin.Designer
#region Drag handling state and methods
protected override void OnMouseDragBegin(int x, int y)
{
Point p = this.baseLine.PointToClient(new Point(x, y));
overFromPoint = GetHandle(baseLine.FromPoint).Contains(p);
overToPoint = GetHandle(baseLine.ToPoint).Contains(p);
protected override void OnMouseDragBegin(int x, int y){
var point = this.baseLine.PointToClient(new Point(x, y));
overFromPoint = GetHandle(baseLine.FromPoint).Contains(point);
overToPoint = GetHandle(baseLine.ToPoint).Contains(point);
if (overFromPoint || overToPoint )
{
dragging = true;
@ -112,8 +106,7 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -112,8 +106,7 @@ namespace ICSharpCode.Reporting.Addin.Designer
}
protected override void OnMouseDragMove(int x, int y)
{
protected override void OnMouseDragMove(int x, int y){
if (dragging)
{
Point p = baseLine.PointToClient(new Point(x, y));
@ -133,8 +126,7 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -133,8 +126,7 @@ namespace ICSharpCode.Reporting.Addin.Designer
}
protected override void OnMouseDragEnd(bool cancel)
{
protected override void OnMouseDragEnd(bool cancel){
if (dragging)
{
// Update property via PropertyDescriptor to
@ -169,7 +161,6 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -169,7 +161,6 @@ namespace ICSharpCode.Reporting.Addin.Designer
}
#endregion
#endregion
}
}

41
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Toolbox/ToolboxProvider.cs

@ -27,8 +27,7 @@ namespace ICSharpCode.Reporting.Addin.Toolbox @@ -27,8 +27,7 @@ namespace ICSharpCode.Reporting.Addin.Toolbox
static int viewCount;
static bool initialised;
public static void AddViewContent(IViewContent viewContent)
{
public static void AddViewContent(IViewContent viewContent){
if (viewContent == null)
throw new ArgumentNullException("viewContent");
@ -43,8 +42,7 @@ namespace ICSharpCode.Reporting.Addin.Toolbox @@ -43,8 +42,7 @@ namespace ICSharpCode.Reporting.Addin.Toolbox
ViewCount++;
}
static void Initialise()
{
static void Initialise(){
initialised = true;
}
@ -65,7 +63,6 @@ namespace ICSharpCode.Reporting.Addin.Toolbox @@ -65,7 +63,6 @@ namespace ICSharpCode.Reporting.Addin.Toolbox
//DataItem
toolboxItem = new ToolboxItem(typeof(BaseDataItem)) {
DisplayName = ResourceService.GetString("SharpReport.Toolbar.DataField"),
// tb.Bitmap = WinFormsResourceService.GetBitmap("Icons.16x16.SharpQuery.Column");
Bitmap = IconService.GetBitmap("Icons.16x16.SharpQuery.Column")
};
sideTab.Items.Add(new SideTabItemDesigner(toolboxItem));
@ -98,7 +95,6 @@ namespace ICSharpCode.Reporting.Addin.Toolbox @@ -98,7 +95,6 @@ namespace ICSharpCode.Reporting.Addin.Toolbox
toolboxItem = new ToolboxItem(typeof(GroupHeader));
toolboxItem.Bitmap = IconService.GetBitmap("Icons.16x16.NameSpace");
toolboxItem.DisplayName = ResourceService.GetString("SharpReport.Toolbar.GroupHeader");
sideTab.Items.Add(new SideTabItemDesigner(toolboxItem));
@ -107,6 +103,13 @@ namespace ICSharpCode.Reporting.Addin.Toolbox @@ -107,6 +103,13 @@ namespace ICSharpCode.Reporting.Addin.Toolbox
toolboxItem.Bitmap = IconService.GetBitmap("Icons.16x16.SharpQuery.Table");
toolboxItem.DisplayName = ResourceService.GetString("SharpReport.Toolbar.DataRow");
sideTab.Items.Add(new SideTabItemDesigner(toolboxItem));
// Image
toolboxItem = new ToolboxItem(typeof(BaseImageItem));
toolboxItem.DisplayName = ResourceService.GetString("SharpReport.Toolbar.Image");
toolboxItem.Bitmap = IconService.GetBitmap("Icons.16x16.ResourceEditor.bmp");
sideTab.Items.Add(new SideTabItemDesigner(toolboxItem));
/*
//GroupFooter
@ -127,27 +130,17 @@ namespace ICSharpCode.Reporting.Addin.Toolbox @@ -127,27 +130,17 @@ namespace ICSharpCode.Reporting.Addin.Toolbox
tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseTableItem));
tb.DisplayName = ResourceService.GetString("SharpReport.Toolbar.Table");
sideTab.Items.Add(new SideTabItemDesigner(tb));
//Grahics
// Image
tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseImageItem));
tb.DisplayName = ResourceService.GetString("SharpReport.Toolbar.Image");
tb.Bitmap = WinFormsResourceService.GetIcon("Icons.16x16.ResourceEditor.bmp").ToBitmap();
sideTab.Items.Add(new SideTabItemDesigner(tb));
*/
*/
return sideTab;
}
static Bitmap RectangleBitmap()
{
Bitmap b = new Bitmap (16,16);
using (Graphics g = Graphics.FromImage (b)){
static Bitmap RectangleBitmap(){
var bitMap = new Bitmap (16,16);
using (Graphics g = Graphics.FromImage (bitMap)){
g.DrawRectangle (new Pen(Color.Black, 1),
1,1,14,14);
}
return b;
return bitMap;
}
@ -155,8 +148,7 @@ namespace ICSharpCode.Reporting.Addin.Toolbox @@ -155,8 +148,7 @@ namespace ICSharpCode.Reporting.Addin.Toolbox
/// ToolboxIcon for ReportCircle
/// </summary>
/// <returns>Bitmap</returns>
static Bitmap CircleBitmap()
{
static Bitmap CircleBitmap(){
var bmp = new Bitmap (19,19);
using (var g = Graphics.FromImage (bmp)){
g.DrawEllipse (new Pen(Color.Black, 1),
@ -167,8 +159,7 @@ namespace ICSharpCode.Reporting.Addin.Toolbox @@ -167,8 +159,7 @@ namespace ICSharpCode.Reporting.Addin.Toolbox
}
static SideTabItem CreateToolboxPointer(SideTab sideTab)
{
static SideTabItem CreateToolboxPointer(SideTab sideTab){
var pointer = new SharpDevelopSideTabItem("Pointer") {
CanBeRenamed = false,
CanBeDeleted = false,

84
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/TypeProvider/ImageItemTypeProvider.cs

@ -0,0 +1,84 @@ @@ -0,0 +1,84 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using ICSharpCode.Reporting.Addin.DesignableItems;
using ICSharpCode.Reporting.Addin.Globals;
using ICSharpCode.Reporting.Addin.TypeProvider;
namespace ICSharpCode.Reports.Addin.TypeProviders
{
class ImageItemTypeProvider : TypeDescriptionProvider
{
public ImageItemTypeProvider() : base(TypeDescriptor.GetProvider(typeof(AbstractItem)))
{
}
public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance)
{
ICustomTypeDescriptor td = base.GetTypeDescriptor(objectType,instance);
return new ImageItemTypeDescriptor(td, instance);
}
}
class ImageItemTypeDescriptor : CustomTypeDescriptor{
public ImageItemTypeDescriptor(ICustomTypeDescriptor parent, object instance)
: base(parent)
{
// instance = instance as BaseTextItem;
}
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 = prop = props.Find("imageFileName",true);
// allProperties.Add(prop);
PropertyDescriptor prop = prop = props.Find("Image",true);
prop = props.Find("Image",true);
allProperties.Add(prop);
prop = props.Find("ScaleImageToSize",true);
allProperties.Add(prop);
// prop = props.Find("ImageSource",true);
// allProperties.Add(prop);
// prop = props.Find("ReportFileName",true);
// allProperties.Add(prop);
// prop = props.Find("RelativeFileName",true);
// allProperties.Add(prop);
// prop = props.Find("AbsoluteFileName",true);
// allProperties.Add(prop);
// prop = props.Find("ColumnName",true);
// allProperties.Add(prop);
//
// prop = props.Find("BaseTableName",true);
// allProperties.Add(prop);
prop = props.Find("Name",true);
allProperties.Add(prop);
// prop = props.Find("DataType",true);
// allProperties.Add(prop);
return new PropertyDescriptorCollection(allProperties.ToArray());
}
}
}
Loading…
Cancel
Save