Skip to content
This repository was archived by the owner on Oct 16, 2020. It is now read-only.

Commit 0a0c588

Browse files
Rectangle as Container for other Items
1 parent fee1c3c commit 0a0c588

5 files changed

Lines changed: 129 additions & 104 deletions

File tree

src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Designer/RootReportModel.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ protected override void OnPaint(System.Windows.Forms.PaintEventArgs pea)
4545
void PrintMargin( Graphics graphics)
4646
{
4747
string header = String.Format(System.Globalization.CultureInfo.CurrentCulture,
48-
"[Size : {0}] [Landscape : {1}] [Bounds : {2}]",
49-
Page.Size, Landscape, PageMargin);
48+
"[Size : {0}] [Landscape : {1}] [Bounds : {2}]",
49+
Page.Size, Landscape, PageMargin);
5050
using (var font = DesignerGlobals.DesignerFont){
5151
SizeF size = graphics.MeasureString(header,font);
5252
graphics.DrawString(header,font,

src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Services/DefaultServiceContainer.cs

Lines changed: 87 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -11,102 +11,106 @@
1111
using System.ComponentModel.Design;
1212
using ICSharpCode.Core;
1313

14-
internal class DefaultServiceContainer : IServiceContainer, IDisposable
15-
{
16-
IServiceContainer serviceContainer;
17-
Hashtable services = new Hashtable();
18-
bool inDispose;
14+
namespace ICSharpCode.Reporting.Addin.Services{
1915

20-
public DefaultServiceContainer () {
21-
serviceContainer = new ServiceContainer();
22-
LoggingService.Info("Init ServiceContaier");
23-
}
2416

25-
#region IServiceContainer implementation
26-
public void AddService(Type serviceType, object serviceInstance)
17+
class DefaultServiceContainer : IServiceContainer, IDisposable
2718
{
28-
if (IsServiceMissing(serviceType)) {
29-
serviceContainer.AddService(serviceType, serviceInstance);
30-
services.Add(serviceType, serviceInstance);
19+
IServiceContainer serviceContainer;
20+
Hashtable services = new Hashtable();
21+
bool inDispose;
22+
23+
public DefaultServiceContainer () {
24+
serviceContainer = new ServiceContainer();
25+
LoggingService.Info("Init ServiceContaier");
3126
}
32-
}
33-
public void AddService(Type serviceType, object serviceInstance, bool promote)
34-
{
35-
throw new NotImplementedException();
36-
}
37-
public void AddService(Type serviceType, ServiceCreatorCallback callback)
38-
{
39-
throw new NotImplementedException();
40-
}
4127

42-
public void AddService(Type serviceType, ServiceCreatorCallback callback, bool promote)
43-
{
44-
throw new NotImplementedException();
45-
}
28+
#region IServiceContainer implementation
29+
public void AddService(Type serviceType, object serviceInstance)
30+
{
31+
if (IsServiceMissing(serviceType)) {
32+
serviceContainer.AddService(serviceType, serviceInstance);
33+
services.Add(serviceType, serviceInstance);
34+
}
35+
}
36+
public void AddService(Type serviceType, object serviceInstance, bool promote)
37+
{
38+
throw new NotImplementedException();
39+
}
40+
public void AddService(Type serviceType, ServiceCreatorCallback callback)
41+
{
42+
throw new NotImplementedException();
43+
}
4644

45+
public void AddService(Type serviceType, ServiceCreatorCallback callback, bool promote)
46+
{
47+
throw new NotImplementedException();
48+
}
4749

48-
public void RemoveService(System.Type serviceType, bool promote)
49-
{
50-
if (inDispose)
51-
return;
52-
serviceContainer.RemoveService(serviceType, promote);
53-
if (services.Contains(serviceType))
54-
services.Remove(serviceType);
55-
}
50+
51+
public void RemoveService(System.Type serviceType, bool promote)
52+
{
53+
if (inDispose)
54+
return;
55+
serviceContainer.RemoveService(serviceType, promote);
56+
if (services.Contains(serviceType))
57+
services.Remove(serviceType);
58+
}
5659

57-
public void RemoveService(System.Type serviceType)
58-
{
59-
if (inDispose == true)
60-
return;
61-
serviceContainer.RemoveService(serviceType);
62-
if (services.Contains(serviceType))
63-
services.Remove(serviceType);
64-
}
65-
#endregion
60+
public void RemoveService(System.Type serviceType)
61+
{
62+
if (inDispose == true)
63+
return;
64+
serviceContainer.RemoveService(serviceType);
65+
if (services.Contains(serviceType))
66+
services.Remove(serviceType);
67+
}
68+
#endregion
6669

67-
#region IServiceProvider implementation
68-
public object GetService(Type serviceType)
69-
{
70-
// System.Console.WriteLine("calling <{0}>",serviceType.ToString());
71-
if (LoggingService.IsInfoEnabled && IsServiceMissing(serviceType)) {
72-
// LoggingService.InfoFormatted("request missing service : {0} from Assembly {1} is not aviable.", serviceType, serviceType.Assembly.FullName);
73-
// System.Console.WriteLine("Missing <{0}>",serviceType);
74-
// System.Console.WriteLine("\t found");
75-
} else {
76-
// System.Console.WriteLine("\tmissing");
77-
// LoggingService.DebugFormatted("get service : {0} from Assembly {1}.", serviceType, serviceType.Assembly.FullName);
78-
// System.Console.WriteLine("Missing <{0}>",serviceType);
70+
#region IServiceProvider implementation
71+
public object GetService(Type serviceType)
72+
{
73+
// System.Console.WriteLine("calling <{0}>",serviceType.ToString());
74+
if (LoggingService.IsInfoEnabled && IsServiceMissing(serviceType)) {
75+
// LoggingService.InfoFormatted("request missing service : {0} from Assembly {1} is not aviable.", serviceType, serviceType.Assembly.FullName);
76+
// System.Console.WriteLine("Missing <{0}>",serviceType);
77+
// System.Console.WriteLine("\t found");
78+
} else {
79+
// System.Console.WriteLine("\tmissing");
80+
// LoggingService.DebugFormatted("get service : {0} from Assembly {1}.", serviceType, serviceType.Assembly.FullName);
81+
// System.Console.WriteLine("Missing <{0}>",serviceType);
82+
}
83+
return serviceContainer.GetService(serviceType);
7984
}
80-
return serviceContainer.GetService(serviceType);
81-
}
82-
#endregion
85+
#endregion
8386

84-
bool IsServiceMissing(Type serviceType)
85-
{
86-
return serviceContainer.GetService(serviceType) == null;
87-
}
87+
bool IsServiceMissing(Type serviceType)
88+
{
89+
return serviceContainer.GetService(serviceType) == null;
90+
}
8891

89-
#region IDisposable implementation
90-
public void Dispose()
91-
{
92-
inDispose = true;
93-
foreach (DictionaryEntry o in services) {
94-
if (o.Value == this) {
95-
continue;
96-
}
97-
// || o.GetType().Assembly != Assembly.GetCallingAssembly()
98-
IDisposable disposeMe = o.Value as IDisposable;
99-
if (disposeMe != null) {
100-
try {
101-
disposeMe.Dispose();
102-
} catch (Exception e) {
103-
ICSharpCode.Core.MessageService.ShowException(e, "Exception while disposing " + disposeMe);
92+
#region IDisposable implementation
93+
public void Dispose()
94+
{
95+
inDispose = true;
96+
foreach (DictionaryEntry o in services) {
97+
if (o.Value == this) {
98+
continue;
99+
}
100+
// || o.GetType().Assembly != Assembly.GetCallingAssembly()
101+
IDisposable disposeMe = o.Value as IDisposable;
102+
if (disposeMe != null) {
103+
try {
104+
disposeMe.Dispose();
105+
} catch (Exception e) {
106+
ICSharpCode.Core.MessageService.ShowException(e, "Exception while disposing " + disposeMe);
107+
}
104108
}
105109
}
110+
services.Clear();
111+
services = null;
112+
inDispose = false;
106113
}
107-
services.Clear();
108-
services = null;
109-
inDispose = false;
110-
}
111-
#endregion
114+
#endregion
115+
}
112116
}

src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/Graphics/BaseRectangleItem.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
1717
// DEALINGS IN THE SOFTWARE.
1818

19+
using System.Collections.Generic;
20+
using ICSharpCode.Reporting.Interfaces;
1921
using ICSharpCode.Reporting.Interfaces.Export;
2022
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
2123

@@ -24,10 +26,11 @@ namespace ICSharpCode.Reporting.Items
2426
/// <summary>
2527
/// Description of BaseRectangleItem.
2628
/// </summary>
27-
public class BaseRectangleItem:BaseGraphics
29+
public class BaseRectangleItem:BaseGraphics,IReportContainer
2830
{
2931
public BaseRectangleItem()
3032
{
33+
Items = new List<IPrintableObject>();
3134
}
3235

3336

@@ -45,5 +48,9 @@ public override IExportColumn CreateExportColumn()
4548
ex.EndLineCap = EndLineCap;
4649
return ex;
4750
}
51+
52+
53+
public List<IPrintableObject> Items {get;private set;}
54+
4855
}
4956
}

src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportRectangle.cs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
// DEALINGS IN THE SOFTWARE.
1818

1919
using System;
20+
using System.Collections.Generic;
2021
using System.Drawing.Drawing2D;
22+
using ICSharpCode.Reporting.Arrange;
2123
using ICSharpCode.Reporting.Exporter.Visitors;
2224
using ICSharpCode.Reporting.Interfaces.Export;
2325

@@ -26,23 +28,24 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
2628
/// <summary>
2729
/// Description of ExportRectangle.
2830
/// </summary>
29-
public class ExportRectangle:ExportColumn,IExportGraphics,IAcceptor
31+
public class ExportRectangle:ExportContainer,IExportGraphics,IAcceptor
3032
{
31-
public ExportRectangle()
32-
{
33+
public ExportRectangle() {
34+
ExportedItems = new List<IExportColumn>();
3335
}
3436

35-
3637
public void Accept(IVisitor visitor)
3738
{
3839
visitor.Visit(this);
3940
}
41+
42+
public List<IExportColumn> ExportedItems {get;private set;}
43+
4044

41-
42-
public override ICSharpCode.Reporting.Arrange.IMeasurementStrategy MeasurementStrategy()
43-
{
44-
throw new NotImplementedException();
45-
}
45+
// public override IMeasurementStrategy MeasurementStrategy()
46+
// {
47+
// throw new NotImplementedException();
48+
// }
4649

4750
public int Thickness {get;set;}
4851

src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/WpfVisitor.cs

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
// DEALINGS IN THE SOFTWARE.
1818

1919
using System;
20+
using System.Collections.Generic;
2021
using System.Windows;
2122
using System.Windows.Controls;
2223
using System.Windows.Documents;
@@ -59,30 +60,40 @@ public override void Visit(ExportContainer exportContainer){
5960
}
6061

6162

62-
void PerformList(Canvas myCanvas, System.Collections.Generic.List<IExportColumn> exportedItems)
63+
void PerformList(Canvas myCanvas, List<IExportColumn> exportedItems)
6364
{
6465
foreach (var element in exportedItems) {
6566
var container = element as ExportContainer;
6667
if (container != null) {
6768
var containerCanvas = FixedDocumentCreator.CreateContainer(container);
6869
CanvasHelper.SetPosition(containerCanvas,new Point(container.Location.X,container.Location.Y));
69-
myCanvas.Children.Add(containerCanvas);
70-
PerformList(containerCanvas,container.ExportedItems);
70+
if (container is ExportRectangle) {
71+
DrawRectangleAsContainer(container);
72+
containerCanvas.Children.Add(UIElement);
73+
myCanvas.Children.Add(containerCanvas);
74+
} else {
75+
// var containerCanvas = FixedDocumentCreator.CreateContainer(container);
76+
// CanvasHelper.SetPosition(containerCanvas,new Point(container.Location.X,container.Location.Y));
77+
myCanvas.Children.Add(containerCanvas);
78+
PerformList(containerCanvas,container.ExportedItems);
79+
}
7180
} else {
7281
var acceptor = element as IAcceptor;
7382
acceptor.Accept(this);
7483
myCanvas.Children.Add(UIElement);
7584
}
7685
}
7786
}
78-
87+
88+
void DrawRectangleAsContainer(ExportContainer container)
89+
{
90+
var rect = container as ExportRectangle;
91+
if (rect != null) {
92+
Visit(rect);
93+
}
94+
}
7995

8096
public override void Visit(ExportText exportColumn){
81-
/*
82-
var textBlock = FixedDocumentCreator.CreateTextBlock((ExportText)exportColumn,ShouldSetBackcolor(exportColumn));
83-
CanvasHelper.SetPosition(textBlock,new Point(exportColumn.Location.X,exportColumn.Location.Y));
84-
UIElement = textBlock;
85-
*/
8697

8798
var ft = FixedDocumentCreator.CreateFormattedText((ExportText)exportColumn);
8899
var visual = new DrawingVisual();

0 commit comments

Comments
 (0)