Browse Source

Merge remote-tracking branch 'remotes/sd/master'

pull/690/head
jkuehner 10 years ago
parent
commit
2cdeb9dc3d
  1. 2
      data/resources/StringResources.resx
  2. 3
      src/AddIns/Analysis/CodeQuality/Reporting/BaseReport.cs
  3. 2
      src/AddIns/Debugger/Debugger.Core/PdbSymbolSource.cs
  4. 38
      src/AddIns/DisplayBindings/ILSpyAddIn/DecompiledViewContent.cs
  5. 3
      src/AddIns/DisplayBindings/ILSpyAddIn/ILSpyParser.cs
  6. 3
      src/AddIns/DisplayBindings/ILSpyAddIn/ILSpySymbolSource.cs
  7. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/ICSharpCode.Reporting.Addin.csproj
  8. 24
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/Group_SortColumns.cs
  9. 22
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/ReportSettings.cs
  10. 75
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Designer/ReportRootDesigner.cs
  11. 23
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignerBinding/ReportDefinitionDeserializer.cs
  12. 47
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Dialogs/GroupingCollectionEditor.cs
  13. 25
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/Dialog/PushDataReport.xaml
  14. 63
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/Dialog/PushDataReport.xaml.cs
  15. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/ReportGenerator.cs
  16. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
  17. 22
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs
  18. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/ExtensionMethods.cs
  19. 7
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataManager/Listhandling/CollectionDataSource.cs
  20. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/ExpressionVisitor.cs
  21. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/ExpressionRunner.cs
  22. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/Irony/Ast/AstExtensions.cs
  23. 60
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/Irony/Imports/ImportAggregates.cs
  24. 36
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/StandardFormatter.cs
  25. 4
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/TypeHelper.cs
  26. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportModel.cs
  27. 36
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportSettings.cs
  28. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportModel.cs
  29. 40
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportSettings.cs
  30. 22
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  31. 7
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs
  32. 22
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs
  33. 5
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/PreviewViewModel.cs
  34. 18
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/WpfVisitor.cs
  35. 57
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/DataSource/DataSourceFixture.cs
  36. 24
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Expressions/IntegrationTests/AggregatesGroupesFixture.cs
  37. 10
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/MeasureArrange/ContainerArrangeStrategyFixture.cs
  38. 32
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/ReportItems/TextItemFixture.cs

2
data/resources/StringResources.resx

@ -8276,7 +8276,7 @@ a line break</value> @@ -8276,7 +8276,7 @@ a line break</value>
<data name="Global.Shortcuts.Win" xml:space="preserve">
<value>Win</value>
</data>
<data name="AddIns.Debugger.Console.Clear" xml:space="preserve">
<data name="AddIns.Debugger.Console.ClearConsole" xml:space="preserve">
<value>Clear console</value>
</data>
<data name="AddIns.Debugger.Console.DeleteHistory" xml:space="preserve">

3
src/AddIns/Analysis/CodeQuality/Reporting/BaseReport.cs

@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
using System;
using System.Collections.Generic;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Items;
@ -41,6 +42,6 @@ namespace ICSharpCode.CodeQuality.Reporting @@ -41,6 +42,6 @@ namespace ICSharpCode.CodeQuality.Reporting
protected List<string> FileNames {get;private set;}
public ReportSettings ReportSettings {get;set;}
public IReportSettings ReportSettings {get;set;}
}
}

2
src/AddIns/Debugger/Debugger.Core/PdbSymbolSource.cs

@ -256,7 +256,7 @@ namespace Debugger @@ -256,7 +256,7 @@ namespace Debugger
var s = seqPoints[i];
if (s.ContainsLocation(line, column))
return s;
if (s.StartLine > line)
if (s.StartLine > line || (s.StartLine == line && s.StartColumn > column))
return s;
}
return null;

38
src/AddIns/DisplayBindings/ILSpyAddIn/DecompiledViewContent.cs

@ -27,6 +27,7 @@ using ICSharpCode.AvalonEdit.AddIn; @@ -27,6 +27,7 @@ using ICSharpCode.AvalonEdit.AddIn;
using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.Core;
using ICSharpCode.Decompiler;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.ILSpyAddIn;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.TypeSystem;
@ -39,12 +40,13 @@ namespace ICSharpCode.ILSpyAddIn @@ -39,12 +40,13 @@ namespace ICSharpCode.ILSpyAddIn
/// <summary>
/// Hosts a decompiled type.
/// </summary>
class DecompiledViewContent : AbstractViewContentWithoutFile
class DecompiledViewContent : AbstractViewContentWithoutFile, IPositionable
{
/// <summary>
/// Entity to jump to once decompilation has finished.
/// </summary>
string jumpToEntityIdStringWhenDecompilationFinished;
int jumpToLineWhenDecompilationFinished, jumpToColumnWhenDecompilationFinished;
bool decompilationFinished;
@ -72,6 +74,9 @@ namespace ICSharpCode.ILSpyAddIn @@ -72,6 +74,9 @@ namespace ICSharpCode.ILSpyAddIn
this.codeEditor.FileName = this.DecompiledTypeName.ToFileName();
this.codeEditor.ActiveTextEditor.IsReadOnly = true;
this.codeEditor.ActiveTextEditor.SyntaxHighlighting = HighlightingManager.Instance.GetDefinition("C#");
this.Services.RemoveService(typeof(IPositionable));
this.Services.AddService(typeof(IPositionable), this);
}
#endregion
@ -169,7 +174,10 @@ namespace ICSharpCode.ILSpyAddIn @@ -169,7 +174,10 @@ namespace ICSharpCode.ILSpyAddIn
codeEditor.Document.UndoStack.ClearAll();
this.decompilationFinished = true;
JumpToEntity(this.jumpToEntityIdStringWhenDecompilationFinished);
if (!string.IsNullOrEmpty(jumpToEntityIdStringWhenDecompilationFinished))
JumpToEntity(this.jumpToEntityIdStringWhenDecompilationFinished);
else
JumpTo(jumpToLineWhenDecompilationFinished, jumpToColumnWhenDecompilationFinished);
// update UI
//UpdateIconMargin();
@ -228,5 +236,31 @@ namespace ICSharpCode.ILSpyAddIn @@ -228,5 +236,31 @@ namespace ICSharpCode.ILSpyAddIn
}
#endregion
#region IPositionable implementation
public void JumpTo(int line, int column)
{
if (decompilationFinished) {
codeEditor.ActiveTextEditorAdapter.JumpTo(line, column);
} else {
jumpToLineWhenDecompilationFinished = line;
jumpToColumnWhenDecompilationFinished = column;
}
}
public int Line {
get {
return codeEditor.ActiveTextEditor.TextArea.Caret.Line;
}
}
public int Column {
get {
return codeEditor.ActiveTextEditor.TextArea.Caret.Column;
}
}
#endregion
}
}

3
src/AddIns/DisplayBindings/ILSpyAddIn/ILSpyParser.cs

@ -31,6 +31,7 @@ using ICSharpCode.NRefactory.Semantics; @@ -31,6 +31,7 @@ using ICSharpCode.NRefactory.Semantics;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom.ClassBrowser;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Search;
using ICSharpCode.SharpDevelop.Parser;
using ICSharpCode.SharpDevelop.Project;
@ -48,7 +49,7 @@ namespace ICSharpCode.ILSpyAddIn @@ -48,7 +49,7 @@ namespace ICSharpCode.ILSpyAddIn
return fileName != null && fileName.StartsWith("ilspy://", StringComparison.OrdinalIgnoreCase);
}
readonly static ITextSource EmptyFileContent = new StringTextSource("");
readonly ITextSource EmptyFileContent = new StringTextSource("", new OnDiskTextSourceVersion(DateTime.MinValue));
public ITextSource GetFileContent(FileName fileName)
{

3
src/AddIns/DisplayBindings/ILSpyAddIn/ILSpySymbolSource.cs

@ -29,7 +29,8 @@ namespace ICSharpCode.ILSpyAddIn @@ -29,7 +29,8 @@ namespace ICSharpCode.ILSpyAddIn
var typeName = DecompiledTypeReference.FromTypeDefinition(method.DeclaringTypeDefinition);
if (typeName == null) return null;
SD.Log.DebugFormatted("GetSymbols for: {0}", typeName.ToFileName());
return SD.ParserService.ParseFile(typeName.ToFileName()) as ILSpyUnresolvedFile;
// full parse info required to make ParserService caching possible...
return SD.ParserService.Parse(typeName.ToFileName()).UnresolvedFile as ILSpyUnresolvedFile;
}
public Debugger.SequencePoint GetSequencePoint(IMethod method, int iloffset)

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

@ -115,6 +115,7 @@ @@ -115,6 +115,7 @@
<Compile Include="src\DesignableItems\BaseSection.cs" />
<Compile Include="src\DesignableItems\BaseTextItem.cs" />
<Compile Include="src\DesignableItems\BaseDataItem.cs" />
<Compile Include="src\DesignableItems\Group_SortColumns.cs" />
<Compile Include="src\DesignableItems\ReportSettings.cs" />
<Compile Include="src\DesignerBinding\DesignerBinding.cs" />
<Compile Include="src\DesignerBinding\DesignerGenerator.cs" />
@ -140,6 +141,7 @@ @@ -140,6 +141,7 @@
</Compile>
<Compile Include="src\Dialogs\ExpressionEditor.cs" />
<Compile Include="src\Dialogs\FormatStringConverter.cs" />
<Compile Include="src\Dialogs\GroupingCollectionEditor.cs" />
<Compile Include="src\Dialogs\IStringBasedEditorDialog.cs" />
<Compile Include="src\Factory\CreateFormSheetFromModel.cs" />
<Compile Include="src\Globals\DesignerGlobals.cs" />

24
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/Group_SortColumns.cs

@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 29.05.2015
* Time: 20:50
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using ICSharpCode.Reporting.BaseClasses;
namespace ICSharpCode.Reporting.Addin.DesignableItems
{
/// <summary>
/// Description of Group_SortColumns.
/// </summary>
public class SortColumn:ICSharpCode.Reporting.Items.SortColumn
{
}
public class GroupColumn:ICSharpCode.Reporting.Items.GroupColumn
{
}
}

22
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/ReportSettings.cs

@ -8,16 +8,30 @@ @@ -8,16 +8,30 @@
*/
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Drawing.Design;
using System.IO;
using ICSharpCode.Reporting.Globals;
using ICSharpCode.Reporting.Addin.Designer;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Addin.Dialogs;
namespace ICSharpCode.Reporting.Addin.DesignableItems
{
public class ReportSettingsDesigner:ComponentDesigner
{
const string settingsName = "ReportSettings";
public override void Initialize(IComponent component)
{
base.Initialize(component);
component.Site.Name = ReportSettingsDesigner.settingsName;
}
}
[Designer(typeof(ReportSettingsDesigner))]
public class ReportSettings:Component
public class ReportSettings:Component,IReportSettings
{
public ReportSettings()
@ -135,7 +149,6 @@ namespace ICSharpCode.Reporting.Addin.DesignableItems @@ -135,7 +149,6 @@ namespace ICSharpCode.Reporting.Addin.DesignableItems
public PushPullModel DataModel {get;set;}
// [Category("Parameters")]
// [EditorAttribute ( typeof(ParameterCollectionEditor),
// typeof(System.Drawing.Design.UITypeEditor) )]
@ -144,8 +157,9 @@ namespace ICSharpCode.Reporting.Addin.DesignableItems @@ -144,8 +157,9 @@ namespace ICSharpCode.Reporting.Addin.DesignableItems
public SortColumnCollection SortColumnsCollection {get;private set;}
[Category("Sorting/Grouping")]
[EditorAttribute ( typeof(GroupingCollectionEditor), typeof(UITypeEditor) )]
public GroupColumnCollection GroupColumnsCollection {get;private set;}
}
}

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

@ -38,8 +38,7 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -38,8 +38,7 @@ namespace ICSharpCode.Reporting.Addin.Designer
/// Description of ReportRootDesigner.
/// </summary>
class ReportRootDesigner: DocumentDesigner
{
class ReportRootDesigner: DocumentDesigner{
ICollection currentSelection;
IDesignerHost host;
MenuCommandService menuCommandService;
@ -47,12 +46,11 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -47,12 +46,11 @@ namespace ICSharpCode.Reporting.Addin.Designer
ISelectionService selectionService;
IComponentChangeService componentChangeService;
List<BaseSection> sections;
ICSharpCode.Reporting.Items.ReportSettings reportSettings;
ReportSettings reportSettings;
RootReportModel rootReportModel;
void ShowMessage(Exception e)
{
void ShowMessage(Exception e){
DisplayError(e);
var uiService = (IUIService)host.GetService(typeof(IUIService));
if (uiService != null) {
@ -61,15 +59,13 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -61,15 +59,13 @@ namespace ICSharpCode.Reporting.Addin.Designer
}
void InitializeGUI()
{
reportSettings = host.Container.Components[1] as ICSharpCode.Reporting.Items.ReportSettings;
void InitializeGUI(){
reportSettings = host.Container.Components[1] as ReportSettings;
InitializeRootReportModel();
}
void InitializeRootReportModel ()
{
void InitializeRootReportModel (){
rootReportModel = host.Container.Components[0] as RootReportModel;
rootReportModel.PageMargin = CalculateMargins();
rootReportModel.Page = new Rectangle(new Point(0,0), reportSettings.PageSize);
@ -78,16 +74,14 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -78,16 +74,14 @@ namespace ICSharpCode.Reporting.Addin.Designer
}
Margins CalculateMargins ()
{
Margins CalculateMargins (){
return new Margins(reportSettings.LeftMargin,reportSettings.RightMargin,
reportSettings.TopMargin,reportSettings.BottomMargin);
}
#region overrides
public override void Initialize(IComponent component)
{
public override void Initialize(IComponent component){
base.Initialize(component);
sections = new List<BaseSection>();
@ -143,12 +137,12 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -143,12 +137,12 @@ namespace ICSharpCode.Reporting.Addin.Designer
this.selectionService.SelectionChanged += new EventHandler(OnSelectionChanged);
}
this.host = (IDesignerHost)GetService(typeof(IDesignerHost));
host = (IDesignerHost)GetService(typeof(IDesignerHost));
this.menuCommandService = (MenuCommandService)host.GetService(typeof(MenuCommandService));
menuCommandService = (MenuCommandService)host.GetService(typeof(MenuCommandService));
if (host != null)
{
host.LoadComplete += new EventHandler(OnLoadComplete);
host.LoadComplete += OnLoadComplete;
}
//Dragdropp only allowed in Section
this.Control.AllowDrop = false;
@ -162,9 +156,7 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -162,9 +156,7 @@ namespace ICSharpCode.Reporting.Addin.Designer
}
protected override void PostFilterProperties(IDictionary properties)
{
protected override void PostFilterProperties(IDictionary properties){
TypeProviderHelper.RemoveProperties(properties);
var s = new string[]{"Visible","BackColor",
"Text","MaximumSize","MinimumSize",
@ -180,21 +172,19 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -180,21 +172,19 @@ namespace ICSharpCode.Reporting.Addin.Designer
#region Events
void OnSectionSizeChanged (object sender, EventArgs e)
{
void OnSectionSizeChanged (object sender, EventArgs e){
RecalculateSections();
}
void RecalculateSections()
{
void RecalculateSections(){
int locY = 50;
// disable once ConvertIfStatementToNullCoalescingExpression
if (reportSettings == null) {
reportSettings = host.Container.Components[1] as ICSharpCode.Reporting.Items.ReportSettings;
reportSettings = host.Container.Components[1] as ReportSettings;
}
foreach (BaseSection section in sections)
{
foreach (BaseSection section in sections){
section.Location = new Point(reportSettings.LeftMargin,locY);
locY = locY + section.Size.Height + DesignerGlobals.GabBetweenSection;
}
@ -203,21 +193,19 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -203,21 +193,19 @@ namespace ICSharpCode.Reporting.Addin.Designer
void OnLoadComplete(object sender, EventArgs e)
{
void OnLoadComplete(object sender, EventArgs e){
var host = (IDesignerHost)sender;
host.LoadComplete -= OnLoadComplete;
InitializeGUI();
}
void OnComponentAdded(object sender, ComponentEventArgs ce)
{
void OnComponentAdded(object sender, ComponentEventArgs ce){
var section = ce.Component as BaseSection;
if (section != null) {
sections.Add(section);
section.SizeChanged += new EventHandler( OnSectionSizeChanged);
section.SizeChanged += OnSectionSizeChanged;
foreach (Control ctrl in section.Controls) {
AddToHost(ctrl);
host.Container.Add(ctrl);
@ -228,8 +216,7 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -228,8 +216,7 @@ namespace ICSharpCode.Reporting.Addin.Designer
}
void AddToHost (Control ctrl)
{
void AddToHost (Control ctrl){
foreach (Control c1 in ctrl.Controls) {
AddToHost (c1);
}
@ -237,16 +224,15 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -237,16 +224,15 @@ namespace ICSharpCode.Reporting.Addin.Designer
}
private void OnComponentChanged(object sender, ComponentChangedEventArgs ce)
{
void OnComponentChanged(object sender, ComponentChangedEventArgs ce){
LoggingService.InfoFormatted("RootDesigner:OnComponentChanged");
var str = String.Format(CultureInfo.CurrentCulture,"RootDesigner:OnComponentChanged <{0}> from <{1}> to <{2}>",ce.Component.ToString(),ce.OldValue,ce.NewValue);
LoggingService.InfoFormatted(str);
var section = ce.Component as BaseSection;
if (section != null) {
foreach (BaseSection s in sections)
{
foreach (BaseSection s in sections){
if (s.Name == section.Name) {
s.Size = section.Size;
}
@ -256,22 +242,19 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -256,22 +242,19 @@ namespace ICSharpCode.Reporting.Addin.Designer
}
void OnComponentChanging(object sender, ComponentChangingEventArgs ce)
{
void OnComponentChanging(object sender, ComponentChangingEventArgs ce){
System.Console.WriteLine("RootDesigner:OnComponentChanging");
// Host.CreateTransaction();
}
void OnSelectionChanged(object sender, EventArgs e)
{
void OnSelectionChanged(object sender, EventArgs e){
currentSelection = ((ISelectionService)sender).GetSelectedComponents();
}
#endregion
public IDesignerHost Host {
get {
if (this.host == null) {
@ -281,8 +264,7 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -281,8 +264,7 @@ namespace ICSharpCode.Reporting.Addin.Designer
}
public IToolboxService ToolboxService
{
public IToolboxService ToolboxService{
get
{
if (toolboxService == null)
@ -327,8 +309,7 @@ namespace ICSharpCode.Reporting.Addin.Designer @@ -327,8 +309,7 @@ namespace ICSharpCode.Reporting.Addin.Designer
#region Dispose
protected override void Dispose(bool disposing)
{
protected override void Dispose(bool disposing){
if (disposing)
{
var componentService = (IComponentChangeService)GetService(typeof(IComponentChangeService));

23
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignerBinding/ReportDefinitionDeserializer.cs

@ -24,8 +24,8 @@ using System.Xml; @@ -24,8 +24,8 @@ using System.Xml;
using ICSharpCode.Core;
using ICSharpCode.Reporting.Factories;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.Xml;
using ICSharpCode.Reporting.Addin.XML;
namespace ICSharpCode.Reporting.Addin.DesignerBinding
@ -33,8 +33,7 @@ namespace ICSharpCode.Reporting.Addin.DesignerBinding @@ -33,8 +33,7 @@ namespace ICSharpCode.Reporting.Addin.DesignerBinding
class ReportDefinitionDeserializer : ReportDefinitionParser
{
public static XmlDocument LoadXmlFromStream(Stream stream)
{
public static XmlDocument LoadXmlFromStream(Stream stream){
if (stream == null)
throw new ArgumentNullException("stream");
var xmlDocument = new XmlDocument();
@ -47,8 +46,7 @@ namespace ICSharpCode.Reporting.Addin.DesignerBinding @@ -47,8 +46,7 @@ namespace ICSharpCode.Reporting.Addin.DesignerBinding
}
public ReportModel CreateModelFromXml(XmlElement elem,IDesignerHost host)
{
public ReportModel CreateModelFromXml(XmlElement elem,IDesignerHost host){
var reportSettings = CreateReportSettings(elem);
var reportModel = ReportModelFactory.Create();
reportModel.ReportSettings = reportSettings;
@ -71,20 +69,17 @@ namespace ICSharpCode.Reporting.Addin.DesignerBinding @@ -71,20 +69,17 @@ namespace ICSharpCode.Reporting.Addin.DesignerBinding
}
static ReportSettings CreateReportSettings(XmlElement elem)
{
IReportSettings CreateReportSettings(XmlElement elem){
XmlNodeList nodes = elem.FirstChild.ChildNodes;
var reportSettingsNode = (XmlElement)nodes[0];
var modelLoader = new ModelLoader();
return modelLoader.Load(reportSettingsNode) as ReportSettings;
return Load(reportSettingsNode,null) as IReportSettings;
}
protected override Type GetTypeByName(string ns, string name)
{
var a = Assembly.GetExecutingAssembly();
Type t = a.GetType("ICSharpCode.Reporting.Addin.DesignableItems" + "." + name);
return t;
protected override Type GetTypeByName(string ns, string name){
var assembly = Assembly.GetExecutingAssembly();
Type type = assembly.GetType("ICSharpCode.Reporting.Addin.DesignableItems" + "." + name);
return type;
}
}
}

47
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Dialogs/GroupingCollectionEditor.cs

@ -0,0 +1,47 @@ @@ -0,0 +1,47 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 29.05.2015
* Time: 19:24
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing.Design;
using ICSharpCode.Reporting.Items;
namespace ICSharpCode.Reporting.Addin.Dialogs
{
/// <summary>
/// Description of GroupingCollectionEditor.
/// </summary>
public class GroupingCollectionEditor:CollectionEditor
{
Type[] types;
public GroupingCollectionEditor(Type type):base(type){
types = new Type[] {typeof(GroupColumn)};
}
protected override Type[] CreateNewItemTypes(){
return types;
}
protected override object CreateInstance(Type itemType)
{
// if (itemType == typeof(SqlParameter)) {
// return new SqlParameter();
// }
return base.CreateInstance(typeof(GroupColumn));
}
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context){
return UITypeEditorEditStyle.Modal;
}
}
}

25
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/Dialog/PushDataReport.xaml

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
<xctk:WizardPage x:Class="ICSharpCode.Reporting.Addin.ReportWizard.Dialog.PushDataReport"
<xctk:WizardPage x:Class="ICSharpCode.Reporting.Addin.ReportWizard.Dialog.PushDataReport"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
CanSelectPreviousPage="true"
CanSelectNextPage="false">
<Grid ShowGridLines="True">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
@ -20,21 +20,30 @@ @@ -20,21 +20,30 @@
<Grid.RowDefinitions>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="200"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="150"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Name="_projTxt" Text="{core:Localize SharpReport.Wizard.PushModel.SelectProject}"
<!-- Seelct project in Solution -->
<TextBlock Text="Select Project" FontSize="15" ></TextBlock>
<ComboBox Name="_projectsCbo" Grid.Row="1" SelectionChanged="_pro_SelectionChanged"></ComboBox>
<!-- Select Type from Solution -->
<TextBlock Name="_projTxt" Grid.Row="3" Visibility="Hidden" Text="{core:Localize SharpReport.Wizard.PushModel.SelectProject}"
FontSize="15" ></TextBlock>
<ComboBox Name="_cboTypes" Grid.Row="4" Visibility="Hidden" SelectionChanged="_cboTypes_SelectionChanged" MinWidth="150" ></ComboBox>
<ComboBox Name="_cboTypes" Visibility="Hidden" Grid.Row="1" SelectionChanged="_cboTypes_SelectionChanged" MinWidth="150" ></ComboBox>
<TextBlock Name="_availTxt" Visibility="Hidden" Text="{core:Localize SharpReport.Wizard.PushModel.AvailableFields}" FontSize="15" Grid.Column ="1" Margin="15,0,0,0"></TextBlock>
<TextBlock Name="_availTxt" Visibility="Hidden " Text="{core:Localize SharpReport.Wizard.PushModel.AvailableFields}" FontSize="15" Grid.Column ="1" Margin="15,0,0,0"></TextBlock>
<DataGrid Name="_DataGrid"
ItemsSource="{Binding}"
CanUserAddRows="True"
CanUserDeleteRows="True"
AutoGenerateColumns="False" Grid.Row="2" Grid.RowSpan="2" Margin="5,10,30,5" Width="400" Grid.Column="1">
AutoGenerateColumns="False" Grid.Row="1" Grid.RowSpan="5" Margin="5,10,30,5" Width="400" Grid.Column="1">
<DataGrid.Columns>
<DataGridTextColumn Header="ColumnName" Binding="{Binding ColumnName}" Width="200"></DataGridTextColumn>
<DataGridComboBoxColumn Header="DataType" x:Name="cboType" SelectedItemBinding="{Binding DataTypeName}" Width="*"></DataGridComboBoxColumn>

63
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/Dialog/PushDataReport.xaml.cs

@ -12,6 +12,8 @@ using System.Linq; @@ -12,6 +12,8 @@ using System.Linq;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
using Xceed.Wpf.Toolkit;
using ICSharpCode.Reporting.Addin.Globals;
using ICSharpCode.Reporting.Addin.ReportWizard.ViewModels;
@ -26,47 +28,71 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog @@ -26,47 +28,71 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog
List<AbstractColumn> items;
PushModelContext context;
public PushDataReport()
{
public PushDataReport(){
InitializeComponent();
items = new List<AbstractColumn>();
_DataGrid.ItemsSource = items;
this.context = new PushModelContext();
cboType.ItemsSource = GlobalLists.DataTypeList();
Projects = GetProjects();
_projectsCbo.ItemsSource = Projects;
}
IProject SelectedProject {get;set;}
IModelCollection<IProject> GetProjects(){
var solution = SharpDevelop.SD.ProjectService.CurrentSolution;
return solution == null ? null : solution.Projects;
}
public IModelCollection<IProject> Projects {get; private set;}
IEnumerable<ITypeDefinition> GetTypeDefinitions(){
if (SelectedProject != null) {
var compilation = SharpDevelop.SD.ParserService.GetCompilation(SelectedProject);
var definitions = compilation.MainAssembly.TopLevelTypeDefinitions.Where(x => x.Properties.Any());
return definitions;
}
return null;
}
#region SolutionCombo
void _pro_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e){
SelectedProject = (IProject)e.AddedItems[0];
var definitions = GetTypeDefinitions();
if (definitions.Any()) {
_cboTypes.Visibility = System.Windows.Visibility.Visible;
_availTxt.Visibility = System.Windows.Visibility.Visible;
_projTxt.Visibility = System.Windows.Visibility.Visible;
_cboTypes.ItemsSource = definitions;
_cboTypes.SelectedIndex = 0;
} else {
var data = new AbstractColumn("MyColumn", typeof(string));
items.Add(data);
_projTxt.Text = ResourceService.GetString("SharpReport.Wizard.PushModel.NoProject");
}
}
static IEnumerable<ITypeDefinition> GetTypeDefinitions()
{
var currentProject = SharpDevelop.SD.ProjectService.CurrentProject;
var compilation = SharpDevelop.SD.ParserService.GetCompilation(currentProject);
var definitions = compilation.MainAssembly.TopLevelTypeDefinitions.Where(x => x.Properties.Any());
return definitions;
}
#endregion
#region Combo
#region Classes Combo
void _cboTypes_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e){
var typeDefinition = (ITypeDefinition)e.AddedItems[0];
var itemsList = CreateItemsSource(typeDefinition);
if (itemsList.Count > 0) {
_DataGrid.ItemsSource = itemsList;
if (e.AddedItems.Count > 0) {
var typeDefinition = (ITypeDefinition)e.AddedItems[0];
var itemsList = CreateItemsSource(typeDefinition);
if (itemsList.Count > 0) {
_DataGrid.ItemsSource = itemsList;
}
}
}
#endregion
static List<AbstractColumn> CreateItemsSource(ITypeDefinition typeDefinitions){
return typeDefinitions.Properties.Select(p => new AbstractColumn(){
@ -74,7 +100,7 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog @@ -74,7 +100,7 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog
DataTypeName = p.ReturnType.ReflectionName
}).ToList();
}
#endregion
void UpdateContext(){
context.Items = (List<AbstractColumn>)_DataGrid.ItemsSource;
@ -93,6 +119,7 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog @@ -93,6 +119,7 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard.Dialog
public WizardPageType ReportPageType {
get {return WizardPageType.PushModelPage;}
}
#endregion
}

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/ReportWizard/ReportGenerator.cs

@ -64,7 +64,7 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard @@ -64,7 +64,7 @@ namespace ICSharpCode.Reporting.Addin.ReportWizard
}
ReportSettings GenerateBaseSettings (ReportWizardContext context) {
IReportSettings GenerateBaseSettings (ReportWizardContext context) {
var pageOneContext = (PageOneContext)context.PageOneContext;
var reportSettings = ReportModel.ReportSettings;
reportSettings.DataModel = pageOneContext.DataModel;

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj

@ -138,6 +138,7 @@ @@ -138,6 +138,7 @@
<Compile Include="Src\Interfaces\IPrintableObject.cs" />
<Compile Include="Src\Interfaces\IReportContainer.cs" />
<Compile Include="Src\Interfaces\IReportCreator.cs" />
<Compile Include="Src\Interfaces\IReportSettings.cs" />
<Compile Include="Src\Items\BaseDataItem.cs" />
<Compile Include="Src\Items\BaseGroupHeader.cs" />
<Compile Include="Src\Items\BaseRowItem.cs" />

22
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs

@ -39,18 +39,32 @@ namespace ICSharpCode.Reporting.Arrange @@ -39,18 +39,32 @@ namespace ICSharpCode.Reporting.Arrange
if (exportColumn == null)
throw new ArgumentNullException("exportColumn");
var container = exportColumn as IExportContainer;
if ((container != null) && (container.ExportedItems.Count > 0)) {
if ((container != null) && (container.ExportedItems.Any())) {
List<IExportColumn> canGrowItems = CreateCanGrowList(container);
if (canGrowItems.Count > 0) {
if (canGrowItems.Any()) {
var containerSize = ArrangeInternal(container);
if (containerSize.Height > container.DesiredSize.Height) {
container.DesiredSize = new Size(containerSize.Width,containerSize.Height);
container.DesiredSize = new Size(containerSize.Width,containerSize.Height + 15);
}
}
}
var fixedElements = container.ExportedItems.Where(x => !x.CanGrow);
var growables = container.ExportedItems.Where(x => x.CanGrow);
foreach (var growable in growables) {
var r = new Rectangle(growable.Location,growable.DesiredSize);
foreach (var x in fixedElements) {
var xr = new Rectangle(x.Location,x.DesiredSize);
if (r.IntersectsWith(xr)) {
x.Location = new Point(x.Location.X, r.Bottom + 5);
}
}
}
}
static Size ArrangeInternal(IExportContainer container){
var containerRectangle = container.DisplayRectangle;

3
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/ExtensionMethods.cs

@ -20,6 +20,7 @@ using System; @@ -20,6 +20,7 @@ using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Media;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Items;
namespace ICSharpCode.Reporting.BaseClasses
@ -121,7 +122,7 @@ namespace ICSharpCode.Reporting.BaseClasses @@ -121,7 +122,7 @@ namespace ICSharpCode.Reporting.BaseClasses
#region ReportSettings
public static int PrintableWidth (this ReportSettings reportSettings) {
public static int PrintableWidth (this IReportSettings reportSettings) {
return reportSettings.PageSize.Width - reportSettings.LeftMargin - reportSettings.RightMargin;
}
#endregion

7
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataManager/Listhandling/CollectionDataSource.cs

@ -43,11 +43,11 @@ namespace ICSharpCode.Reporting.DataManager.Listhandling @@ -43,11 +43,11 @@ namespace ICSharpCode.Reporting.DataManager.Listhandling
public class CollectionDataSource:IDataSource
{
readonly DataCollection<object> baseList;
readonly ReportSettings reportSettings;
readonly IReportSettings reportSettings;
readonly PropertyDescriptorCollection listProperties;
public CollectionDataSource(IEnumerable list, ReportSettings reportSettings)
public CollectionDataSource(IEnumerable list, IReportSettings reportSettings)
{
if (list == null)
throw new ArgumentNullException("list");
@ -190,6 +190,9 @@ namespace ICSharpCode.Reporting.DataManager.Listhandling @@ -190,6 +190,9 @@ namespace ICSharpCode.Reporting.DataManager.Listhandling
string ReadValueFromProperty (string columnName) {
if (String.IsNullOrEmpty(columnName)) {
return "Missing ColumnName";
}
var propertyPath = Current.ParsePropertyPath(columnName);
try {
var val = propertyPath.Evaluate(Current);

3
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/ExpressionVisitor.cs

@ -22,6 +22,7 @@ using System.Globalization; @@ -22,6 +22,7 @@ using System.Globalization;
using ICSharpCode.Reporting.Expressions;
using ICSharpCode.Reporting.Expressions.Irony;
using ICSharpCode.Reporting.Expressions.Irony.Ast;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
@ -35,7 +36,7 @@ namespace ICSharpCode.Reporting.Exporter.Visitors @@ -35,7 +36,7 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
readonly ReportingLanguageGrammer grammar;
readonly ReportingExpressionEvaluator evaluator;
public ExpressionVisitor(ReportSettings reportSettings) {
public ExpressionVisitor(IReportSettings reportSettings) {
grammar = new ReportingLanguageGrammer();
evaluator = new ReportingExpressionEvaluator(grammar);
evaluator.AddReportSettings(reportSettings);

3
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/ExpressionRunner.cs

@ -19,6 +19,7 @@ @@ -19,6 +19,7 @@
using System.Collections.ObjectModel;
using ICSharpCode.Reporting.DataManager.Listhandling;
using ICSharpCode.Reporting.Exporter.Visitors;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
@ -36,7 +37,7 @@ namespace ICSharpCode.Reporting.Expressions @@ -36,7 +37,7 @@ namespace ICSharpCode.Reporting.Expressions
readonly Collection<ExportPage> pages;
readonly CollectionDataSource dataSource;
public ExpressionRunner(Collection<ExportPage> pages,ReportSettings reportSettings,CollectionDataSource dataSource){
public ExpressionRunner(Collection<ExportPage> pages,IReportSettings reportSettings,CollectionDataSource dataSource){
this.pages = pages;
this.dataSource = dataSource;
Visitor = new ExpressionVisitor(reportSettings);

3
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/Irony/Ast/AstExtensions.cs

@ -19,6 +19,7 @@ @@ -19,6 +19,7 @@
using System;
using System.Collections.Generic;
using ICSharpCode.Reporting.DataManager.Listhandling;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
@ -59,7 +60,7 @@ namespace ICSharpCode.Reporting.Expressions.Irony.Ast @@ -59,7 +60,7 @@ namespace ICSharpCode.Reporting.Expressions.Irony.Ast
}
public static void AddReportSettings (this ReportingExpressionEvaluator app,ReportSettings reportSettings) {
public static void AddReportSettings (this ReportingExpressionEvaluator app,IReportSettings reportSettings) {
if (reportSettings == null)
throw new ArgumentNullException("reportSettings");
app.Globals.Add("ReportSettings",reportSettings);

60
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/Irony/Imports/ImportAggregates.cs

@ -34,8 +34,6 @@ namespace ICSharpCode.Reporting.Expressions.Irony.Imports @@ -34,8 +34,6 @@ namespace ICSharpCode.Reporting.Expressions.Irony.Imports
public static IEnumerable<object> GetDataSource (this ScriptThread thread){
return (IEnumerable<object>)thread.App.Globals["DataSource"];
}
}
static class ImportAggregateHelper {
@ -62,35 +60,63 @@ namespace ICSharpCode.Reporting.Expressions.Irony.Imports @@ -62,35 +60,63 @@ namespace ICSharpCode.Reporting.Expressions.Irony.Imports
{
public static object Sum(ScriptThread thread, AstNode[] childNodes) {
double sum = 0;
var fieldName = childNodes[0].Evaluate(thread).ToString();
object firstItem = null;
bool isTimeSpan;
var fieldName = childNodes[0].Evaluate(thread).ToString();
var dataSource = thread.GetDataSource();
var grouped = ImportAggregateHelper.IsGrouped(dataSource);
if (grouped != null) {
var firstGroupElement = dataSource.FirstOrDefault() as IGrouping<object, object>;
firstItem = firstGroupElement.FirstOrDefault();
isTimeSpan = HandleTimeSpan(firstItem,fieldName);
double groupSum = 0;
foreach (var element in grouped) {
var s = element.Sum(o => {
var v = ReadValueFromObject(fieldName, o);
return TypeNormalizer.EnsureType<double>(v);
});
sum = sum + s;
if (isTimeSpan) {
groupSum = element.Sum(o => {return TimeSpanSum(fieldName,o);});
} else {
groupSum = element.Sum(o => {return SimpleSum(fieldName,o);});
}
sum = sum + groupSum;
}
} else {
firstItem = dataSource.FirstOrDefault();
isTimeSpan = HandleTimeSpan(firstItem,fieldName);
if (ImportAggregateHelper.FieldExist(dataSource.FirstOrDefault(),fieldName)) {
sum = dataSource.Sum(o => {
var v = ReadValueFromObject(fieldName, o);
return TypeNormalizer.EnsureType<double>(v);
});
if (isTimeSpan) {
sum = dataSource.Sum(o => {return TimeSpanSum(fieldName,o); });
} else {
sum = dataSource.Sum(o => {return SimpleSum(fieldName,o); });
}
}
}
return sum.ToString();
}
static object ReadValueFromObject(string fieldName, object currentObject)
{
static double SimpleSum(string fromField,object current){
var value = ReadValueFromObject(fromField, current);
return TypeNormalizer.EnsureType<double>(value);
}
static double TimeSpanSum(string fromField,object current){
var value = ReadValueFromObject(fromField, current);
var timeSpan = (TimeSpan)value;
return TypeNormalizer.EnsureType<double>(timeSpan.Ticks);
}
static bool HandleTimeSpan(object firstItem,string fieldName){
var t = ReadValueFromObject(fieldName, firstItem);
var timeSpan = t is TimeSpan;
return t is TimeSpan;
}
static object ReadValueFromObject(string fieldName, object currentObject){
var propertyPath = currentObject.ParsePropertyPath(fieldName);
var evaluated = propertyPath.Evaluate(currentObject);
return evaluated;

36
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/StandardFormatter.cs

@ -25,19 +25,49 @@ namespace ICSharpCode.Reporting.Globals @@ -25,19 +25,49 @@ namespace ICSharpCode.Reporting.Globals
/// <summary>
/// Description of StandardFormatter.
/// </summary>
static class StandardFormatter
public static class StandardFormatter
{
public static void FormatOutput (IExportText textColumn) {
if (String.IsNullOrWhiteSpace(textColumn.Text)) {
return;
}
if (!String.IsNullOrEmpty(textColumn.FormatString)) {
TypeCode typeCode = TypeHelper.TypeCodeFromString(textColumn.DataType);
textColumn.Text = FormatItem(textColumn.Text,textColumn.FormatString,typeCode);
if (textColumn.DataType.ToLower().Contains("timespan")) {
textColumn.Text = HandleTimeSpan(textColumn.Text,textColumn.FormatString);
} else {
TypeCode typeCode = TypeHelper.TypeCodeFromString(textColumn.DataType);
textColumn.Text = FormatItem(textColumn.Text,textColumn.FormatString,typeCode);
}
}
}
static string HandleTimeSpan (string valueToFormat,string toFormat) {
TimeSpan time;
bool valid = TimeSpan.TryParseExact(valueToFormat,
"c",
CultureInfo.CurrentCulture,
out time);
if (! valid) {
var test = TimeSpan.FromTicks(Convert.ToInt64(valueToFormat));
if (test != null) {
valid = true;
time = test;
} else{
var x = TimeSpan.Parse(valueToFormat.ToString(),CultureInfo.CurrentCulture);
}
}
if (valid) {
return time.ToString("g",DateTimeFormatInfo.CurrentInfo);
}
return toFormat;
}
static string FormatItem (string valueToFormat,string format,TypeCode typeCode) {
string retValue = String.Empty;

4
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/TypeHelper.cs

@ -76,9 +76,7 @@ namespace ICSharpCode.Reporting.Globals @@ -76,9 +76,7 @@ namespace ICSharpCode.Reporting.Globals
public static TypeCode TypeCodeFromString (string type) {
if (type == null)
type = "System.String";
var x = Type.GetTypeCode( Type.GetType(type));
return x;
return Type.GetTypeCode( Type.GetType(type));
}
}
}

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportModel.cs

@ -28,7 +28,7 @@ namespace ICSharpCode.Reporting.Interfaces @@ -28,7 +28,7 @@ namespace ICSharpCode.Reporting.Interfaces
/// </summary>
public interface IReportModel
{
ReportSettings ReportSettings {get;set;}
IReportSettings ReportSettings {get;set;}
Collection<BaseSection> SectionCollection {get;}
IReportContainer ReportHeader {get;}
IReportContainer PageHeader {get;}

36
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportSettings.cs

@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 27.05.2015
* Time: 20:15
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.ComponentModel;
using System.Drawing;
using ICSharpCode.Reporting.Globals;
namespace ICSharpCode.Reporting.Interfaces
{
/// <summary>
/// Description of IReportSettings.
/// </summary>
public interface IReportSettings:IComponent{
string ReportName {get;set;}
string FileName {get;set;}
int BottomMargin {get;set;}
int TopMargin {get;set;}
int LeftMargin {get;set;}
int RightMargin {get;set;}
Size PageSize {get;}
bool Landscape {get;set;}
PushPullModel DataModel {get;set;}
ParameterCollection ParameterCollection {get;}
SortColumnCollection SortColumnsCollection {get;}
GroupColumnCollection GroupColumnsCollection {get;}
}
}

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportModel.cs

@ -62,7 +62,7 @@ namespace ICSharpCode.Reporting.Items @@ -62,7 +62,7 @@ namespace ICSharpCode.Reporting.Items
#endregion
public ReportSettings ReportSettings{get;set;}
public IReportSettings ReportSettings{get;set;}
public Collection<BaseSection> SectionCollection {get; private set;}
}

40
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportSettings.cs

@ -18,48 +18,31 @@ @@ -18,48 +18,31 @@
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.IO;
using System.Xml.Serialization;
using ICSharpCode.Reporting.Globals;
using ICSharpCode.Reporting.Interfaces;
namespace ICSharpCode.Reporting.Items
{
/// <summary>
/// Description of ReportSettings.
/// </summary>
public class ReportSettingsDesigner:ComponentDesigner
{
const string settingsName = "ReportSettings";
public ReportSettingsDesigner()
{
}
public override void Initialize(IComponent component)
{
base.Initialize(component);
component.Site.Name = ReportSettingsDesigner.settingsName;
}
}
[Designer(typeof(ReportSettingsDesigner))]
public class ReportSettings:Component
public class ReportSettings:Component,IReportSettings
{
public ReportSettings()
{
public ReportSettings(){
this.pageSize = GlobalValues.DefaultPageSize;
BaseValues();
var x = PdfSharp.PageSizeConverter.ToSize(PdfSharp.PageSize.A4);
//http://www.sizepaper.com/a-series/a4
// http://www.sizepaper.com/american-loose
System.Drawing.Printing.PageSettings paperProp = new System.Drawing.Printing.PageSettings();
var p = paperProp.PaperSize.PaperName.ToString();
//http://www.sizepaper.com/a-series/a4
//http://www.sizepaper.com/american-loose
var paperProp = new System.Drawing.Printing.PageSettings();
var p = paperProp.PaperSize.PaperName.ToString();
}
@ -165,10 +148,7 @@ namespace ICSharpCode.Reporting.Items @@ -165,10 +148,7 @@ namespace ICSharpCode.Reporting.Items
[Category("Page Settings")]
public Size PageSize {
get {
if (!Landscape) {
return pageSize;
}
return new Size(pageSize.Height, pageSize.Width);
return !Landscape ? pageSize : new Size(pageSize.Height, pageSize.Width);
}
// set { pageSize = value; }
}

22
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs

@ -90,15 +90,8 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -90,15 +90,8 @@ namespace ICSharpCode.Reporting.PageBuilder
}
void AddSectionToPage(IExportContainer header){
header.Parent = CurrentPage;
CurrentPage.ExportedItems.Add(header);
}
protected void BuildReportFooter(){
var lastSection = CurrentPage.ExportedItems.Last();
CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin,
lastSection.Location.Y - ReportModel.ReportFooter.Size.Height - 2);
@ -115,6 +108,11 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -115,6 +108,11 @@ namespace ICSharpCode.Reporting.PageBuilder
BuildPageFooter();
}
void AddSectionToPage(IExportContainer header){
header.Parent = CurrentPage;
CurrentPage.ExportedItems.Add(header);
}
protected bool PageFull(IExportContainer container) {
return container.DisplayRectangle.Bottom > DetailEnds.Y;
@ -134,9 +132,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -134,9 +132,7 @@ namespace ICSharpCode.Reporting.PageBuilder
convertedContainer.ExportedItems.AddRange(list);
//Run ExpressionEvaluator for every section, otherwise measure don't work
ExpressionRunner.Visitor.Visit(convertedContainer as ExportContainer);
Console.WriteLine("{0} - {1}",convertedContainer.DesiredSize,convertedContainer.DisplayRectangle);
convertedContainer.DesiredSize = MeasureElement(convertedContainer);
Console.WriteLine("{0} - {1}",convertedContainer.DesiredSize,convertedContainer.DisplayRectangle);
ArrangeContainer(convertedContainer);
return convertedContainer;
}
@ -193,7 +189,9 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -193,7 +189,9 @@ namespace ICSharpCode.Reporting.PageBuilder
CurrentLocation = DetailStart;
}
protected void SortIstByLocationY () {
}
protected void UpdatePageInfo() {
foreach (var page in Pages) {
page.PageInfo.TotalPages = Pages.Count;
@ -204,7 +202,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -204,7 +202,7 @@ namespace ICSharpCode.Reporting.PageBuilder
#region Visitors
protected void SetupExpressionRunner (ReportSettings reportsettings,CollectionDataSource dataSource){
protected void SetupExpressionRunner (IReportSettings reportsettings,CollectionDataSource dataSource){
ExpressionRunner = new ExpressionRunner(Pages,reportsettings,dataSource);
}

7
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs

@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using ICSharpCode.Reporting.Factories;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export;
@ -48,6 +48,11 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter @@ -48,6 +48,11 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
public List<IExportColumn> CreateConvertedList(List<IPrintableObject> items){
var itemsList = new List<IExportColumn>();
// var aa = items.OrderBy(x => x.Location.Y);
// foreach (var el in aa) {
// Console.WriteLine("{0} - {1}",el.Name,el.Location);
// }
// foreach (var element in aa) {
foreach (var element in items) {
var exportColumn = ExportColumnFactory.CreateItem(element);
var ec = element as IReportContainer;

22
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs

@ -48,6 +48,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -48,6 +48,7 @@ namespace ICSharpCode.Reporting.PageBuilder
SetupExpressionRunner(ReportModel.ReportSettings,DataSource);
base.BuildExportList();
BuildDetail();
ExpressionRunner.Visitor.SetCurrentDataSource(DataSource.CurrentList);
BuildReportFooter();
AddPage(CurrentPage);
UpdatePageInfo();
@ -80,6 +81,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -80,6 +81,7 @@ namespace ICSharpCode.Reporting.PageBuilder
foreach (IGrouping<object, object> grouping in DataSource.GroupedList) {
var groupHeader = (BaseRowItem)CurrentSection.Items.Where(p => p.GetType() == typeof(GroupHeader)).FirstOrDefault();
var sectionContainer = CreateContainerForSection(CurrentPage, pagePosition);
DataSource.Fill(groupHeader.Items,grouping.FirstOrDefault());
@ -105,7 +107,8 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -105,7 +107,8 @@ namespace ICSharpCode.Reporting.PageBuilder
//Childs
foreach (var child in grouping) {
var dataItems = CurrentSection.Items.Where(p => p.GetType() == typeof(BaseDataItem)).ToList();
// var dataItems = CurrentSection.Items.Where(p => p.GetType() == typeof(BaseDataItem)).ToList();
var dataItems = ExtractDataItems(CurrentSection.Items);
List<IExportColumn> convertedItems = FillAndConvert(sectionContainer, child, dataItems, converter);
AdjustLocationInSection(sectionPosition, convertedItems);
@ -130,6 +133,23 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -130,6 +133,23 @@ namespace ICSharpCode.Reporting.PageBuilder
}
List<IPrintableObject> ExtractDataItems (List<IPrintableObject> list) {
List<IPrintableObject> items = null;
foreach (var element in list) {
var gh = element as GroupHeader;
if (gh == null) {
var container = element as ReportContainer;
if (container == null) {
items = list.Where(p => p.GetType() == typeof(BaseDataItem)).ToList();
} else {
items = container.Items.Where(p => p.GetType() == typeof(BaseDataItem)).ToList();
}
}
}
return items;
}
void EvaluateExpressionsInGroups(ExportContainer sectionContainer, IGrouping<object, object> grouping){
ExpressionRunner.Visitor.SetCurrentDataSource(grouping);
ExpressionRunner.Visitor.Visit(sectionContainer);

5
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/PreviewViewModel.cs

@ -21,6 +21,7 @@ using System.Collections.ObjectModel; @@ -21,6 +21,7 @@ using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Windows.Documents;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
using ICSharpCode.Reporting.WpfReportViewer.Visitor;
@ -35,7 +36,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer @@ -35,7 +36,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer
FixedDocument document ;
public PreviewViewModel(ReportSettings reportSettings, Collection<ExportPage> pages)
public PreviewViewModel(IReportSettings reportSettings, Collection<ExportPage> pages)
{
if (pages == null)
throw new ArgumentNullException("pages");
@ -49,7 +50,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer @@ -49,7 +50,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer
this.Document = wpfExporter.Document;
}
static FixedDocument CreateFixedDocument(ReportSettings reportSettings)
static FixedDocument CreateFixedDocument(IReportSettings reportSettings)
{
var document = new FixedDocument();
document.DocumentPaginator.PageSize = new System.Windows.Size(reportSettings.PageSize.Width,

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

@ -110,7 +110,6 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -110,7 +110,6 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
if (circle != null) {
Visit(circle);
}
graphCanvas.Children.Add(UIElement);
}
return graphCanvas;
@ -126,23 +125,20 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -126,23 +125,20 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
var visual = new DrawingVisual();
using (var drawingContext = visual.RenderOpen()){
var desiredRect = new Rect(location,new Size(exportColumn.DesiredSize.Width,exportColumn.DesiredSize.Height));
var bachgroundRect = new Rect(location,new Size(exportColumn.DesiredSize.Width,formattedText.MaxTextHeight));
if (ShouldSetBackcolor(exportColumn)) {
drawingContext.DrawRectangle(FixedDocumentCreator.ConvertBrush(exportColumn.BackColor),
null,
desiredRect);
drawingContext.DrawRectangle(FixedDocumentCreator.ConvertBrush(exportColumn.BackColor), null,bachgroundRect);
}
drawingContext.DrawText(formattedText,location);
if (HasFrame(exportColumn)) {
desiredRect.Inflate(2,2);
var frameRect = new Rect(location,new Size(exportColumn.DesiredSize.Width,formattedText.Height));
var pen = FixedDocumentCreator.CreateWpfPen(exportColumn);
pen.Thickness = 2;
drawingContext.DrawRectangle(null, pen,desiredRect);
pen.Thickness = 1;
drawingContext.DrawRectangle(null, pen,
frameRect);
}
}
var drawingElement = new DrawingElement(visual);

57
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/DataSource/DataSourceFixture.cs

@ -130,7 +130,7 @@ namespace ICSharpCode.Reporting.Test.DataSource @@ -130,7 +130,7 @@ namespace ICSharpCode.Reporting.Test.DataSource
int i = 0;
foreach (var element in collectionSource.SortedList) {
collectionSource.Fill(ric,element);
Console.WriteLine("first : <{0}> Last <{1}> ",((BaseDataItem)ric[0]).DBValue,((BaseDataItem)ric[1]).DBValue);
// Console.WriteLine("first : <{0}> Last <{1}> ",((BaseDataItem)ric[0]).DBValue,((BaseDataItem)ric[1]).DBValue);
Assert.That(((BaseDataItem)ric[0]).DBValue,Is.GreaterThanOrEqualTo(compare));
@ -158,8 +158,7 @@ namespace ICSharpCode.Reporting.Test.DataSource @@ -158,8 +158,7 @@ namespace ICSharpCode.Reporting.Test.DataSource
var dataItemsCollection = CreateDataItems();
var reportsettings = new ReportSettings();
reportsettings.GroupColumnsCollection.Add( new GroupColumn("GroupItem",1,ListSortDirection.Ascending));
//repiortsettings.GroupColumnsCollection.Add( new GroupColumn("RandomInt",1,ListSortDirection.Ascending));
var collectionSource = new CollectionDataSource (list,reportsettings);
collectionSource.Bind();
int i = 0;
@ -168,10 +167,10 @@ namespace ICSharpCode.Reporting.Test.DataSource @@ -168,10 +167,10 @@ namespace ICSharpCode.Reporting.Test.DataSource
Console.WriteLine("Key {0} ",element.Key);
foreach (var l in element) {
collectionSource.Fill(dataItemsCollection,l);
Console.WriteLine("first : <{0}> Last <{1}> Group <{2}> Randomint <{3}>",((BaseDataItem)dataItemsCollection[0]).DBValue,
((BaseDataItem)dataItemsCollection[1]).DBValue,
((BaseDataItem)dataItemsCollection[2]).DBValue,
((BaseDataItem)dataItemsCollection[3]).DBValue);
// Console.WriteLine("first : <{0}> Last <{1}> Group <{2}> Randomint <{3}>",((BaseDataItem)dataItemsCollection[0]).DBValue,
// ((BaseDataItem)dataItemsCollection[1]).DBValue,
// ((BaseDataItem)dataItemsCollection[2]).DBValue,
// ((BaseDataItem)dataItemsCollection[3]).DBValue);
i++;
}
}
@ -188,7 +187,30 @@ namespace ICSharpCode.Reporting.Test.DataSource @@ -188,7 +187,30 @@ namespace ICSharpCode.Reporting.Test.DataSource
Assert.That(i,Is.EqualTo(collectionSource.Count));
}
[Test]
public void DataItemWithNoColumnNameHasErrorMessageInDbValue() {
var baseRow = new BaseRowItem();
var dataItem = new BaseDataItem() {
};
baseRow.Items.Add(dataItem);
var row = new System.Collections.Generic.List<IPrintableObject>();
row.Add(baseRow);
var reportSettings = new ReportSettings();
var collectionSource = new CollectionDataSource (list,reportSettings);
collectionSource.Bind();
foreach (var element in collectionSource.SortedList) {
collectionSource.Fill(row,element);
var r = (BaseRowItem)row[0];
foreach (var result in r.Items) {
Assert.That(((BaseDataItem)result).DBValue.StartsWith("Missing"),Is.EqualTo(true));
}
}
}
[Test]
public void FillDataIncludedInRow() {
@ -210,16 +232,6 @@ namespace ICSharpCode.Reporting.Test.DataSource @@ -210,16 +232,6 @@ namespace ICSharpCode.Reporting.Test.DataSource
}
i ++;
}
/*
do {
collectionSource.Fill(row);
var r = (BaseRowItem)row[0];
foreach (var element in r.Items) {
Assert.That(((BaseDataItem)element).DBValue,Is.Not.Empty);
}
i ++;
}while (collectionSource.MoveNext());
*/
Assert.That(i,Is.EqualTo(collectionSource.Count));
}
@ -255,15 +267,6 @@ namespace ICSharpCode.Reporting.Test.DataSource @@ -255,15 +267,6 @@ namespace ICSharpCode.Reporting.Test.DataSource
Assert.That(res.DBValue,Is.Not.Empty);
i ++;
}
/*
do {
collectionSource.Fill(row);
var res = (BaseDataItem)row.Find(c => ((BaseDataItem)c).ColumnName == "GroupItem");
Assert.That(res.DBValue,Is.Not.Empty);
i ++;
}while (collectionSource.MoveNext());
*/
Assert.That(i,Is.EqualTo(collectionSource.Count));
}

24
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Expressions/IntegrationTests/AggregatesGroupesFixture.cs

@ -33,7 +33,7 @@ namespace ICSharpCode.Reporting.Test.Expressions.IntegrationTests @@ -33,7 +33,7 @@ namespace ICSharpCode.Reporting.Test.Expressions.IntegrationTests
[TestFixture]
public class AggregatesGroupesFixture
{
Collection<ExportText> collection;
Collection<ExportText> reportItemCollection;
CollectionDataSource dataSource;
ContributorCollection list;
ReportSettings reportSettings;
@ -44,10 +44,10 @@ namespace ICSharpCode.Reporting.Test.Expressions.IntegrationTests @@ -44,10 +44,10 @@ namespace ICSharpCode.Reporting.Test.Expressions.IntegrationTests
var visitor = new ExpressionVisitor (reportSettings);
visitor.SetCurrentDataSource(dataSource.GroupedList);
var script = "= sum('randomint')";
collection[0].Text = script;
visitor.Visit(collection[0]);
reportItemCollection[0].Text = script;
visitor.Visit(reportItemCollection[0]);
var result = list.Sum(x => x.RandomInt);
Assert.That(Convert.ToDouble(collection[0].Text),Is.EqualTo(result));
Assert.That(Convert.ToDouble(reportItemCollection[0].Text),Is.EqualTo(result));
}
@ -57,8 +57,8 @@ namespace ICSharpCode.Reporting.Test.Expressions.IntegrationTests @@ -57,8 +57,8 @@ namespace ICSharpCode.Reporting.Test.Expressions.IntegrationTests
var container = new ExportContainer();
var script = "= sum('randomint')";
collection[0].Text = script;
container.ExportedItems.AddRange(collection);
reportItemCollection[0].Text = script;
container.ExportedItems.AddRange(reportItemCollection);
var visitor = new ExpressionVisitor (reportSettings);
visitor.SetCurrentDataSource(dataSource.GroupedList);
@ -68,33 +68,33 @@ namespace ICSharpCode.Reporting.Test.Expressions.IntegrationTests @@ -68,33 +68,33 @@ namespace ICSharpCode.Reporting.Test.Expressions.IntegrationTests
visitor.Visit(container);
var result = list.Where(k => k.GroupItem == group.Key.ToString()).Sum(x => x.RandomInt);
Assert.That(Convert.ToDouble(collection[0].Text),Is.EqualTo(result));
Assert.That(Convert.ToDouble(reportItemCollection[0].Text),Is.EqualTo(result));
}
[Test]
public void SumAllGroups () {
var container = new ExportContainer();
container.ExportedItems.AddRange(collection);
container.ExportedItems.AddRange(reportItemCollection);
var visitor = new ExpressionVisitor (reportSettings);
visitor.SetCurrentDataSource(dataSource.GroupedList);
foreach (var group in dataSource.GroupedList) {
var script = "= sum('randomint')";
collection[0].Text = script;
reportItemCollection[0].Text = script;
visitor.SetCurrentDataSource(group);
visitor.Visit(container);
var result = list.Where(k => k.GroupItem == group.Key.ToString()).Sum(x => x.RandomInt);
Assert.That(Convert.ToDouble(collection[0].Text),Is.EqualTo(result));
Assert.That(Convert.ToDouble(reportItemCollection[0].Text),Is.EqualTo(result));
}
}
[SetUp]
public void CreateExportlist() {
collection = new Collection<ExportText>();
collection.Add(new ExportText()
reportItemCollection = new Collection<ExportText>();
reportItemCollection.Add(new ExportText()
{
Text = String.Empty
});

10
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/MeasureArrange/ContainerArrangeStrategyFixture.cs

@ -73,7 +73,7 @@ namespace ICSharpCode.Reporting.Test.MeasureArrange @@ -73,7 +73,7 @@ namespace ICSharpCode.Reporting.Test.MeasureArrange
public void ContainerResizeIfItemCanGrow () {
var container = CreateContainer();
MakeCangGrow(container);
SetCanGrowToTrue(container);
Measure(container);
strategy.Arrange(container);
@ -85,9 +85,9 @@ namespace ICSharpCode.Reporting.Test.MeasureArrange @@ -85,9 +85,9 @@ namespace ICSharpCode.Reporting.Test.MeasureArrange
[Test]
public void ResizedContainerExeed5Points() {
public void ResizedContainerExeed20Points() {
var container = CreateContainer();
MakeCangGrow(container);
SetCanGrowToTrue(container);
Measure(container);
strategy.Arrange(container);
var containerRect = new Rectangle(container.Location,container.DesiredSize);
@ -95,7 +95,7 @@ namespace ICSharpCode.Reporting.Test.MeasureArrange @@ -95,7 +95,7 @@ namespace ICSharpCode.Reporting.Test.MeasureArrange
var arrangedRect = CreateItemRectangle(container);
Assert.That(containerRect.Bottom,Is.EqualTo(arrangedRect.Bottom + 5));
Assert.That(containerRect.Bottom,Is.EqualTo(arrangedRect.Bottom + 20));
}
@ -134,7 +134,7 @@ namespace ICSharpCode.Reporting.Test.MeasureArrange @@ -134,7 +134,7 @@ namespace ICSharpCode.Reporting.Test.MeasureArrange
}
static void MakeCangGrow(IExportContainer container)
static void SetCanGrowToTrue(IExportContainer container)
{
container.ExportedItems[0].Location = new Point(80, 10);
container.ExportedItems[0].Size = new Size(20, 70);

32
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/ReportItems/TextItemFixture.cs

@ -58,6 +58,34 @@ namespace ICSharpCode.Reporting.Test.ReportItems @@ -58,6 +58,34 @@ namespace ICSharpCode.Reporting.Test.ReportItems
Assert.That(exportText.Size,Is.EqualTo(ti.Size));
Assert.That(exportText.Font , Is.EqualTo(GlobalValues.DefaultFont));
}
}
[Test]
public void FormatTimeSpanfromTime() {
var ti = new BaseTextItem();
ti.DataType = "System.TimeSpan";
ti.FormatString = "hh:mm:ss";
ti.Text = new TimeSpan(7,17,20).ToString();
var exportColumn = (ExportText)ti.CreateExportColumn();
StandardFormatter.FormatOutput(exportColumn);
Assert.That(ti.Text, Is.EqualTo("07:17:20"));
}
/*
[Test]
public void FormatTimeSpanFromTicks() {
var ti = new BaseTextItem();
ti.DataType = "System.TimeSpan";
ti.FormatString = "hh:mm:ss";
var x = new TimeSpan(7,17,20);
var y = x.Ticks;
// ti.Text = x.ToString();
// TimeSpan myts = new TimeSpan(-555234423213113);
// ti.Text = myts.ToString();
ti.Text = y.ToString();
var exportColumn = (ExportText)ti.CreateExportColumn();
StandardFormatter.FormatOutput(exportColumn);
}
*/
}
}

Loading…
Cancel
Save