Browse Source

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

pull/690/head
jkuehner 10 years ago
parent
commit
2f7618f5a2
  1. 2
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 30
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs
  3. 27
      src/AddIns/Misc/PackageManagement/Project/Src/IOpenPackageReadMeMonitor.cs
  4. 7
      src/AddIns/Misc/PackageManagement/Project/Src/InstallPackageAction.cs
  5. 86
      src/AddIns/Misc/PackageManagement/Project/Src/OpenPackageReadmeMonitor.cs
  6. 5
      src/AddIns/Misc/PackageManagement/Project/Src/ProcessPackageAction.cs
  7. 7
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackageAction.cs
  8. 3
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  9. 2
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeFileService.cs
  10. 46
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableInstallPackageAction.cs
  11. 45
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatePackageAction.cs
  12. 72
      src/AddIns/Misc/PackageManagement/Test/Src/InstallPackageActionTests.cs
  13. 169
      src/AddIns/Misc/PackageManagement/Test/Src/OpenPackageReadmeMonitorTests.cs
  14. 72
      src/AddIns/Misc/PackageManagement/Test/Src/UpdatePackageActionTests.cs
  15. 4
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/ICSharpCode.Reporting.addin
  16. 25
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Commands/FormsCommands.cs
  17. 5
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Commands/ViewCommands.cs
  18. 18
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Globals/DesignerGlobals.cs
  19. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Globals/GlobalLists.cs
  20. 20
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs
  21. 19
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/MeasurementStrategy.cs
  22. 4
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/TextDrawer.cs
  23. 10
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataManager/Listhandling/CollectionDataSource.cs
  24. 6
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/ReflectionExtension.cs
  25. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/AbstractVisitor.cs
  26. 6
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/FormatVisitor.cs
  27. 68
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/StandardFormatter.cs
  28. 5
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportSettings.cs
  29. 7
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  30. 24
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs
  31. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfExporter.cs
  32. 18
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfHelper.cs
  33. 7
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfVisitor.cs
  34. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/PreviewViewModel.cs
  35. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/FixedDocumentCreator.cs
  36. 46
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/WpfVisitor.cs
  37. 2
      src/Automated.proj
  38. 4
      src/Libraries/NRefactory/ICSharpCode.NRefactory.Tests/CSharp/Resolver/UnaryOperatorTests.cs

2
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -153,6 +153,7 @@ @@ -153,6 +153,7 @@
<Compile Include="Src\ICodeGenerator.cs" />
<Compile Include="Src\IDocumentView.cs" />
<Compile Include="Src\InstalledPackagesViewModel.cs" />
<Compile Include="Src\IOpenPackageReadMeMonitor.cs" />
<Compile Include="Src\IPackageRepositoryFactoryEvents.cs" />
<Compile Include="Src\IPackageViewModelParent.cs" />
<Compile Include="Src\ISettingsProvider.cs" />
@ -230,6 +231,7 @@ @@ -230,6 +231,7 @@
<Compile Include="Src\NoPackageSourcesConfiguredException.cs" />
<Compile Include="Src\NuGetExePath.cs" />
<Compile Include="Src\NuGetPackageRestoreCommandLine.cs" />
<Compile Include="Src\OpenPackageReadMeMonitor.cs" />
<Compile Include="Src\PackageLicenseViewModel.cs" />
<Compile Include="Src\PackageManagementServiceProvider.cs" />
<Compile Include="Src\IPackageRepositoryExtensions.cs" />

30
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs

@ -43,6 +43,21 @@ namespace ICSharpCode.PackageManagement.Design @@ -43,6 +43,21 @@ namespace ICSharpCode.PackageManagement.Design
ConstraintProvider = NullConstraintProvider.Instance;
TargetFramework = new FrameworkName(".NETFramework", new Version("4.0"));
InstallPackageAction = (package, installAction) => {
PackagePassedToInstallPackage = package;
PackageOperationsPassedToInstallPackage = installAction.Operations;
IgnoreDependenciesPassedToInstallPackage = installAction.IgnoreDependencies;
AllowPrereleaseVersionsPassedToInstallPackage = installAction.AllowPrereleaseVersions;
};
UpdatePackageAction = (package, updateAction) => {
PackagePassedToUpdatePackage = package;
PackageOperationsPassedToUpdatePackage = updateAction.Operations;
UpdateDependenciesPassedToUpdatePackage = updateAction.UpdateDependencies;
AllowPrereleaseVersionsPassedToUpdatePackage = updateAction.AllowPrereleaseVersions;
IsUpdatePackageCalled = true;
};
}
private FakeInstallPackageAction FakeInstallPackageAction;
@ -99,12 +114,11 @@ namespace ICSharpCode.PackageManagement.Design @@ -99,12 +114,11 @@ namespace ICSharpCode.PackageManagement.Design
public bool IgnoreDependenciesPassedToInstallPackage;
public bool AllowPrereleaseVersionsPassedToInstallPackage;
public Action<IPackage, InstallPackageAction> InstallPackageAction;
public void InstallPackage(IPackage package, InstallPackageAction installAction)
{
PackagePassedToInstallPackage = package;
PackageOperationsPassedToInstallPackage = installAction.Operations;
IgnoreDependenciesPassedToInstallPackage = installAction.IgnoreDependencies;
AllowPrereleaseVersionsPassedToInstallPackage = installAction.AllowPrereleaseVersions;
InstallPackageAction(package, installAction);
}
public FakePackageOperation AddFakeInstallOperation()
@ -148,13 +162,11 @@ namespace ICSharpCode.PackageManagement.Design @@ -148,13 +162,11 @@ namespace ICSharpCode.PackageManagement.Design
public void UpdatePackage(IPackage package, UpdatePackageAction updateAction)
{
PackagePassedToUpdatePackage = package;
PackageOperationsPassedToUpdatePackage = updateAction.Operations;
UpdateDependenciesPassedToUpdatePackage = updateAction.UpdateDependencies;
AllowPrereleaseVersionsPassedToUpdatePackage = updateAction.AllowPrereleaseVersions;
IsUpdatePackageCalled = true;
UpdatePackageAction(package, updateAction);
}
public Action<IPackage, UpdatePackageAction> UpdatePackageAction;
public FakeInstallPackageAction LastInstallPackageCreated;
public virtual InstallPackageAction CreateInstallPackageAction()

27
src/AddIns/Misc/PackageManagement/Project/Src/IOpenPackageReadMeMonitor.cs

@ -0,0 +1,27 @@ @@ -0,0 +1,27 @@
// Copyright (c) 2015 AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
// to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
namespace ICSharpCode.PackageManagement
{
public interface IOpenPackageReadMeMonitor : IDisposable
{
void OpenReadMeFile();
}
}

7
src/AddIns/Misc/PackageManagement/Project/Src/InstallPackageAction.cs

@ -42,8 +42,11 @@ namespace ICSharpCode.PackageManagement @@ -42,8 +42,11 @@ namespace ICSharpCode.PackageManagement
protected override void ExecuteCore()
{
Project.InstallPackage(Package, this);
OnParentPackageInstalled();
using (IOpenPackageReadMeMonitor monitor = CreateOpenPackageReadMeMonitor(Package.Id)) {
Project.InstallPackage(Package, this);
monitor.OpenReadMeFile();
OnParentPackageInstalled();
}
}
}
}

86
src/AddIns/Misc/PackageManagement/Project/Src/OpenPackageReadmeMonitor.cs

@ -0,0 +1,86 @@ @@ -0,0 +1,86 @@
// Copyright (c) 2015 AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
// to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
using System.IO;
using System.Linq;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class OpenPackageReadMeMonitor : IOpenPackageReadMeMonitor
{
IPackageManagementProject project;
IPackageManagementFileService fileService;
public OpenPackageReadMeMonitor(string packageId, IPackageManagementProject project)
: this(packageId, project, new PackageManagementFileService())
{
}
public OpenPackageReadMeMonitor(
string packageId,
IPackageManagementProject project,
IPackageManagementFileService fileService)
{
PackageId = packageId;
this.project = project;
this.fileService = fileService;
project.PackageInstalled += PackageInstalled;
}
public string PackageId { get; private set; }
public bool IsDisposed { get; private set; }
string ReadMeFile { get; set; }
public void Dispose()
{
if (IsDisposed) {
return;
}
IsDisposed = true;
project.PackageInstalled -= PackageInstalled;
}
void PackageInstalled(object sender, PackageOperationEventArgs e)
{
if (e.Package.Id != PackageId) {
return;
}
ReadMeFile = FindReadMeFileInPackage(e.InstallPath, e.Package);
}
string FindReadMeFileInPackage(string installPath, IPackage package)
{
return package.GetFiles()
.Where(file => "readme.txt".Equals(file.Path, StringComparison.OrdinalIgnoreCase))
.Select(file => Path.Combine(installPath, file.Path))
.FirstOrDefault();
}
public void OpenReadMeFile()
{
if ((ReadMeFile != null) && fileService.FileExists(ReadMeFile)) {
fileService.OpenFile(ReadMeFile);
}
}
}
}

5
src/AddIns/Misc/PackageManagement/Project/Src/ProcessPackageAction.cs

@ -161,5 +161,10 @@ namespace ICSharpCode.PackageManagement @@ -161,5 +161,10 @@ namespace ICSharpCode.PackageManagement
}
return PackageId;
}
protected virtual IOpenPackageReadMeMonitor CreateOpenPackageReadMeMonitor(string packageId)
{
return new OpenPackageReadMeMonitor(packageId, Project);
}
}
}

7
src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackageAction.cs

@ -47,8 +47,11 @@ namespace ICSharpCode.PackageManagement @@ -47,8 +47,11 @@ namespace ICSharpCode.PackageManagement
protected override void ExecuteCore()
{
if (ShouldUpdatePackage()) {
Project.UpdatePackage(Package, this);
OnParentPackageInstalled();
using (IOpenPackageReadMeMonitor monitor = CreateOpenPackageReadMeMonitor(Package.Id)) {
Project.UpdatePackage(Package, this);
monitor.OpenReadMeFile();
OnParentPackageInstalled();
}
}
}

3
src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj

@ -123,11 +123,13 @@ @@ -123,11 +123,13 @@
<Compile Include="Src\Helpers\SelectedProjectCollectionAssert.cs" />
<Compile Include="Src\Helpers\SolutionHelper.cs" />
<Compile Include="Src\Helpers\TestableInstalledPackageViewModel.cs" />
<Compile Include="Src\Helpers\TestableInstallPackageAction.cs" />
<Compile Include="Src\Helpers\TestablePackageFromRepository.cs" />
<Compile Include="Src\Helpers\TestablePackagesViewModels.cs" />
<Compile Include="Src\Helpers\TestableProjectBehaviour.cs" />
<Compile Include="Src\Helpers\TestableSelectedProjectsForUpdatedPackages.cs" />
<Compile Include="Src\Helpers\TestableSolutionSnapshot.cs" />
<Compile Include="Src\Helpers\TestableUpdatePackageAction.cs" />
<Compile Include="Src\Helpers\TestableUpdatePackagesAction.cs" />
<Compile Include="Src\Helpers\TestableUpdateSolutionPackagesAction.cs" />
<Compile Include="Src\Helpers\TestPackageHelper.cs" />
@ -190,6 +192,7 @@ @@ -190,6 +192,7 @@
<Compile Include="Src\ManagePackagesUserPromptsTests.cs" />
<Compile Include="Src\NuGetPackageRestoreCommandLineTests.cs" />
<Compile Include="Src\OpenMSBuildProjectsTests.cs" />
<Compile Include="Src\OpenPackageReadMeMonitorTests.cs" />
<Compile Include="Src\PackageManagementServiceProviderTests.cs" />
<Compile Include="Src\PackageViewModelOperationLoggerTests.cs" />
<Compile Include="Src\ReducedPackageOperationsTests.cs" />

2
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeFileService.cs

@ -64,9 +64,11 @@ namespace PackageManagement.Tests.Helpers @@ -64,9 +64,11 @@ namespace PackageManagement.Tests.Helpers
}
public string FileNamePassedToOpenFile;
public bool IsOpenFileCalled;
public void OpenFile(string fileName)
{
IsOpenFileCalled = true;
FileNamePassedToOpenFile = fileName;
}

46
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableInstallPackageAction.cs

@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
// Copyright (c) 2015 AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
// to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
using ICSharpCode.PackageManagement;
namespace PackageManagement.Tests.Helpers
{
public class TestableInstallPackageAction : InstallPackageAction
{
public TestableInstallPackageAction(
IPackageManagementProject project,
IPackageManagementEvents packageManagementEvents)
: base(project, packageManagementEvents)
{
CreateOpenPackageReadMeMonitorAction = packageId => {
IOpenPackageReadMeMonitor monitor = base.CreateOpenPackageReadMeMonitor(packageId);
OpenPackageReadMeMonitor = monitor as OpenPackageReadMeMonitor;
return monitor;
};
}
public OpenPackageReadMeMonitor OpenPackageReadMeMonitor;
public Func<string, IOpenPackageReadMeMonitor> CreateOpenPackageReadMeMonitorAction;
protected override IOpenPackageReadMeMonitor CreateOpenPackageReadMeMonitor(string packageId)
{
return CreateOpenPackageReadMeMonitorAction(packageId);
}
}
}

45
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatePackageAction.cs

@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
// Copyright (c) 2015 AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
// to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
using ICSharpCode.PackageManagement;
namespace PackageManagement.Tests.Helpers
{
public class TestableUpdatePackageAction : UpdatePackageAction
{
public TestableUpdatePackageAction(
IPackageManagementProject project,
IPackageManagementEvents packageManagementEvents)
: base(project, packageManagementEvents)
{
CreateOpenPackageReadMeMonitorAction = packageId => {
OpenPackageReadMeMonitor = base.CreateOpenPackageReadMeMonitor(packageId) as OpenPackageReadMeMonitor;
return OpenPackageReadMeMonitor;
};
}
public OpenPackageReadMeMonitor OpenPackageReadMeMonitor;
public Func<string, IOpenPackageReadMeMonitor> CreateOpenPackageReadMeMonitorAction;
protected override IOpenPackageReadMeMonitor CreateOpenPackageReadMeMonitor(string packageId)
{
return CreateOpenPackageReadMeMonitorAction(packageId);
}
}
}

72
src/AddIns/Misc/PackageManagement/Test/Src/InstallPackageActionTests.cs

@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
@ -31,14 +32,15 @@ namespace PackageManagement.Tests @@ -31,14 +32,15 @@ namespace PackageManagement.Tests
{
FakePackageManagementEvents fakePackageManagementEvents;
FakePackageManagementProject fakeProject;
InstallPackageAction action;
TestableInstallPackageAction action;
InstallPackageHelper installPackageHelper;
FakeFileService fileService;
void CreateAction()
{
fakePackageManagementEvents = new FakePackageManagementEvents();
fakeProject = new FakePackageManagementProject();
action = new InstallPackageAction(fakeProject, fakePackageManagementEvents);
action = new TestableInstallPackageAction(fakeProject, fakePackageManagementEvents);
installPackageHelper = new InstallPackageHelper(action);
}
@ -53,6 +55,12 @@ namespace PackageManagement.Tests @@ -53,6 +55,12 @@ namespace PackageManagement.Tests
PackageOperationHelper.CreateListWithOneInstallOperationWithFile(fileName);
}
IOpenPackageReadMeMonitor CreateReadMeMonitor(string packageId)
{
fileService = new FakeFileService(null);
return new OpenPackageReadMeMonitor(packageId, fakeProject, fileService);
}
[Test]
public void Execute_PackageIsSet_InstallsPackageIntoProject()
{
@ -416,5 +424,65 @@ namespace PackageManagement.Tests @@ -416,5 +424,65 @@ namespace PackageManagement.Tests
Assert.AreEqual("Unable to find package 'UnknownId'.", ex.Message);
}
[Test]
public void Execute_PackageInstalledSuccessfully_OpenPackageReadmeMonitorCreated()
{
CreateAction();
installPackageHelper.TestPackage.Id = "Test";
installPackageHelper.InstallTestPackage();
Assert.AreEqual("Test", action.OpenPackageReadMeMonitor.PackageId);
Assert.IsTrue(action.OpenPackageReadMeMonitor.IsDisposed);
}
[Test]
public void Execute_PackageInstalledSuccessfullyWithReadmeTxt_ReadmeTxtFileIsOpened()
{
CreateAction();
installPackageHelper.TestPackage.Id = "Test";
installPackageHelper.TestPackage.AddFile("readme.txt");
action.CreateOpenPackageReadMeMonitorAction = packageId => {
return CreateReadMeMonitor(packageId);
};
string installPath = @"d:\projects\myproject\packages\Test.1.0";
string readmeFileName = Path.Combine(installPath, "readme.txt");
fakeProject.InstallPackageAction = (package, installAction) => {
var eventArgs = new PackageOperationEventArgs(package, null, installPath);
fakeProject.FirePackageInstalledEvent(eventArgs);
fileService.ExistingFileNames.Add(readmeFileName);
};
installPackageHelper.InstallTestPackage ();
Assert.IsTrue(fileService.IsOpenFileCalled);
Assert.AreEqual(readmeFileName, fileService.FileNamePassedToOpenFile);
}
[Test]
public void Execute_PackageWithReadmeTxtIsInstalledButExceptionThrownWhenAddingPackageToProject_ReadmeFileIsNotOpened()
{
CreateAction();
installPackageHelper.TestPackage.Id = "Test";
installPackageHelper.TestPackage.AddFile("readme.txt");
OpenPackageReadMeMonitor monitor = null;
action.CreateOpenPackageReadMeMonitorAction = packageId => {
monitor = CreateReadMeMonitor(packageId) as OpenPackageReadMeMonitor;
return monitor;
};
string installPath = @"d:\projects\myproject\packages\Test.1.0";
string readmeFileName = Path.Combine(installPath, "readme.txt");
fakeProject.InstallPackageAction = (package, installAction) => {
var eventArgs = new PackageOperationEventArgs(package, null, installPath);
fakeProject.FirePackageInstalledEvent(eventArgs);
fileService.ExistingFileNames.Add(readmeFileName);
throw new ApplicationException();
};
Assert.Throws<ApplicationException> (() => {
installPackageHelper.InstallTestPackage ();
});
Assert.IsFalse(fileService.IsOpenFileCalled);
Assert.IsTrue(monitor.IsDisposed);
}
}
}

169
src/AddIns/Misc/PackageManagement/Test/Src/OpenPackageReadmeMonitorTests.cs

@ -0,0 +1,169 @@ @@ -0,0 +1,169 @@
// Copyright (c) 2015 AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
// to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
using System.IO;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
namespace PackageManagement.Tests
{
[TestFixture]
public class OpenPackageReadMeMonitorTests
{
FakeFileService fileService;
FakePackageManagementProject project;
OpenPackageReadMeMonitor CreateMonitor(string packageId)
{
fileService = new FakeFileService(null);
project = new FakePackageManagementProject();
return new OpenPackageReadMeMonitor(packageId, project, fileService);
}
FakePackage CreatePackageWithFile(string packageId, string fileName)
{
var package = new FakePackage(packageId);
package.AddFile(fileName);
return package;
}
PackageOperationEventArgs CreatePackageInstallEventWithFile(string installPath, IPackage package)
{
return new PackageOperationEventArgs(package, null, installPath);
}
[Test]
public void OpenReadMeFile_PackageInstalledWithReadmeTxt_ReadmeTxtIsOpened()
{
const string installPath = @"d:\projects\myproject\packages\Test.1.2.0";
string expectedFileOpened = Path.Combine(installPath, "readme.txt");
using (OpenPackageReadMeMonitor monitor = CreateMonitor("Test")) {
fileService.ExistingFileNames.Add(expectedFileOpened);
FakePackage package = CreatePackageWithFile("Test", "readme.txt");
PackageOperationEventArgs e = CreatePackageInstallEventWithFile(installPath, package);
project.FirePackageInstalledEvent(e);
monitor.OpenReadMeFile();
}
Assert.AreEqual(expectedFileOpened, fileService.FileNamePassedToOpenFile);
}
[Test]
public void Dispose_PackageInstalledWithReadmeTxtButOpenReadMeFileMethodIsNotCalled_ReadmeTxtIsNotOpened()
{
const string installPath = @"d:\projects\myproject\packages\Test.1.2.0";
string expectedFileOpened = Path.Combine(installPath, "readme.txt");
using (OpenPackageReadMeMonitor monitor = CreateMonitor("Test")) {
fileService.ExistingFileNames.Add(expectedFileOpened);
FakePackage package = CreatePackageWithFile("Test", "readme.txt");
PackageOperationEventArgs e = CreatePackageInstallEventWithFile(installPath, package);
project.FirePackageInstalledEvent(e);
}
Assert.IsFalse(fileService.IsOpenFileCalled);
}
[Test]
public void OpenReadMeFile_PackageDependencyIsInstalledWithReadmeTxt_ReadmeTxtIsNotOpened()
{
const string installPath = @"d:\projects\myproject\packages\Test.Dependency.1.2.0";
string expectedFileOpened = Path.Combine(installPath, "readme.txt");
using (OpenPackageReadMeMonitor monitor = CreateMonitor("Test")) {
fileService.ExistingFileNames.Add(expectedFileOpened);
FakePackage package = CreatePackageWithFile("Test.Dependency", "readme.txt");
PackageOperationEventArgs e = CreatePackageInstallEventWithFile(installPath, package);
project.FirePackageInstalledEvent(e);
monitor.OpenReadMeFile();
}
Assert.IsFalse(fileService.IsOpenFileCalled);
}
[Test]
public void OpenReadMeFile_PackageInstalledWithoutReadmeTxt_ReadmeTxtIsNotOpened()
{
const string installPath = @"d:\projects\myproject\packages\Test.1.2.0";
string expectedFileOpened = Path.Combine(installPath, "readme.txt");
using (OpenPackageReadMeMonitor monitor = CreateMonitor("Test")) {
fileService.ExistingFileNames.Add(expectedFileOpened);
var package = new FakePackage("Test");
PackageOperationEventArgs e = CreatePackageInstallEventWithFile(installPath, package);
project.FirePackageInstalledEvent(e);
monitor.OpenReadMeFile();
}
Assert.IsFalse(fileService.IsOpenFileCalled);
}
[Test]
public void OpenReadMeFile_PackageDependencyIsInstalledWithReadmeTxtWithDifferentCase_ReadmeTxtIsOpened()
{
const string installPath = @"d:\projects\myproject\packages\Test.1.2.0";
string expectedFileOpened = Path.Combine(installPath, "ReadMe.TXT");
using (OpenPackageReadMeMonitor monitor = CreateMonitor("Test")) {
fileService.ExistingFileNames.Add(expectedFileOpened);
FakePackage package = CreatePackageWithFile("Test", "ReadMe.TXT");
PackageOperationEventArgs e = CreatePackageInstallEventWithFile(installPath, package);
project.FirePackageInstalledEvent(e);
monitor.OpenReadMeFile();
}
Assert.AreEqual(expectedFileOpened, fileService.FileNamePassedToOpenFile);
}
[Test]
public void OpenReadMeFile_PackageInstalledWithReadmeTxtButFileDoesNotExistOnFileSystem_ReadmeTxtIsNotOpened()
{
const string installPath = @"d:\projects\myproject\packages\Test.1.2.0";
string readmeFileName = Path.Combine(installPath, "readme.txt");
using (OpenPackageReadMeMonitor monitor = CreateMonitor("Test")) {
FakePackage package = CreatePackageWithFile("Test", "readme.txt");
PackageOperationEventArgs e = CreatePackageInstallEventWithFile(installPath, package);
project.FirePackageInstalledEvent(e);
monitor.OpenReadMeFile();
}
Assert.IsFalse(fileService.IsOpenFileCalled);
}
[Test]
public void Constructor_PackageDependencyIsInstalledWithReadmeTxt_ReadmeTxtIsNotOpenedUntilOpenReadMeFileMethodIsCalled()
{
const string installPath = @"d:\projects\myproject\packages\Test.1.2.0";
string expectedFileOpened = Path.Combine(installPath, "ReadMe.TXT");
OpenPackageReadMeMonitor monitor = CreateMonitor("Test");
fileService.ExistingFileNames.Add(expectedFileOpened);
FakePackage package = CreatePackageWithFile("Test", "ReadMe.TXT");
PackageOperationEventArgs e = CreatePackageInstallEventWithFile(installPath, package);
project.FirePackageInstalledEvent(e);
Assert.IsFalse(fileService.IsOpenFileCalled);
}
}
}

72
src/AddIns/Misc/PackageManagement/Test/Src/UpdatePackageActionTests.cs

@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
@ -29,16 +30,17 @@ namespace PackageManagement.Tests @@ -29,16 +30,17 @@ namespace PackageManagement.Tests
[TestFixture]
public class UpdatePackageActionTests
{
UpdatePackageAction action;
TestableUpdatePackageAction action;
FakePackageManagementEvents fakePackageManagementEvents;
FakePackageManagementProject fakeProject;
UpdatePackageHelper updatePackageHelper;
FakeFileService fileService;
void CreateSolution()
{
fakePackageManagementEvents = new FakePackageManagementEvents();
fakeProject = new FakePackageManagementProject();
action = new UpdatePackageAction(fakeProject, fakePackageManagementEvents);
action = new TestableUpdatePackageAction(fakeProject, fakePackageManagementEvents);
updatePackageHelper = new UpdatePackageHelper(action);
}
@ -54,6 +56,12 @@ namespace PackageManagement.Tests @@ -54,6 +56,12 @@ namespace PackageManagement.Tests
action.Operations = operations;
}
IOpenPackageReadMeMonitor CreateReadMeMonitor (string packageId)
{
fileService = new FakeFileService(null);
return new OpenPackageReadMeMonitor(packageId, fakeProject, fileService);
}
[Test]
public void Execute_PackageAndRepositoryPassed_PackageIsUpdated()
{
@ -378,5 +386,65 @@ namespace PackageManagement.Tests @@ -378,5 +386,65 @@ namespace PackageManagement.Tests
Assert.AreEqual (packageVersion2, fakeProject.PackagePassedToUpdatePackage);
}
[Test]
public void Execute_PackageUpdatedSuccessfully_OpenPackageReadmeMonitorCreated()
{
CreateSolution();
updatePackageHelper.TestPackage.Id = "Test";
updatePackageHelper.UpdateTestPackage();
Assert.AreEqual("Test", action.OpenPackageReadMeMonitor.PackageId);
Assert.IsTrue(action.OpenPackageReadMeMonitor.IsDisposed);
}
[Test]
public void Execute_PackageInstalledSuccessfullyWithReadmeTxt_ReadmeTxtFileIsOpened()
{
CreateSolution();
updatePackageHelper.TestPackage.Id = "Test";
updatePackageHelper.TestPackage.AddFile("readme.txt");
action.CreateOpenPackageReadMeMonitorAction = packageId => {
return CreateReadMeMonitor(packageId);
};
string installPath = @"d:\projects\myproject\packages\Test.1.0";
string readmeFileName = Path.Combine(installPath, "readme.txt");
fakeProject.UpdatePackageAction = (package, updateAction) => {
var eventArgs = new PackageOperationEventArgs(package, null, installPath);
fakeProject.FirePackageInstalledEvent(eventArgs);
fileService.ExistingFileNames.Add(readmeFileName);
};
updatePackageHelper.UpdateTestPackage();
Assert.IsTrue(fileService.IsOpenFileCalled);
Assert.AreEqual(readmeFileName, fileService.FileNamePassedToOpenFile);
}
[Test]
public void Execute_PackageWithReadmeTxtIsInstalledButExceptionThrownWhenAddingPackageToProject_ReadmeFileIsNotOpened()
{
CreateSolution();
updatePackageHelper.TestPackage.Id = "Test";
updatePackageHelper.TestPackage.AddFile("readme.txt");
OpenPackageReadMeMonitor monitor = null;
action.CreateOpenPackageReadMeMonitorAction = packageId => {
monitor = CreateReadMeMonitor(packageId) as OpenPackageReadMeMonitor;
return monitor;
};
string installPath = @"d:\projects\myproject\packages\Test.1.0";
string readmeFileName = Path.Combine(installPath, "readme.txt");
fakeProject.UpdatePackageAction = (package, updateAction) => {
var eventArgs = new PackageOperationEventArgs(package, null, installPath);
fakeProject.FirePackageInstalledEvent(eventArgs);
fileService.ExistingFileNames.Add(readmeFileName);
throw new ApplicationException();
};
Assert.Throws<ApplicationException>(() => {
updatePackageHelper.UpdateTestPackage();
});
Assert.IsFalse(fileService.IsOpenFileCalled);
Assert.IsTrue(monitor.IsDisposed);
}
}
}

4
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/ICSharpCode.Reporting.addin

@ -111,7 +111,9 @@ @@ -111,7 +111,9 @@
<Path name="/SharpDevelop/ReportDesigner/ContextMenus/SelectionMenu">
<MenuItem id="ViewCode" label="${res:SharpDevelop.FormsDesigner.ContextMenus.ViewCodeCommand}" icon="Icons.16x16.FormsDesigner.ViewCode" class="ICSharpCode.Reporting.Addin.Commands.ViewCode" />
<MenuItem id="ViewCode" label="${res:SharpDevelop.FormsDesigner.ContextMenus.ViewCodeCommand}"
icon="Icons.16x16.FormsDesigner.ViewCode"
class="ICSharpCode.Reporting.Addin.Commands.ViewCode" />
<!-- <MenuItem id="ShowProperties" label="${res:XML.MainMenu.FormatMenu.ShowProperties}" icon="Icons.16x16.Property" class="ICSharpCode.Reports.Addin.Commands.ShowProperties" />-->

25
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Commands/FormsCommands.cs

@ -10,7 +10,6 @@ using System; @@ -10,7 +10,6 @@ using System;
using System.ComponentModel.Design;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.Reporting.Addin.Views;
namespace ICSharpCode.Reporting.Addin.Commands
@ -19,16 +18,16 @@ namespace ICSharpCode.Reporting.Addin.Commands @@ -19,16 +18,16 @@ namespace ICSharpCode.Reporting.Addin.Commands
/// Description of FormsCommands.
/// </summary>
public abstract class AbstractFormsDesignerCommand : AbstractMenuCommand
{
public abstract class AbstractFormsDesignerCommand : AbstractMenuCommand{
public abstract CommandID CommandID {
get;
}
protected virtual bool CanExecuteCommand(IDesignerHost host)
{
return true;
}
{return true;}
protected static DesignerView ReportDesigner {
get {
@ -41,8 +40,7 @@ namespace ICSharpCode.Reporting.Addin.Commands @@ -41,8 +40,7 @@ namespace ICSharpCode.Reporting.Addin.Commands
}
public override void Run()
{
public override void Run(){
var formDesigner = ReportDesigner;
if (formDesigner != null && CanExecuteCommand(formDesigner.Host)) {
var menuCommandService = (IMenuCommandService)formDesigner.Host.GetService(typeof(IMenuCommandService));
@ -50,8 +48,7 @@ namespace ICSharpCode.Reporting.Addin.Commands @@ -50,8 +48,7 @@ namespace ICSharpCode.Reporting.Addin.Commands
}
}
internal virtual void CommandCallBack(object sender, EventArgs e)
{
internal virtual void CommandCallBack(object sender, EventArgs e){
Run();
}
}
@ -61,14 +58,10 @@ namespace ICSharpCode.Reporting.Addin.Commands @@ -61,14 +58,10 @@ namespace ICSharpCode.Reporting.Addin.Commands
public class ViewCode : AbstractFormsDesignerCommand
{
public override CommandID CommandID {
get {
return StandardCommands.ViewCode;
}
get {return StandardCommands.ViewCode;}
}
public override void Run()
{
// var window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow;
public override void Run(){
var window = SD.Workbench;
if (window == null) {
return;

5
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Commands/ViewCommands.cs

@ -17,8 +17,8 @@ namespace ICSharpCode.Reporting.Addin.Commands @@ -17,8 +17,8 @@ namespace ICSharpCode.Reporting.Addin.Commands
/// <summary>
/// Description of ViewCommands.
/// </summary>
public class CreateDesignerCommand : AbstractMenuCommand
{
public class CreateDesignerCommand : AbstractMenuCommand{
readonly OpenedFile openedFile;
public CreateDesignerCommand (OpenedFile openedFile) {
@ -29,7 +29,6 @@ namespace ICSharpCode.Reporting.Addin.Commands @@ -29,7 +29,6 @@ namespace ICSharpCode.Reporting.Addin.Commands
public override void Run(){
var generator = new DesignerGenerator();
DesignerView = new DesignerView(openedFile, generator);
}

18
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Globals/DesignerGlobals.cs

@ -29,23 +29,5 @@ namespace ICSharpCode.Reporting.Addin.Globals @@ -29,23 +29,5 @@ namespace ICSharpCode.Reporting.Addin.Globals
public static int GabBetweenSection{
get {return 15;}
}
/*
public static void DrawString(Graphics graphics,string text,
Font font,Brush brush,
RectangleF rectangle,
StringFormat format)
{
if (graphics == null) {
throw new ArgumentNullException("graphics");
}
graphics.DrawString(text,
font,
brush,
rectangle,
format);
}
*/
}
}

3
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Globals/GlobalLists.cs

@ -17,8 +17,7 @@ namespace ICSharpCode.Reporting.Addin.Globals @@ -17,8 +17,7 @@ namespace ICSharpCode.Reporting.Addin.Globals
{
#region DataTypes
public static string[] DataTypeList ()
{
public static string[] DataTypeList (){
return (string[])dataTypeList.Clone();
}

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

@ -17,7 +17,6 @@ @@ -17,7 +17,6 @@
// DEALINGS IN THE SOFTWARE.
using System;
using System.Collections;
using System.Drawing;
using System.Linq;
using System.Collections.Generic;
@ -29,14 +28,12 @@ namespace ICSharpCode.Reporting.Arrange @@ -29,14 +28,12 @@ namespace ICSharpCode.Reporting.Arrange
/// Description of ArrangeStrategy.
/// </summary>
///
public interface IArrangeStrategy
{
public interface IArrangeStrategy{
void Arrange(IExportColumn exportColumn);
}
internal class ContainerArrangeStrategy:IArrangeStrategy
{
class ContainerArrangeStrategy:IArrangeStrategy{
public void Arrange(IExportColumn exportColumn){
if (exportColumn == null)
@ -54,8 +51,8 @@ namespace ICSharpCode.Reporting.Arrange @@ -54,8 +51,8 @@ namespace ICSharpCode.Reporting.Arrange
}
static Size ArrangeInternal(IExportContainer container)
{
static Size ArrangeInternal(IExportContainer container){
var containerRectangle = container.DisplayRectangle;
Rectangle elementRectangle = Rectangle.Empty;
foreach (var element in container.ExportedItems) {
@ -90,15 +87,14 @@ namespace ICSharpCode.Reporting.Arrange @@ -90,15 +87,14 @@ namespace ICSharpCode.Reporting.Arrange
}
static List<IExportColumn> CreateCanGrowList(IExportContainer container)
{
var l1 = new List<IExportColumn>();
static List<IExportColumn> CreateCanGrowList(IExportContainer container){
var canGrowList = new List<IExportColumn>();
foreach (var element in container.Descendents()) {
if (element.CanGrow) {
l1.Add(element);
canGrowList.Add(element);
}
}
return l1;
return canGrowList;
}
}

19
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/MeasurementStrategy.cs

@ -27,19 +27,16 @@ namespace ICSharpCode.Reporting.Arrange @@ -27,19 +27,16 @@ namespace ICSharpCode.Reporting.Arrange
/// <summary>
/// Description of ArrangeStrategy.
/// </summary>
public interface IMeasurementStrategy
{
public interface IMeasurementStrategy{
Size Measure(IExportColumn exportColumn,Graphics graphics);
}
class ContainerMeasurementStrategy:IMeasurementStrategy
{
class ContainerMeasurementStrategy:IMeasurementStrategy{
public Size Measure(IExportColumn exportColumn,Graphics graphics){
public Size Measure(IExportColumn exportColumn,Graphics graphics)
{
var items = ((ExportContainer)exportColumn).ExportedItems;
foreach (var element in items) {
if (element is IExportContainer) {
Measure(element,graphics);
@ -55,11 +52,9 @@ namespace ICSharpCode.Reporting.Arrange @@ -55,11 +52,9 @@ namespace ICSharpCode.Reporting.Arrange
}
class TextBasedMeasurementStrategy:IMeasurementStrategy
{
public Size Measure(IExportColumn exportColumn, Graphics graphics)
{
class TextBasedMeasurementStrategy:IMeasurementStrategy{
public Size Measure(IExportColumn exportColumn, Graphics graphics){
return MeasurementService.Measure((IExportText)exportColumn,graphics);
}
}

4
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/TextDrawer.cs

@ -34,7 +34,8 @@ namespace ICSharpCode.Reporting.BaseClasses @@ -34,7 +34,8 @@ namespace ICSharpCode.Reporting.BaseClasses
format);
}
// http://stackoverflow.com/questions/14932063/convert-code-of-a-user-control-from-vb-net-to-c-sharp
//https://mightycoco.wordpress.com/2009/09/22/getstringformatfromcontentallignment-converting-contentallignment-data-into-stringformat-data/
public static StringFormat BuildStringFormat(StringTrimming stringTrimming,TextAlignment alignment){
StringFormat format = StringFormat.GenericTypographic;
format.Trimming = stringTrimming;
@ -65,6 +66,7 @@ namespace ICSharpCode.Reporting.BaseClasses @@ -65,6 +66,7 @@ namespace ICSharpCode.Reporting.BaseClasses
}
return format;
}
/*
public static StringFormat BuildStringFormat(StringTrimming stringTrimming,ContentAlignment alignment)

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

@ -191,8 +191,14 @@ namespace ICSharpCode.Reporting.DataManager.Listhandling @@ -191,8 +191,14 @@ namespace ICSharpCode.Reporting.DataManager.Listhandling
string ReadValueFromProperty (string columnName) {
var propertyPath = Current.ParsePropertyPath(columnName);
var val = propertyPath.Evaluate(Current);
return val.ToString();
try {
var val = propertyPath.Evaluate(Current);
return val.ToString();
} catch (Exception e) {
Console.WriteLine(" Cant' find <{0}",columnName);
// throw e;
}
return String.Empty;
}

6
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataSource/ReflectionExtension.cs

@ -22,13 +22,7 @@ using System.Reflection; @@ -22,13 +22,7 @@ using System.Reflection;
namespace ICSharpCode.Reporting.DataSource
{
/// <summary>
/// Description of ReflectionExtension.
/// </summary>
///
public static class ReflectionExtensions
{
public static PropertyPath ParsePropertyPath(this object target,string propertyPath)

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

@ -81,6 +81,9 @@ namespace ICSharpCode.Reporting.Exporter.Visitors @@ -81,6 +81,9 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
return exportColumn.BackColor != Color.White;
}
protected static bool HasFrame (ExportColumn exportColummn) {
return exportColummn.DrawBorder;
}
protected Collection<ExportPage> Pages {get; private set;}

6
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/FormatVisitor.cs

@ -33,6 +33,11 @@ namespace ICSharpCode.Reporting.Exporter.Visitors @@ -33,6 +33,11 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
public override void Visit(ExportContainer exportContainer)
{
foreach (var element in exportContainer.ExportedItems) {
var container = element as ExportContainer;
if (container != null) {
Visit(container);
}
var te = element as ExportText;
if (te != null) {
Visit(te);
@ -43,6 +48,7 @@ namespace ICSharpCode.Reporting.Exporter.Visitors @@ -43,6 +48,7 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
public override void Visit(ExportText exportColumn)
{
Console.WriteLine(exportColumn.Text);
if (!String.IsNullOrEmpty(exportColumn.FormatString)) {
StandardFormatter.FormatOutput(exportColumn);
}

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

@ -25,39 +25,22 @@ namespace ICSharpCode.Reporting.Globals @@ -25,39 +25,22 @@ namespace ICSharpCode.Reporting.Globals
/// <summary>
/// Description of StandardFormatter.
/// </summary>
class StandardFormatter
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);
}
}
/*
public static string FormatOutput(string valueToFormat,string format,
string dataType, string nullValue )
{
if (String.IsNullOrEmpty(format)) {
return valueToFormat;
}
if (String.IsNullOrEmpty(valueToFormat)) {
return nullValue;
}
TypeCode typeCode = TypeHelper.TypeCodeFromString(dataType);
return FormatItem(valueToFormat,format,typeCode,nullValue);
}
*/
static string FormatItem (string valueToFormat,string format,TypeCode typeCode) {
// private static string FormatItem (string valueToFormat,string format,
// TypeCode typeCode,string nullValue)
static string FormatItem (string valueToFormat,string format,
TypeCode typeCode)
{
string retValue = String.Empty;
switch (typeCode) {
case TypeCode.Int16:
case TypeCode.Int32:
@ -74,6 +57,8 @@ namespace ICSharpCode.Reporting.Globals @@ -74,6 +57,8 @@ namespace ICSharpCode.Reporting.Globals
break;
case TypeCode.Double:
retValue = FormatDecimal (valueToFormat,format);
break;
case TypeCode.Single:
break;
@ -85,13 +70,12 @@ namespace ICSharpCode.Reporting.Globals @@ -85,13 +70,12 @@ namespace ICSharpCode.Reporting.Globals
retValue = valueToFormat;
break;
}
return retValue;
}
static string FormatBool (string toFormat)
{
static string FormatBool (string toFormat){
if (CheckValue(toFormat)) {
bool b = bool.Parse (toFormat);
return b.ToString (CultureInfo.CurrentCulture);
@ -100,11 +84,11 @@ namespace ICSharpCode.Reporting.Globals @@ -100,11 +84,11 @@ namespace ICSharpCode.Reporting.Globals
}
static string FormatIntegers(string toFormat, string format)
{
static string FormatIntegers(string toFormat, string format){
string str = String.Empty;
if (CheckValue (toFormat)) {
int number = Int32.Parse(toFormat, System.Globalization.NumberStyles.Any, CultureInfo.CurrentCulture.NumberFormat);
int number = Int32.Parse(toFormat, NumberStyles.Any, CultureInfo.CurrentCulture.NumberFormat);
str = number.ToString(format, CultureInfo.CurrentCulture);
return str;
} else {
@ -114,18 +98,19 @@ namespace ICSharpCode.Reporting.Globals @@ -114,18 +98,19 @@ namespace ICSharpCode.Reporting.Globals
}
static string FormatDecimal(string toFormat, string format)
{
static string FormatDecimal(string toFormat, string format){
string str = String.Empty;
if (CheckValue (toFormat)) {
try {
decimal dec = Decimal.Parse(toFormat,
System.Globalization.NumberStyles.Any,
decimal number = Decimal.Parse(toFormat,
NumberStyles.Any,
CultureInfo.CurrentCulture.NumberFormat);
str = dec.ToString (format,CultureInfo.CurrentCulture);
str = number.ToString (format,CultureInfo.CurrentCulture);
} catch (FormatException) {
throw ;
// throw ;
Console.WriteLine("StandardFormatter: {0} - {1} IncorrectFormat ",toFormat,format);
}
return str;
} else {
@ -136,8 +121,8 @@ namespace ICSharpCode.Reporting.Globals @@ -136,8 +121,8 @@ namespace ICSharpCode.Reporting.Globals
// http://stackoverflow.com/questions/4710455/i-need-code-to-validate-any-time-in-c-sharp-in-hhmmss-format
static string FormatDate(string toFormat, string format)
{
static string FormatDate(string toFormat, string format){
DateTime date;
if (DateTime.TryParse(toFormat, out date))
{
@ -158,12 +143,9 @@ namespace ICSharpCode.Reporting.Globals @@ -158,12 +143,9 @@ namespace ICSharpCode.Reporting.Globals
}
static bool CheckValue (string toFormat)
{
if (String.IsNullOrEmpty(toFormat)) {
return false;
}
return true;
static bool CheckValue (string toFormat){
return String.IsNullOrEmpty(toFormat) ? false : true;
}
}
}

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

@ -55,6 +55,11 @@ namespace ICSharpCode.Reporting.Items @@ -55,6 +55,11 @@ namespace ICSharpCode.Reporting.Items
{
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();
}

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

@ -56,7 +56,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -56,7 +56,7 @@ namespace ICSharpCode.Reporting.PageBuilder
void BuildReportHeader(){
if (Pages.Count == 0) {
var header = CreateSection(ReportModel.ReportHeader,CurrentLocation);
var r = new Rectangle(header.Location.X, header.Location.Y, header.Size.Width, header.Size.Height);
var r = new Rectangle(header.Location.X, header.Location.Y, header.Size.Width, header.DesiredSize.Height);
CurrentLocation = new Point (ReportModel.ReportSettings.LeftMargin,r.Bottom + 1);
AddSectionToPage(header);
}
@ -132,8 +132,11 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -132,8 +132,11 @@ namespace ICSharpCode.Reporting.PageBuilder
containerConverter.SetParent(convertedContainer,list);
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;
}

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

@ -36,18 +36,14 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -36,18 +36,14 @@ namespace ICSharpCode.Reporting.PageBuilder
/// Description of DataPageBuilder.
/// </summary>
public class DataPageBuilder:BasePageBuilder
{
public DataPageBuilder(IReportModel reportModel,IEnumerable list):base(reportModel)
{
public class DataPageBuilder:BasePageBuilder{
public DataPageBuilder(IReportModel reportModel,IEnumerable list):base(reportModel){
List = list;
}
public override void BuildExportList()
{
public override void BuildExportList(){
CreateDataSource();
SetupExpressionRunner(ReportModel.ReportSettings,DataSource);
base.BuildExportList();
@ -63,8 +59,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -63,8 +59,7 @@ namespace ICSharpCode.Reporting.PageBuilder
}
void BuildDetail()
{
void BuildDetail(){
CurrentSection = ReportModel.DetailSection;
if(DataSourceContainsData()) {
CurrentLocation = DetailStart;
@ -135,8 +130,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -135,8 +130,7 @@ namespace ICSharpCode.Reporting.PageBuilder
}
void EvaluateExpressionsInGroups(ExportContainer sectionContainer, IGrouping<object, object> grouping)
{
void EvaluateExpressionsInGroups(ExportContainer sectionContainer, IGrouping<object, object> grouping){
ExpressionRunner.Visitor.SetCurrentDataSource(grouping);
ExpressionRunner.Visitor.Visit(sectionContainer);
}
@ -208,8 +202,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -208,8 +202,7 @@ namespace ICSharpCode.Reporting.PageBuilder
}
static void AdjustLocationInSection(Point sectionPosition,List<IExportColumn> convertedItems)
{
static void AdjustLocationInSection(Point sectionPosition,List<IExportColumn> convertedItems){
foreach (var element in convertedItems) {
element.Location = new Point(element.Location.X, sectionPosition.Y);
}
@ -230,8 +223,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -230,8 +223,7 @@ namespace ICSharpCode.Reporting.PageBuilder
}
void InsertContainer(ExportContainer sectionContainer)
{
void InsertContainer(ExportContainer sectionContainer){
if (Pages.Count == 0) {
CurrentPage.ExportedItems.Insert(2, sectionContainer);
} else {

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfExporter.cs

@ -49,6 +49,7 @@ namespace ICSharpCode.Reporting.Pdf @@ -49,6 +49,7 @@ namespace ICSharpCode.Reporting.Pdf
if (show) {
Process.Start(fileName);
}
}

18
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfHelper.cs

@ -36,6 +36,7 @@ namespace ICSharpCode.Reporting.Pdf @@ -36,6 +36,7 @@ namespace ICSharpCode.Reporting.Pdf
var font = PdfHelper.CreatePdfFont(exportColumn);
var rect = new Rectangle(columnLocation,exportColumn.DesiredSize).ToXRect();
textFormatter.Alignment = XParagraphAlignment(exportColumn);
textFormatter.DrawString(exportColumn.Text,
font,
CreateBrush(exportColumn.ForeColor),
@ -55,19 +56,20 @@ namespace ICSharpCode.Reporting.Pdf @@ -55,19 +56,20 @@ namespace ICSharpCode.Reporting.Pdf
}
public static XRect CreateDisplayRectangle(IExportColumn column) {
return column.DisplayRectangle.ToXRect();
}
public static void DrawRectangle (IExportColumn column, XGraphics graphics) {
FillRectangle(column.DisplayRectangle,column.FrameColor,graphics);
}
public static void FillRectangle(Rectangle rect,Color color,XGraphics graphics) {
var r = rect.ToXRect();
graphics.DrawRectangle(new XSolidBrush(ToXColor(color)),r);
public static void FillRectangle(XRect rect,Color color,XGraphics graphics) {
graphics.DrawRectangle(new XSolidBrush(ToXColor(color)),rect);
}
public static void DrawBorder (XRect rect,IExportColumn column,XGraphics graphics) {
var pen = new XPen(ToXColor(column.ForeColor),1);
rect.Inflate(new XSize(2,2));
graphics.DrawRectangle(pen,rect);
}
@ -101,7 +103,7 @@ namespace ICSharpCode.Reporting.Pdf @@ -101,7 +103,7 @@ namespace ICSharpCode.Reporting.Pdf
case System.Windows.TextAlignment.Center:
return PdfSharp.Drawing.Layout.XParagraphAlignment.Center;
case System.Windows.TextAlignment.Right:
return PdfSharp.Drawing.Layout.XParagraphAlignment.Center;
return PdfSharp.Drawing.Layout.XParagraphAlignment.Right;
case System.Windows.TextAlignment.Justify:
return PdfSharp.Drawing.Layout.XParagraphAlignment.Justify;
}

7
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfVisitor.cs

@ -105,11 +105,14 @@ namespace ICSharpCode.Reporting.Pdf @@ -105,11 +105,14 @@ namespace ICSharpCode.Reporting.Pdf
public override void Visit(ExportText exportText){
var columnLocation = new Point(containerLocation.X + exportText.Location.X,containerLocation.Y + exportText.Location.Y);
var columnRect = new Rectangle(columnLocation,exportText.DisplayRectangle.Size).ToXRect();
if (ShouldSetBackcolor(exportText)) {
var r = new Rectangle(columnLocation,exportText.DisplayRectangle.Size);
PdfHelper.FillRectangle(r,exportText.BackColor,xGraphics);
PdfHelper.FillRectangle(columnRect,exportText.BackColor,xGraphics);
}
if (HasFrame(exportText)) {
PdfHelper.DrawBorder(columnRect,exportText,xGraphics);
}
PdfHelper.WriteText(textFormatter,columnLocation, exportText);
}

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

@ -46,7 +46,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer @@ -46,7 +46,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer
var wpfExporter = new WpfExporter(pages);
wpfExporter.Run();
this.document = wpfExporter.Document;
this.Document = wpfExporter.Document;
}
static FixedDocument CreateFixedDocument(ReportSettings reportSettings)

3
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/FixedDocumentCreator.cs

@ -75,7 +75,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -75,7 +75,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
formattedText.MaxTextWidth = exportText.DesiredSize.Width ;
formattedText.TextAlignment = exportText.TextAlignment;
if (!exportText.CanGrow) {
formattedText.MaxTextHeight = exportText.Size.Height;
} else {
@ -150,6 +150,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -150,6 +150,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
FixedPage.SetTop(element,exportColumn.Location.Y);
}
/*
public static Point CalculateAlignmentOffset (FormattedText formattedText, ExportText exportText) {
var offset = new Point(0,0);

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

@ -93,12 +93,13 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -93,12 +93,13 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
}
Canvas RenderGraphicsContainer(IExportColumn column)
{
Canvas RenderGraphicsContainer(IExportColumn column){
var graphicsContainer = column as GraphicsContainer;
var graphCanvas = FixedDocumentCreator.CreateContainer(graphicsContainer);
CanvasHelper.SetPosition(graphCanvas, column.Location.ToWpf());
graphCanvas.Background = FixedDocumentCreator.ConvertBrush(column.BackColor);
if (graphicsContainer != null) {
var rect = column as ExportRectangle;
if (rect != null) {
@ -115,30 +116,42 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -115,30 +116,42 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
return graphCanvas;
}
// http://stackoverflow.com/questions/25308612/vertical-alignment-with-drawingcontext-drawtext
public override void Visit(ExportText exportColumn){
var formattedText = FixedDocumentCreator.CreateFormattedText((ExportText)exportColumn);
var location = new Point(exportColumn.Location.X,exportColumn.Location.Y);
var visual = new DrawingVisual();
using (var drawingContext = visual.RenderOpen()){
var desiredRect = new Rect(location,new Size(exportColumn.DesiredSize.Width,exportColumn.DesiredSize.Height));
if (ShouldSetBackcolor(exportColumn)) {
var r = new Rect(location,new Size(exportColumn.Size.Width,exportColumn.Size.Height));
drawingContext.DrawRectangle(FixedDocumentCreator.ConvertBrush(exportColumn.BackColor),
null,
new Rect(location,new Size(exportColumn.Size.Width,exportColumn.Size.Height)));
null,
desiredRect);
}
drawingContext.DrawText(formattedText,location);
if (HasFrame(exportColumn)) {
desiredRect.Inflate(2,2);
var pen = FixedDocumentCreator.CreateWpfPen(exportColumn);
pen.Thickness = 2;
drawingContext.DrawRectangle(null, pen,desiredRect);
}
}
var dragingElement = new DrawingElement(visual);
UIElement = dragingElement;
var drawingElement = new DrawingElement(visual);
UIElement = drawingElement;
}
public override void Visit(ExportLine exportLine)
{
public override void Visit(ExportLine exportLine){
var pen = FixedDocumentCreator.CreateWpfPen(exportLine);
var visual = new DrawingVisual();
using (var dc = visual.RenderOpen()){
@ -152,8 +165,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -152,8 +165,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
}
public override void Visit(ExportRectangle exportRectangle)
{
public override void Visit(ExportRectangle exportRectangle){
var border = CreateBorder(exportRectangle);
border.CornerRadius = new CornerRadius(Convert.ToDouble(exportRectangle.CornerRadius));
CanvasHelper.SetPosition(border, new Point(0,0));
@ -163,8 +175,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -163,8 +175,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
}
public override void Visit(ExportCircle exportCircle)
{
public override void Visit(ExportCircle exportCircle){
var drawingElement = CircleVisual(exportCircle);
var containerCanvas = CreateItemsInContainer(exportCircle.ExportedItems);
containerCanvas.Children.Insert(0,drawingElement);
@ -199,8 +210,8 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -199,8 +210,8 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
}
static Border CreateBorder(IExportColumn exportColumn)
{
static Border CreateBorder(IExportColumn exportColumn){
var border = new Border();
border.BorderThickness = Thickness(exportColumn);
border.BorderBrush = FixedDocumentCreator.ConvertBrush(exportColumn.ForeColor);
@ -211,8 +222,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -211,8 +222,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
}
static Thickness Thickness(IExportColumn exportColumn)
{
static Thickness Thickness(IExportColumn exportColumn){
double bT;
bT = !IsGraphicsContainer(exportColumn) ? 1 : Convert.ToDouble(((GraphicsContainer)exportColumn).Thickness);
return new Thickness(bT);

2
src/Automated.proj

@ -22,7 +22,7 @@ @@ -22,7 +22,7 @@
(but this works using the command line) -->
<!-- B) The Wix task assembly is locked if we do not use a separate MSBuild process -->
<!-- C) We need to use MSBuild 12.0, but the build server uses MSBuild 4.0 -->
<MSBuildExecutable>&quot;$(MSBuildExtensionsPath)\12.0\Bin\msbuild.exe&quot;</MSBuildExecutable>
<MSBuildExecutable>&quot;$(MSBuildExtensionsPath)\14.0\Bin\msbuild.exe&quot;</MSBuildExecutable>
<BuildProperties>/m /p:Configuration=Release</BuildProperties>
<BuildProperties>$(BuildProperties) &quot;/p:SharpDevelopBinPath=$(SharpDevelopBin)&quot;</BuildProperties>
<BuildProperties>$(BuildProperties) &quot;/p:FSharpBuildTasksPath=$(SharpDevelopSrc)\AddIns\BackendBindings\FSharp\RequiredLibraries&quot;</BuildProperties>

4
src/Libraries/NRefactory/ICSharpCode.NRefactory.Tests/CSharp/Resolver/UnaryOperatorTests.cs

@ -222,9 +222,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver @@ -222,9 +222,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
AssertType(typeof(StringComparison?), resolver.ResolveUnaryOperator(UnaryOperatorType.BitNot, MakeResult(typeof(StringComparison?))));
}
#if __MonoCS__
[Ignore("Broken on mcs")]
#endif
[Ignore("Broken on mcs and roslyn (https://github.com/dotnet/roslyn/issues/2429)")]
[Test]
public void IntMinValue()
{

Loading…
Cancel
Save