Browse Source

Make IHasPropertyContainer a [ViewContentService].

newNRvisualizers
Daniel Grunwald 13 years ago
parent
commit
9193b83219
  1. 2
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlTreeView.cs
  2. 4
      src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchManager.cs
  3. 8
      src/Main/Base/Project/Src/Gui/AbstractPadContent.cs
  4. 2
      src/Main/Base/Project/Src/Gui/IPadContent.cs
  5. 2
      src/Main/Base/Project/Src/Gui/IWorkbench.cs
  6. 2
      src/Main/Base/Project/Src/Gui/IWorkbenchLayout.cs
  7. 9
      src/Main/Base/Project/Src/Gui/Pads/FileScout.cs
  8. 1
      src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyContainer.cs
  9. 5
      src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPad.cs
  10. 2
      src/Main/SharpDevelop/Workbench/AvalonDockLayout.cs
  11. 4
      src/Main/SharpDevelop/Workbench/WpfWorkbench.cs

2
src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlTreeView.cs

@ -133,7 +133,7 @@ namespace ICSharpCode.XmlEditor @@ -133,7 +133,7 @@ namespace ICSharpCode.XmlEditor
protected override void LoadFromPrimary()
{
IFileDocumentProvider provider = this.PrimaryViewContent as IFileDocumentProvider;
IFileDocumentProvider provider = this.PrimaryViewContent.GetRequiredService<IFileDocumentProvider>();
IDocument document = provider.GetDocumentForFile(this.PrimaryFile);
treeViewContainer.LoadXml(document.Text);
XmlView view = XmlView.ForFile(this.PrimaryFile);

4
src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchManager.cs

@ -46,7 +46,7 @@ namespace SearchAndReplace @@ -46,7 +46,7 @@ namespace SearchAndReplace
class SearchableFileContentFinder
{
FileName[] viewContentFileNamesCollection = WorkbenchSingleton.SafeThreadFunction(() => SD.FileService.OpenedFiles.Select(f => f.FileName).ToArray());
FileName[] viewContentFileNamesCollection = SD.MainThread.InvokeIfRequired(() => SD.FileService.OpenedFiles.Select(f => f.FileName).ToArray());
static ITextSource ReadFile(FileName fileName)
{
@ -75,7 +75,7 @@ namespace SearchAndReplace @@ -75,7 +75,7 @@ namespace SearchAndReplace
using (Stream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) {
if (MimeTypeDetection.FindMimeType(stream).StartsWith("text/")) {
stream.Position = 0;
return new StringTextSource(ICSharpCode.AvalonEdit.Utils.FileReader.ReadFileContent(stream, Encoding.Default));
return new StringTextSource(ICSharpCode.AvalonEdit.Utils.FileReader.ReadFileContent(stream, SD.FileService.DefaultFileEncoding));
}
}
return null;

8
src/Main/Base/Project/Src/Gui/AbstractPadContent.cs

@ -38,5 +38,13 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -38,5 +38,13 @@ namespace ICSharpCode.SharpDevelop.Gui
return WorkbenchSingleton.Workbench.GetPad(GetType());
}
}
public virtual object GetService(Type serviceType)
{
if (serviceType.IsInstanceOfType(this))
return this;
else
return null;
}
}
}

2
src/Main/Base/Project/Src/Gui/IPadContent.cs

@ -10,7 +10,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -10,7 +10,7 @@ namespace ICSharpCode.SharpDevelop.Gui
/// The IPadContent interface is the basic interface to all "tool" windows
/// in SharpDevelop.
/// </summary>
public interface IPadContent : IDisposable
public interface IPadContent : IDisposable, IServiceProvider
{
/// <summary>
/// This is the UI element for the view.

2
src/Main/Base/Project/Src/Gui/IWorkbench.cs

@ -98,7 +98,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -98,7 +98,7 @@ namespace ICSharpCode.SharpDevelop.Gui
/// If a document is currently active, this will be equal to ActiveViewContent,
/// if a pad has the focus, this property will return the IPadContent instance.
/// </summary>
object ActiveContent {
IServiceProvider ActiveContent {
get;
}

2
src/Main/Base/Project/Src/Gui/IWorkbenchLayout.cs

@ -32,7 +32,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -32,7 +32,7 @@ namespace ICSharpCode.SharpDevelop.Gui
/// The active content. This can be either a IViewContent or a IPadContent, depending on
/// where the focus currently is.
/// </summary>
object ActiveContent {
IServiceProvider ActiveContent {
get;
}

9
src/Main/Base/Project/Src/Gui/Pads/FileScout.cs

@ -323,18 +323,23 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -323,18 +323,23 @@ namespace ICSharpCode.SharpDevelop.Gui
public class FileScout : UserControl, IPadContent
{
public object Control {
object IPadContent.Control {
get {
return this;
}
}
public object InitiallyFocusedControl {
object IPadContent.InitiallyFocusedControl {
get {
return null;
}
}
object IServiceProvider.GetService(Type type)
{
return null;
}
Splitter splitter1 = new Splitter();
FileList filelister = new FileList();

1
src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyContainer.cs

@ -14,6 +14,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -14,6 +14,7 @@ namespace ICSharpCode.SharpDevelop.Gui
/// One view/pad content instance has to always return the same property container instance
/// and has to change only the properties on that PropertyContainer.
/// </summary>
[ViewContentService]
public interface IHasPropertyContainer
{
PropertyContainer PropertyContainer { get; }

5
src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPad.cs

@ -127,10 +127,11 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -127,10 +127,11 @@ namespace ICSharpCode.SharpDevelop.Gui
void WorkbenchActiveContentChanged(object sender, EventArgs e)
{
IHasPropertyContainer c = WorkbenchSingleton.Workbench.ActiveContent as IHasPropertyContainer;
var activeViewOrPad = WorkbenchSingleton.Workbench.ActiveContent;
IHasPropertyContainer c = activeViewOrPad != null ? activeViewOrPad.GetService<IHasPropertyContainer>() : null;
if (c == null) {
if (previousContent == null) {
c = WorkbenchSingleton.Workbench.ActiveViewContent as IHasPropertyContainer;
c = SD.GetActiveViewContentService<IHasPropertyContainer>();
} else {
// if the previous content is no longer visible, we have to remove the active container
if (previousContent is IViewContent && previousContent != WorkbenchSingleton.Workbench.ActiveViewContent) {

2
src/Main/SharpDevelop/Workbench/AvalonDockLayout.cs

@ -92,7 +92,7 @@ namespace ICSharpCode.SharpDevelop.Workbench @@ -92,7 +92,7 @@ namespace ICSharpCode.SharpDevelop.Workbench
public event EventHandler ActiveContentChanged;
public object ActiveContent {
public IServiceProvider ActiveContent {
get {
object activeContent = dockingManager.ActiveContent;
AvalonPadContent padContent = activeContent as AvalonPadContent;

4
src/Main/SharpDevelop/Workbench/WpfWorkbench.cs

@ -340,9 +340,9 @@ namespace ICSharpCode.SharpDevelop.Workbench @@ -340,9 +340,9 @@ namespace ICSharpCode.SharpDevelop.Workbench
}
}
object activeContent;
IServiceProvider activeContent;
public object ActiveContent {
public IServiceProvider ActiveContent {
get {
WorkbenchSingleton.AssertMainThread();
return activeContent;

Loading…
Cancel
Save