Browse Source

cleanup, extend ISimpleContainer with Backcolor to get off cast's

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/reports@6419 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Peter Forstmeier 15 years ago
parent
commit
11f809982d
  1. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/ICSharpCode.Reports.Addin.csproj
  2. 32
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Designer/GroupedRowDesigner.cs
  3. 4
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseDataItem.cs
  4. 3
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupItem.cs
  5. 5
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseRowItem.cs
  6. 98
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/GroupedRow.cs
  7. 6
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Toolbox/ToolboxProvider.cs
  8. 12
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/Layouter.cs
  9. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs
  10. 12
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardPrinter.cs
  11. 10
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/TableStrategy.cs
  12. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/ConverterFactory.cs
  13. 75
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs
  14. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IContainerItem.cs

2
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/ICSharpCode.Reports.Addin.csproj

@ -90,6 +90,7 @@ @@ -90,6 +90,7 @@
<Compile Include="Project\DesignerBinding\InternalReportLoader.cs" />
<Compile Include="Project\Designer\DataItemDesigner.cs" />
<Compile Include="Project\Designer\DesignerHelper.cs" />
<Compile Include="Project\Designer\GroupedRowDesigner.cs" />
<Compile Include="Project\Designer\GroupeHeaderDesigner.cs" />
<Compile Include="Project\Designer\ImageDesigner.cs" />
<Compile Include="Project\Designer\LineDesigner.cs" />
@ -165,6 +166,7 @@ @@ -165,6 +166,7 @@
<Compile Include="Project\ReportItems\ErrorItem.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Project\ReportItems\GroupedRow.cs" />
<Compile Include="Project\ReportItems\RectangleItemTypeProvider.cs" />
<Compile Include="Project\ReportManagers\BaseManager.cs" />
<Compile Include="Project\ReportManagers\StandartPreviewManager.cs" />

32
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Designer/GroupedRowDesigner.cs

@ -0,0 +1,32 @@ @@ -0,0 +1,32 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 15.08.2010
* Time: 19:40
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
namespace ICSharpCode.Reports.Addin.Designer
{
/// <summary>
/// Description of GroupedRowDesigner.
/// </summary>
public class GroupedRowDesigner:RowItemDesigner
{
private ISelectionService selectionService;
public GroupedRowDesigner()
{
}
public override void Initialize(IComponent component)
{
base.Initialize(component);
}
}
}

4
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseDataItem.cs

@ -87,10 +87,6 @@ namespace ICSharpCode.Reports.Addin @@ -87,10 +87,6 @@ namespace ICSharpCode.Reports.Addin
{
}
// public DataItemTypeProvider(TypeDescriptionProvider parent): base(parent)
// {
// }
public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance)
{

3
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupItem.cs

@ -33,7 +33,7 @@ namespace ICSharpCode.Reports.Addin @@ -33,7 +33,7 @@ namespace ICSharpCode.Reports.Addin
[System.ComponentModel.EditorBrowsableAttribute()]
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
if (String.IsNullOrEmpty(Text)) {
if (Text.CompareTo(ColumnName) != 0 ) {
Text = ColumnName;
}
base.OnPaint(e);
@ -41,7 +41,6 @@ namespace ICSharpCode.Reports.Addin @@ -41,7 +41,6 @@ namespace ICSharpCode.Reports.Addin
}
public override void Draw(Graphics graphics)
{
base.Draw (graphics);

5
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseRowItem.cs

@ -87,11 +87,6 @@ namespace ICSharpCode.Reports.Addin @@ -87,11 +87,6 @@ namespace ICSharpCode.Reports.Addin
{
}
// public RowItemTypeProvider(TypeDescriptionProvider parent): base(parent)
// {
//
// }
public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance)
{

98
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/GroupedRow.cs

@ -0,0 +1,98 @@ @@ -0,0 +1,98 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 15.08.2010
* Time: 19:38
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using ICSharpCode.Reports.Addin.Designer;
using ICSharpCode.Reports.Core;
namespace ICSharpCode.Reports.Addin
{
/// <summary>
/// Description of GroupedRow.
/// </summary>
[Designer(typeof(ICSharpCode.Reports.Addin.Designer.GroupedRowDesigner))]
public class BaseGroupedRowItem:BaseRowItem
{
public BaseGroupedRowItem()
{
// http://www.cetix.de/DotNetNews/Thread188109-Schlankes_Grid.aspx
// http://msdn.microsoft.com/en-us/library/t9abe4ab(vs.71).aspx
TypeDescriptor.AddProvider(new GroupedRowTypeProvider(), typeof(BaseGroupedRowItem));
}
}
internal class GroupedRowTypeProvider : TypeDescriptionProvider
{
public GroupedRowTypeProvider() : base(TypeDescriptor.GetProvider(typeof(AbstractItem)))
{
}
public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance)
{
ICustomTypeDescriptor td = base.GetTypeDescriptor(objectType,instance);
return new GroupedRowItemTypeDescriptor(td, instance);
}
}
internal class GroupedRowItemTypeDescriptor : CustomTypeDescriptor
{
public GroupedRowItemTypeDescriptor(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>();
DesignerHelper.AddDefaultProperties(allProperties,props);
PropertyDescriptor prop = null;
prop = props.Find("DrawBorder",true);
allProperties.Add(prop);
prop = props.Find("ForeColor",true);
allProperties.Add(prop);
prop = props.Find("Visible",true);
allProperties.Add(prop);
prop = props.Find("FrameColor",true);
allProperties.Add(prop);
prop = props.Find("Controls",true);
allProperties.Add(prop);
/*
prop = props.Find("Padding",true);
allProperties.Add(prop);
*/
prop = props.Find("AlternateBackColor",true);
allProperties.Add(prop);
prop = props.Find("ChangeBackColorEveryNRow",true);
allProperties.Add(prop);
return new PropertyDescriptorCollection(allProperties.ToArray());
}
}
}

6
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Toolbox/ToolboxProvider.cs

@ -81,6 +81,12 @@ namespace ICSharpCode.Reports.Addin @@ -81,6 +81,12 @@ namespace ICSharpCode.Reports.Addin
tb.DisplayName = "GroupHeader";
sideTab.Items.Add(new SideTabItemDesigner(tb));
//Group
tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseGroupedRowItem));
tb.Bitmap = WinFormsResourceService.GetBitmap("Icons.16x16.SharpQuery.Table");
// tb.DisplayName = ResourceService.GetString("SharpReport.Toolbar.DataRow");
tb.DisplayName = "GroupRow";
sideTab.Items.Add(new SideTabItemDesigner(tb));
//BaseTable
tb.Bitmap = WinFormsResourceService.GetBitmap("Icons.16x16.SharpQuery.Table");

12
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/Layouter.cs

@ -38,21 +38,21 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing @@ -38,21 +38,21 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
return Rectangle.Empty;
}
BaseReportItem containerItem = container as BaseReportItem;
// BaseReportItem containerItem = container as BaseReportItem;
Rectangle desiredContainerRectangle = new Rectangle (containerItem.Location,containerItem.Size);
Rectangle desiredContainerRectangle = new Rectangle (container.Location,container.Size);
System.Collections.Generic.IEnumerable<BaseReportItem> canGrowShrinkCollection = from bt in container.Items where bt.CanGrow == true select bt;
if (canGrowShrinkCollection.Count() > 0 ) {
int bottomPadding = containerItem.Size.Height - (container.Items[0].Location.Y + container.Items[0].Size.Height);
int bottomPadding = container.Size.Height - (container.Items[0].Location.Y + container.Items[0].Size.Height);
Rectangle surroundingRec = FindSurroundingRectangle(graphics,canGrowShrinkCollection);
desiredContainerRectangle = new Rectangle(containerItem.Location.X,
containerItem .Location.Y,
containerItem .Size.Width,
desiredContainerRectangle = new Rectangle(container.Location.X,
container.Location.Y,
container.Size.Width,
surroundingRec.Size.Height + bottomPadding );
}

1
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs

@ -39,6 +39,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing @@ -39,6 +39,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
#region Section's
public static void AdjustParent (BaseReportItem parent,ReportItemCollection items)
{
foreach (BaseReportItem i in items) {

12
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardPrinter.cs

@ -28,20 +28,16 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing @@ -28,20 +28,16 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
public static void AdjustBackColor (ISimpleContainer container)
{
BaseReportItem parent = container as BaseReportItem;
if (parent.BackColor != GlobalValues.DefaultBackColor) {
foreach (BaseReportItem item in container.Items)
{
item.BackColor = parent.BackColor;
}
foreach (BaseReportItem item in container.Items)
{
item.BackColor = container.BackColor;
}
}
public static void AdjustBackColor (ISimpleContainer container, Color defaultColor)
{
BaseReportItem parent = container as BaseReportItem;
if (parent.BackColor != defaultColor) {
if (container.BackColor != defaultColor) {
foreach (BaseReportItem item in container.Items)
{
item.BackColor = defaultColor;

10
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/TableStrategy.cs

@ -295,9 +295,17 @@ namespace ICSharpCode.Reports.Core @@ -295,9 +295,17 @@ namespace ICSharpCode.Reports.Core
public override object Current {
get {
int cr = base.CurrentPosition;
try {
int cr = base.CurrentPosition;
int li = (base.IndexList[cr] ).ListIndex;
return this.table.Rows[li];
} catch (Exception) {
throw;
}
// int cr = base.CurrentPosition;
// int li = (base.IndexList[cr] ).ListIndex;
}
}

2
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/ConverterFactory.cs

@ -30,7 +30,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -30,7 +30,7 @@ namespace ICSharpCode.Reports.Core.Exporter
}
if (t.Equals(typeof(BaseRowItem))) {
return new RowConverter (dataNavigator,singlePage,layouter);
return new GroupedRowConverter (dataNavigator,singlePage,layouter);
}
return null;

75
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs

@ -22,12 +22,12 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -22,12 +22,12 @@ namespace ICSharpCode.Reports.Core.Exporter
/// </summary>
///
public class RowConverter:BaseConverter
public class GroupedRowConverter:BaseConverter
{
private BaseReportItem parent;
public RowConverter(IDataNavigator dataNavigator,
public GroupedRowConverter(IDataNavigator dataNavigator,
ExporterPage singlePage, ILayouter layouter):base(dataNavigator,singlePage,layouter)
{
}
@ -72,43 +72,26 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -72,43 +72,26 @@ namespace ICSharpCode.Reports.Core.Exporter
section.Size = this.SectionBounds.DetailSectionRectangle.Size;
base.SaveSize(section.Items[0].Size);
Color color = ((BaseReportItem)simpleContainer).BackColor;
// Grouping Header
if (section.Items.HasGroupColumns) {
currentPosition = TestDecorateElement(mylist,section,simpleContainer,defaultLeftPos,currentPosition);
currentPosition = ConvertGroupHeader(mylist,section,simpleContainer,defaultLeftPos,currentPosition);
}
else
{
base.FillRow(simpleContainer);
PrepareContainerForConverting(simpleContainer);
base.FireSectionRendering(section);
StandardPrinter.EvaluateRow(base.Evaluator,mylist);
currentPosition = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition);
// No Grouping
currentPosition = ConvertStandardRow (mylist,section,simpleContainer,defaultLeftPos,currentPosition);
}
AfterConverting (section);
// Grouping Items ----------------------
// Group Children ----------------------
if (base.DataNavigator.HasChildren) {
StandardPrinter.AdjustBackColor(simpleContainer,GlobalValues.DefaultBackColor);
base.DataNavigator.SwitchGroup();
do {
((BaseReportItem)simpleContainer).BackColor = color;
base.DataNavigator.FillChild(simpleContainer.Items);
PrepareContainerForConverting(simpleContainer);
base.FireSectionRendering(section);
StandardPrinter.EvaluateRow(base.Evaluator,mylist);
currentPosition = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition);
AfterConverting (section);
currentPosition = ConvertGroupChilds (mylist,section,simpleContainer,defaultLeftPos,currentPosition);
}
while ( base.DataNavigator.ChildMoveNext());
}
@ -135,7 +118,6 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -135,7 +118,6 @@ namespace ICSharpCode.Reports.Core.Exporter
}
private void AfterConverting (BaseSection section)
@ -146,37 +128,44 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -146,37 +128,44 @@ namespace ICSharpCode.Reports.Core.Exporter
private Point TestDecorateElement(ExporterCollection mylist,BaseSection section,ISimpleContainer simpleContainer,int leftPos,Point offset)
private Point ConvertGroupHeader(ExporterCollection mylist,BaseSection section,ISimpleContainer simpleContainer,int leftPos,Point offset)
{
/*
base.FillRow(simpleContainer);
PrepareContainerForConverting(simpleContainer);
base.FireSectionRendering(section);
StandardPrinter.EvaluateRow(base.Evaluator,mylist);
// currentPosition = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition);
*/
var groupCollection = section.Items.ExtractGroupedColumns();
base.DataNavigator.Fill(groupCollection);
base.FireSectionRendering(section);
StandardPrinter.EvaluateRow(base.Evaluator,mylist);
ExporterCollection list = StandardPrinter.ConvertPlainCollection(groupCollection,offset);
mylist.AddRange(list);
AfterConverting (section);
return new Point (leftPos,offset.Y + groupCollection[0].Size.Height + 20 + (3 *GlobalValues.GapBetweenContainer));
}
private Color old_TestDecorateElement(ISimpleContainer simpleContainer)
private Point ConvertGroupChilds(ExporterCollection mylist, BaseSection section, ISimpleContainer simpleContainer, int defaultLeftPos, Point currentPosition)
{
BaseReportItem i = simpleContainer as BaseReportItem;
var retval = i.BackColor;
i.BackColor = System.Drawing.Color.LightGray;
return retval;
base.DataNavigator.FillChild(simpleContainer.Items);
PrepareContainerForConverting(simpleContainer);
base.FireSectionRendering(section);
StandardPrinter.EvaluateRow(base.Evaluator,mylist);
Point curPos = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition);
AfterConverting (section);
return curPos;
}
private Point ConvertStandardRow(ExporterCollection mylist, BaseSection section, ISimpleContainer simpleContainer, int defaultLeftPos, Point currentPosition)
{
base.FillRow(simpleContainer);
PrepareContainerForConverting(simpleContainer);
base.FireSectionRendering(section);
StandardPrinter.EvaluateRow(base.Evaluator,mylist);
Point curPos = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition);
AfterConverting (section);
return curPos;
}
private static void ShouldDrawBorder (BaseSection section,ExporterCollection list)
{
if (section.DrawBorder == true) {

1
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IContainerItem.cs

@ -23,6 +23,7 @@ namespace ICSharpCode.Reports.Core.Interfaces @@ -23,6 +23,7 @@ namespace ICSharpCode.Reports.Core.Interfaces
BaseReportItem Parent {set;get;}
Point Location {set;get;}
Size Size {get;set;}
Color BackColor {get;set;}
}

Loading…
Cancel
Save