Switched to Apache License 2.0; added Markdown documentation

This commit is contained in:
Markus Ewald 2024-06-18 19:07:44 +02:00 committed by cygon
parent f3e1fe9539
commit 3153255288
10 changed files with 521 additions and 186 deletions

View file

@ -1,74 +1,73 @@
#region CPL License
/*
Nuclex Framework
Copyright (C) 2002-2019 Nuclex Development Labs
This library is free software; you can redistribute it and/or
modify it under the terms of the IBM Common Public License as
published by the IBM Corporation; either version 1.0 of the
License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
IBM Common Public License for more details.
You should have received a copy of the IBM Common Public
License along with this library
*/
#endregion
using System;
using Ninject;
using Ninject.Activation;
using Ninject.Modules;
using Nuclex.Windows.Forms.AutoBinding;
using Nuclex.Windows.Forms.CommonDialogs;
using Nuclex.Windows.Forms.Messages;
namespace Nuclex.Windows.Forms.Ninject {
/// <summary>Sets up the service bindings for an MVVM-based WPF application</summary>
public class MvvmModule : NinjectModule {
/// <summary>Called when the module is loaded into the kernel</summary>
public override void Load() {
// The task dialog message service actually supports two interfaces
Kernel.Bind<IMessageService>().To<StandardMessageBoxManager>().InSingletonScope();
// Use the common dialog manager to display file open, save or print dialogs
Kernel.Bind<ICommonDialogService>().To<CommonDialogManager>().InSingletonScope();
// The window manager keeps track of active windows and can figure out
// which window to display for a view model by its naming convention.
Kernel.Bind<WindowManager>().To<NinjectWindowManager>().InSingletonScope();
Kernel.Bind<IWindowManager>().ToMethod(getWindowManager).InSingletonScope();
Kernel.Bind<IActiveWindowTracker>().ToMethod(getWindowManager).InSingletonScope();
Kernel.Bind<IAutoBinder>().ToMethod(CreateAutoBinder).InSingletonScope();
}
/// <summary>Creates and initializd the auto view model binder</summary>
/// <param name="context">
/// Context containing environmental informations about the request and the kernel
/// </param>
/// <returns>The view model auto binder that will be used by the application</returns>
protected virtual IAutoBinder CreateAutoBinder(IContext context) {
return new ConventionBinder();
}
/// <summary>Retrieves the window manager from the kernel</summary>
/// <param name="context">
/// Context containing environmental informations about the request and the kernel
/// </param>
/// <returns>The window manager registered to the kernel</returns>
private static WindowManager getWindowManager(IContext context) {
return context.Kernel.Get<WindowManager>();
}
}
} // namespace Nuclex.Windows.Forms.Ninject
#region Apache License 2.0
/*
Nuclex .NET Framework
Copyright (C) 2002-2024 Markus Ewald / Nuclex Development Labs
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#endregion // Apache License 2.0
using System;
using Ninject;
using Ninject.Activation;
using Ninject.Modules;
using Nuclex.Windows.Forms.AutoBinding;
using Nuclex.Windows.Forms.CommonDialogs;
using Nuclex.Windows.Forms.Messages;
namespace Nuclex.Windows.Forms.Ninject {
/// <summary>Sets up the service bindings for an MVVM-based WPF application</summary>
public class MvvmModule : NinjectModule {
/// <summary>Called when the module is loaded into the kernel</summary>
public override void Load() {
// The task dialog message service actually supports two interfaces
Kernel.Bind<IMessageService>().To<StandardMessageBoxManager>().InSingletonScope();
// Use the common dialog manager to display file open, save or print dialogs
Kernel.Bind<ICommonDialogService>().To<CommonDialogManager>().InSingletonScope();
// The window manager keeps track of active windows and can figure out
// which window to display for a view model by its naming convention.
Kernel.Bind<WindowManager>().To<NinjectWindowManager>().InSingletonScope();
Kernel.Bind<IWindowManager>().ToMethod(getWindowManager).InSingletonScope();
Kernel.Bind<IActiveWindowTracker>().ToMethod(getWindowManager).InSingletonScope();
Kernel.Bind<IAutoBinder>().ToMethod(CreateAutoBinder).InSingletonScope();
}
/// <summary>Creates and initializd the auto view model binder</summary>
/// <param name="context">
/// Context containing environmental informations about the request and the kernel
/// </param>
/// <returns>The view model auto binder that will be used by the application</returns>
protected virtual IAutoBinder CreateAutoBinder(IContext context) {
return new ConventionBinder();
}
/// <summary>Retrieves the window manager from the kernel</summary>
/// <param name="context">
/// Context containing environmental informations about the request and the kernel
/// </param>
/// <returns>The window manager registered to the kernel</returns>
private static WindowManager getWindowManager(IContext context) {
return context.Kernel.Get<WindowManager>();
}
}
} // namespace Nuclex.Windows.Forms.Ninject

View file

@ -1,61 +1,60 @@
#region CPL License
/*
Nuclex Framework
Copyright (C) 2002-2019 Nuclex Development Labs
This library is free software; you can redistribute it and/or
modify it under the terms of the IBM Common Public License as
published by the IBM Corporation; either version 1.0 of the
License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
IBM Common Public License for more details.
You should have received a copy of the IBM Common Public
License along with this library
*/
#endregion
using System;
using Ninject;
using Nuclex.Windows.Forms.AutoBinding;
namespace Nuclex.Windows.Forms.Ninject {
/// <summary>Window manager that is using Ninject</summary>
public class NinjectWindowManager : WindowManager {
/// <summary>Initializes a new window manager</summary>
/// <param name="kernel">
/// Ninject kernel the window manager uses to construct view models
/// </param>
/// <param name="autoBinder">
/// View model binder that will be used to bind all created views to their models
/// </param>
public NinjectWindowManager(IKernel kernel, IAutoBinder autoBinder = null) :
base(autoBinder) {
this.kernel = kernel;
}
/// <summary>Creates an instance of the specified type</summary>
/// <param name="type">Type an instance will be created of</param>
/// <returns>The created instance</returns>
/// <remarks>
/// Use this to wire up your dependency injection container. By default,
/// the Activator class will be used to create instances which only works
/// if all of your view models are concrete classes.
/// </remarks>
protected override object CreateInstance(Type type) {
return this.kernel.Get(type);
}
/// <summary>The Ninject kernel used to create new instances</summary>
private readonly IKernel kernel;
}
} // namespace Nuclex.Windows.Forms.Ninject
#region Apache License 2.0
/*
Nuclex .NET Framework
Copyright (C) 2002-2024 Markus Ewald / Nuclex Development Labs
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#endregion // Apache License 2.0
using System;
using Ninject;
using Nuclex.Windows.Forms.AutoBinding;
namespace Nuclex.Windows.Forms.Ninject {
/// <summary>Window manager that is using Ninject</summary>
public class NinjectWindowManager : WindowManager {
/// <summary>Initializes a new window manager</summary>
/// <param name="kernel">
/// Ninject kernel the window manager uses to construct view models
/// </param>
/// <param name="autoBinder">
/// View model binder that will be used to bind all created views to their models
/// </param>
public NinjectWindowManager(IKernel kernel, IAutoBinder autoBinder = null) :
base(autoBinder) {
this.kernel = kernel;
}
/// <summary>Creates an instance of the specified type</summary>
/// <param name="type">Type an instance will be created of</param>
/// <returns>The created instance</returns>
/// <remarks>
/// Use this to wire up your dependency injection container. By default,
/// the Activator class will be used to create instances which only works
/// if all of your view models are concrete classes.
/// </remarks>
protected override object CreateInstance(Type type) {
return this.kernel.Get(type);
}
/// <summary>The Ninject kernel used to create new instances</summary>
private readonly IKernel kernel;
}
} // namespace Nuclex.Windows.Forms.Ninject