Browse Source

implement IServiceProvider in ILanguageBinding

pull/45/merge
Siegfried Pammer 12 years ago
parent
commit
65955bdb28
  1. 20
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs
  2. 5
      src/AddIns/BackendBindings/CppBinding/CppBinding/CppLanguageBinding.cs
  3. 5
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlLanguageBinding.cs
  4. 43
      src/Main/Base/Project/Src/Services/LanguageBinding/DefaultLanguageBinding.cs
  5. 2
      src/Main/Base/Project/Src/Services/LanguageBinding/ILanguageBinding.cs

20
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs

@ -21,20 +21,12 @@ namespace CSharpBinding
/// </summary> /// </summary>
public class CSharpLanguageBinding : DefaultLanguageBinding public class CSharpLanguageBinding : DefaultLanguageBinding
{ {
public override IFormattingStrategy FormattingStrategy { public CSharpLanguageBinding()
get { return new CSharpFormattingStrategy(); } {
} this.container.AddService(typeof(IFormattingStrategy), new CSharpFormattingStrategy());
this.container.AddService(typeof(IBracketSearcher), new CSharpBracketSearcher());
public override IBracketSearcher BracketSearcher { this.container.AddService(typeof(ICodeGenerator), new CSharpCodeGenerator());
get { return new CSharpBracketSearcher(); } this.container.AddService(typeof(System.CodeDom.Compiler.CodeDomProvider), new Microsoft.CSharp.CSharpCodeProvider());
}
public override ICodeGenerator CodeGenerator {
get { return new CSharpCodeGenerator(); }
}
public override System.CodeDom.Compiler.CodeDomProvider CodeDomProvider {
get { return new Microsoft.CSharp.CSharpCodeProvider(); }
} }
} }

5
src/AddIns/BackendBindings/CppBinding/CppBinding/CppLanguageBinding.cs

@ -9,8 +9,9 @@ namespace ICSharpCode.CppBinding
{ {
public class CppLanguageBinding : DefaultLanguageBinding public class CppLanguageBinding : DefaultLanguageBinding
{ {
public override IFormattingStrategy FormattingStrategy { public CppLanguageBinding()
get { return new CppFormattingStrategy(); } {
this.container.AddService(typeof(IFormattingStrategy), new CppFormattingStrategy());
} }
} }
} }

5
src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlLanguageBinding.cs

@ -10,8 +10,9 @@ namespace ICSharpCode.XmlEditor
{ {
public class XmlLanguageBinding : DefaultLanguageBinding public class XmlLanguageBinding : DefaultLanguageBinding
{ {
public override IFormattingStrategy FormattingStrategy { public XmlLanguageBinding()
get { return new XmlFormattingStrategy(); } {
container.AddService(typeof(IFormattingStrategy), new XmlFormattingStrategy());
} }
} }

43
src/Main/Base/Project/Src/Services/LanguageBinding/DefaultLanguageBinding.cs

@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using System.ComponentModel.Design;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Refactoring; using ICSharpCode.SharpDevelop.Refactoring;
@ -9,30 +10,54 @@ namespace ICSharpCode.SharpDevelop
{ {
public class DefaultLanguageBinding : ILanguageBinding public class DefaultLanguageBinding : ILanguageBinding
{ {
public static readonly DefaultLanguageBinding DefaultInstance = new DefaultLanguageBinding(); public static readonly DefaultLanguageBinding DefaultInstance = new DefaultLanguageBinding(true);
public virtual IFormattingStrategy FormattingStrategy { protected readonly ServiceContainer container;
DefaultLanguageBinding(bool isDefault)
{
if (isDefault) {
this.container = new ServiceContainer();
this.container.AddService(typeof(IFormattingStrategy), DefaultFormattingStrategy.DefaultInstance);
this.container.AddService(typeof(IBracketSearcher), DefaultBracketSearcher.DefaultInstance);
this.container.AddService(typeof(ICodeGenerator), DefaultCodeGenerator.DefaultInstance);
} else {
this.container = new ServiceContainer(DefaultInstance);
}
}
public DefaultLanguageBinding()
: this(false)
{
}
public IFormattingStrategy FormattingStrategy {
get { get {
return DefaultFormattingStrategy.DefaultInstance; return this.GetService<IFormattingStrategy>();
} }
} }
public virtual IBracketSearcher BracketSearcher { public IBracketSearcher BracketSearcher {
get { get {
return DefaultBracketSearcher.DefaultInstance; return this.GetService<IBracketSearcher>();
} }
} }
public virtual ICodeGenerator CodeGenerator { public ICodeGenerator CodeGenerator {
get { get {
return DefaultCodeGenerator.DefaultInstance; return this.GetService<ICodeGenerator>();
} }
} }
public virtual System.CodeDom.Compiler.CodeDomProvider CodeDomProvider { public System.CodeDom.Compiler.CodeDomProvider CodeDomProvider {
get { get {
return null; return this.GetService<System.CodeDom.Compiler.CodeDomProvider>();
}
} }
public object GetService(Type serviceType)
{
return container.GetService(serviceType);
} }
} }
} }

2
src/Main/Base/Project/Src/Services/LanguageBinding/ILanguageBinding.cs

@ -10,7 +10,7 @@ namespace ICSharpCode.SharpDevelop
/// <summary> /// <summary>
/// Provides access to language specific features (independent of files). /// Provides access to language specific features (independent of files).
/// </summary> /// </summary>
public interface ILanguageBinding public interface ILanguageBinding : IServiceProvider
{ {
/// <summary> /// <summary>
/// Provides access to the formatting strategy for this language. /// Provides access to the formatting strategy for this language.

Loading…
Cancel
Save