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

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

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

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

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

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

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.ComponentModel.Design;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Refactoring;
@ -9,30 +10,54 @@ namespace ICSharpCode.SharpDevelop @@ -9,30 +10,54 @@ namespace ICSharpCode.SharpDevelop
{
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 {
return DefaultFormattingStrategy.DefaultInstance;
return this.GetService<IFormattingStrategy>();
}
}
public virtual IBracketSearcher BracketSearcher {
public IBracketSearcher BracketSearcher {
get {
return DefaultBracketSearcher.DefaultInstance;
return this.GetService<IBracketSearcher>();
}
}
public virtual ICodeGenerator CodeGenerator {
public ICodeGenerator CodeGenerator {
get {
return DefaultCodeGenerator.DefaultInstance;
return this.GetService<ICodeGenerator>();
}
}
public virtual System.CodeDom.Compiler.CodeDomProvider CodeDomProvider {
public System.CodeDom.Compiler.CodeDomProvider CodeDomProvider {
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 @@ -10,7 +10,7 @@ namespace ICSharpCode.SharpDevelop
/// <summary>
/// Provides access to language specific features (independent of files).
/// </summary>
public interface ILanguageBinding
public interface ILanguageBinding : IServiceProvider
{
/// <summary>
/// Provides access to the formatting strategy for this language.

Loading…
Cancel
Save